ai-engineering-init 1.3.3 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (228) hide show
  1. package/.claude/hooks/skill-forced-eval.js +4 -1
  2. package/.claude/settings.json +3 -3
  3. package/.claude/skills/add-skill/SKILL.md +252 -116
  4. package/.claude/skills/api-development/SKILL.md +83 -377
  5. package/.claude/skills/architecture-design/SKILL.md +138 -632
  6. package/.claude/skills/backend-annotations/SKILL.md +134 -506
  7. package/.claude/skills/banana-image/SKILL.md +10 -3
  8. package/.claude/skills/brainstorm/SKILL.md +103 -535
  9. package/.claude/skills/bug-detective/SKILL.md +147 -1097
  10. package/.claude/skills/bug-detective/references/error-patterns.md +242 -0
  11. package/.claude/skills/code-patterns/SKILL.md +116 -426
  12. package/.claude/skills/code-patterns/references/leniu-code-patterns.md +87 -0
  13. package/.claude/skills/crud-development/SKILL.md +64 -304
  14. package/.claude/skills/data-permission/SKILL.md +105 -412
  15. package/.claude/skills/data-permission/references/custom-data-scope.md +90 -0
  16. package/.claude/skills/file-oss-management/SKILL.md +106 -714
  17. package/.claude/skills/file-oss-management/references/entities.md +105 -0
  18. package/.claude/skills/file-oss-management/references/service-impl.md +104 -0
  19. package/.claude/skills/leniu-api-development/SKILL.md +142 -626
  20. package/.claude/skills/leniu-api-development/references/real-examples.md +273 -0
  21. package/.claude/skills/leniu-architecture-design/SKILL.md +176 -391
  22. package/.claude/skills/leniu-backend-annotations/SKILL.md +132 -519
  23. package/.claude/skills/leniu-brainstorm/SKILL.md +132 -541
  24. package/.claude/skills/leniu-brainstorm/references/business-scenarios.md +162 -0
  25. package/.claude/skills/leniu-crud-development/SKILL.md +232 -938
  26. package/.claude/skills/leniu-crud-development/references/templates.md +597 -0
  27. package/.claude/skills/leniu-customization-location/SKILL.md +410 -0
  28. package/.claude/skills/leniu-data-permission/SKILL.md +70 -0
  29. package/.claude/skills/leniu-java-entity/SKILL.md +76 -590
  30. package/.claude/skills/leniu-java-entity/references/templates.md +237 -0
  31. package/.claude/skills/leniu-java-export/SKILL.md +94 -379
  32. package/.claude/skills/leniu-java-logging/SKILL.md +106 -709
  33. package/.claude/skills/leniu-java-logging/references/data-mask.md +46 -0
  34. package/.claude/skills/leniu-java-logging/references/logging-scenarios.md +113 -0
  35. package/.claude/skills/leniu-java-mybatis/SKILL.md +73 -446
  36. package/.claude/skills/leniu-java-mybatis/references/report-mapper.md +88 -0
  37. package/.claude/skills/leniu-report-customization/SKILL.md +111 -325
  38. package/.claude/skills/leniu-report-customization/references/table-fields.md +93 -0
  39. package/.claude/skills/leniu-report-standard-customization/SKILL.md +328 -0
  40. package/.claude/skills/leniu-report-standard-customization/references/analysis-module.md +64 -0
  41. package/.claude/skills/leniu-report-standard-customization/references/table-fields.md +113 -0
  42. package/.claude/skills/leniu-security-guard/SKILL.md +133 -347
  43. package/.claude/skills/mysql-debug/SKILL.md +364 -0
  44. package/.claude/skills/openspec-apply-change/SKILL.md +10 -1
  45. package/.claude/skills/openspec-archive-change/SKILL.md +9 -1
  46. package/.claude/skills/openspec-bulk-archive-change/SKILL.md +9 -1
  47. package/.claude/skills/openspec-continue-change/SKILL.md +9 -1
  48. package/.claude/skills/openspec-explore/SKILL.md +10 -1
  49. package/.claude/skills/openspec-ff-change/SKILL.md +9 -1
  50. package/.claude/skills/openspec-new-change/SKILL.md +9 -1
  51. package/.claude/skills/openspec-onboard/SKILL.md +15 -130
  52. package/.claude/skills/openspec-sync-specs/SKILL.md +9 -1
  53. package/.claude/skills/openspec-verify-change/SKILL.md +9 -1
  54. package/.claude/skills/performance-doctor/SKILL.md +110 -434
  55. package/.claude/skills/redis-cache/SKILL.md +89 -595
  56. package/.claude/skills/redis-cache/references/listeners.md +23 -0
  57. package/.claude/skills/scheduled-jobs/SKILL.md +88 -407
  58. package/.claude/skills/security-guard/SKILL.md +137 -532
  59. package/.claude/skills/security-guard/references/encrypt-config.md +103 -0
  60. package/.claude/skills/security-guard/references/sensitive-strategies.md +42 -0
  61. package/.claude/skills/sms-mail/SKILL.md +116 -574
  62. package/.claude/skills/sms-mail/references/mail-config.md +88 -0
  63. package/.claude/skills/sms-mail/references/sms-config.md +74 -0
  64. package/.claude/skills/social-login/SKILL.md +112 -514
  65. package/.claude/skills/social-login/references/provider-configs.md +118 -0
  66. package/.claude/skills/tenant-management/SKILL.md +129 -444
  67. package/.claude/skills/tenant-management/references/tenant-scenarios.md +91 -0
  68. package/.claude/skills/test-development/SKILL.md +86 -540
  69. package/.claude/skills/test-development/references/parameterized-examples.md +119 -0
  70. package/.claude/skills/utils-toolkit/SKILL.md +52 -305
  71. package/.claude/skills/utils-toolkit/references/redis-utils-api.md +56 -0
  72. package/.claude/skills/websocket-sse/SKILL.md +105 -550
  73. package/.claude/skills/workflow-engine/SKILL.md +147 -502
  74. package/.codex/skills/add-skill/SKILL.md +252 -116
  75. package/.codex/skills/api-development/SKILL.md +172 -599
  76. package/.codex/skills/architecture-design/SKILL.md +138 -504
  77. package/.codex/skills/backend-annotations/SKILL.md +134 -496
  78. package/.codex/skills/banana-image/SKILL.md +10 -3
  79. package/.codex/skills/brainstorm/SKILL.md +103 -535
  80. package/.codex/skills/bug-detective/SKILL.md +147 -1097
  81. package/.codex/skills/bug-detective/references/error-patterns.md +242 -0
  82. package/.codex/skills/code-patterns/SKILL.md +120 -282
  83. package/.codex/skills/code-patterns/references/leniu-code-patterns.md +87 -0
  84. package/.codex/skills/crud-development/SKILL.md +64 -292
  85. package/.codex/skills/data-permission/SKILL.md +108 -407
  86. package/.codex/skills/data-permission/references/custom-data-scope.md +90 -0
  87. package/.codex/skills/database-ops/SKILL.md +8 -154
  88. package/.codex/skills/error-handler/SKILL.md +10 -0
  89. package/.codex/skills/file-oss-management/SKILL.md +106 -714
  90. package/.codex/skills/file-oss-management/references/entities.md +105 -0
  91. package/.codex/skills/file-oss-management/references/service-impl.md +104 -0
  92. package/.codex/skills/git-workflow/SKILL.md +27 -5
  93. package/.codex/skills/leniu-api-development/SKILL.md +142 -626
  94. package/.codex/skills/leniu-api-development/references/real-examples.md +273 -0
  95. package/.codex/skills/leniu-architecture-design/SKILL.md +176 -391
  96. package/.codex/skills/leniu-backend-annotations/SKILL.md +132 -519
  97. package/.codex/skills/leniu-brainstorm/SKILL.md +132 -541
  98. package/.codex/skills/leniu-brainstorm/references/business-scenarios.md +162 -0
  99. package/.codex/skills/leniu-crud-development/SKILL.md +232 -938
  100. package/.codex/skills/leniu-crud-development/references/templates.md +597 -0
  101. package/.codex/skills/leniu-customization-location/SKILL.md +410 -0
  102. package/.codex/skills/leniu-data-permission/SKILL.md +70 -0
  103. package/.codex/skills/leniu-java-code-style/SKILL.md +510 -0
  104. package/.codex/skills/leniu-java-entity/SKILL.md +76 -590
  105. package/.codex/skills/leniu-java-entity/references/templates.md +237 -0
  106. package/.codex/skills/leniu-java-export/SKILL.md +94 -379
  107. package/.codex/skills/leniu-java-logging/SKILL.md +106 -709
  108. package/.codex/skills/leniu-java-logging/references/data-mask.md +46 -0
  109. package/.codex/skills/leniu-java-logging/references/logging-scenarios.md +113 -0
  110. package/.codex/skills/leniu-java-mybatis/SKILL.md +73 -446
  111. package/.codex/skills/leniu-java-mybatis/references/report-mapper.md +88 -0
  112. package/.codex/skills/leniu-report-customization/SKILL.md +111 -325
  113. package/.codex/skills/leniu-report-customization/references/table-fields.md +93 -0
  114. package/.codex/skills/leniu-report-standard-customization/SKILL.md +328 -0
  115. package/.codex/skills/leniu-report-standard-customization/references/analysis-module.md +64 -0
  116. package/.codex/skills/leniu-report-standard-customization/references/table-fields.md +113 -0
  117. package/.codex/skills/leniu-security-guard/SKILL.md +133 -347
  118. package/.codex/skills/mysql-debug/SKILL.md +364 -0
  119. package/.codex/skills/openspec-apply-change/SKILL.md +10 -1
  120. package/.codex/skills/openspec-archive-change/SKILL.md +9 -1
  121. package/.codex/skills/openspec-bulk-archive-change/SKILL.md +9 -1
  122. package/.codex/skills/openspec-continue-change/SKILL.md +9 -1
  123. package/.codex/skills/openspec-explore/SKILL.md +10 -1
  124. package/.codex/skills/openspec-ff-change/SKILL.md +9 -1
  125. package/.codex/skills/openspec-new-change/SKILL.md +9 -1
  126. package/.codex/skills/openspec-onboard/SKILL.md +15 -130
  127. package/.codex/skills/openspec-sync-specs/SKILL.md +9 -1
  128. package/.codex/skills/openspec-verify-change/SKILL.md +9 -1
  129. package/.codex/skills/performance-doctor/SKILL.md +110 -434
  130. package/.codex/skills/project-navigator/SKILL.md +20 -1
  131. package/.codex/skills/redis-cache/SKILL.md +93 -589
  132. package/.codex/skills/redis-cache/references/listeners.md +23 -0
  133. package/.codex/skills/scheduled-jobs/SKILL.md +88 -407
  134. package/.codex/skills/security-guard/SKILL.md +141 -527
  135. package/.codex/skills/security-guard/references/encrypt-config.md +103 -0
  136. package/.codex/skills/security-guard/references/sensitive-strategies.md +42 -0
  137. package/.codex/skills/sms-mail/SKILL.md +116 -574
  138. package/.codex/skills/sms-mail/references/mail-config.md +88 -0
  139. package/.codex/skills/sms-mail/references/sms-config.md +74 -0
  140. package/.codex/skills/social-login/SKILL.md +112 -514
  141. package/.codex/skills/social-login/references/provider-configs.md +118 -0
  142. package/.codex/skills/store-pc/SKILL.md +258 -383
  143. package/.codex/skills/tenant-management/SKILL.md +129 -444
  144. package/.codex/skills/tenant-management/references/tenant-scenarios.md +91 -0
  145. package/.codex/skills/test-development/SKILL.md +86 -540
  146. package/.codex/skills/test-development/references/parameterized-examples.md +119 -0
  147. package/.codex/skills/ui-pc/SKILL.md +350 -387
  148. package/.codex/skills/utils-toolkit/SKILL.md +52 -283
  149. package/.codex/skills/utils-toolkit/references/redis-utils-api.md +56 -0
  150. package/.codex/skills/websocket-sse/SKILL.md +105 -550
  151. package/.codex/skills/workflow-engine/SKILL.md +147 -502
  152. package/.cursor/hooks.json +3 -3
  153. package/.cursor/rules/skill-activation.mdc +2 -0
  154. package/.cursor/skills/add-skill/SKILL.md +252 -116
  155. package/.cursor/skills/api-development/SKILL.md +83 -377
  156. package/.cursor/skills/architecture-design/SKILL.md +138 -632
  157. package/.cursor/skills/backend-annotations/SKILL.md +134 -506
  158. package/.cursor/skills/banana-image/SKILL.md +10 -3
  159. package/.cursor/skills/brainstorm/SKILL.md +103 -535
  160. package/.cursor/skills/bug-detective/SKILL.md +147 -1097
  161. package/.cursor/skills/bug-detective/references/error-patterns.md +242 -0
  162. package/.cursor/skills/code-patterns/SKILL.md +116 -426
  163. package/.cursor/skills/code-patterns/references/leniu-code-patterns.md +87 -0
  164. package/.cursor/skills/crud-development/SKILL.md +64 -304
  165. package/.cursor/skills/data-permission/SKILL.md +105 -412
  166. package/.cursor/skills/data-permission/references/custom-data-scope.md +90 -0
  167. package/.cursor/skills/file-oss-management/SKILL.md +106 -714
  168. package/.cursor/skills/file-oss-management/references/entities.md +105 -0
  169. package/.cursor/skills/file-oss-management/references/service-impl.md +104 -0
  170. package/.cursor/skills/git-workflow/SKILL.md +27 -5
  171. package/.cursor/skills/leniu-api-development/SKILL.md +142 -626
  172. package/.cursor/skills/leniu-api-development/references/real-examples.md +273 -0
  173. package/.cursor/skills/leniu-architecture-design/SKILL.md +176 -391
  174. package/.cursor/skills/leniu-backend-annotations/SKILL.md +132 -519
  175. package/.cursor/skills/leniu-brainstorm/SKILL.md +132 -541
  176. package/.cursor/skills/leniu-brainstorm/references/business-scenarios.md +162 -0
  177. package/.cursor/skills/leniu-crud-development/SKILL.md +232 -938
  178. package/.cursor/skills/leniu-crud-development/references/templates.md +597 -0
  179. package/.cursor/skills/leniu-customization-location/SKILL.md +410 -0
  180. package/.cursor/skills/leniu-data-permission/SKILL.md +70 -0
  181. package/.cursor/skills/leniu-java-code-style/SKILL.md +510 -0
  182. package/.cursor/skills/leniu-java-entity/SKILL.md +76 -590
  183. package/.cursor/skills/leniu-java-entity/references/templates.md +237 -0
  184. package/.cursor/skills/leniu-java-export/SKILL.md +94 -379
  185. package/.cursor/skills/leniu-java-logging/SKILL.md +106 -709
  186. package/.cursor/skills/leniu-java-logging/references/data-mask.md +46 -0
  187. package/.cursor/skills/leniu-java-logging/references/logging-scenarios.md +113 -0
  188. package/.cursor/skills/leniu-java-mybatis/SKILL.md +73 -446
  189. package/.cursor/skills/leniu-java-mybatis/references/report-mapper.md +88 -0
  190. package/.cursor/skills/leniu-report-customization/SKILL.md +111 -325
  191. package/.cursor/skills/leniu-report-customization/references/table-fields.md +93 -0
  192. package/.cursor/skills/leniu-report-standard-customization/SKILL.md +328 -0
  193. package/.cursor/skills/leniu-report-standard-customization/references/analysis-module.md +64 -0
  194. package/.cursor/skills/leniu-report-standard-customization/references/table-fields.md +113 -0
  195. package/.cursor/skills/leniu-security-guard/SKILL.md +133 -347
  196. package/.cursor/skills/mysql-debug/SKILL.md +364 -0
  197. package/.cursor/skills/openspec-apply-change/SKILL.md +10 -1
  198. package/.cursor/skills/openspec-archive-change/SKILL.md +9 -1
  199. package/.cursor/skills/openspec-bulk-archive-change/SKILL.md +9 -1
  200. package/.cursor/skills/openspec-continue-change/SKILL.md +9 -1
  201. package/.cursor/skills/openspec-explore/SKILL.md +10 -1
  202. package/.cursor/skills/openspec-ff-change/SKILL.md +9 -1
  203. package/.cursor/skills/openspec-new-change/SKILL.md +9 -1
  204. package/.cursor/skills/openspec-onboard/SKILL.md +15 -130
  205. package/.cursor/skills/openspec-sync-specs/SKILL.md +9 -1
  206. package/.cursor/skills/openspec-verify-change/SKILL.md +9 -1
  207. package/.cursor/skills/performance-doctor/SKILL.md +110 -434
  208. package/.cursor/skills/redis-cache/SKILL.md +89 -595
  209. package/.cursor/skills/redis-cache/references/listeners.md +23 -0
  210. package/.cursor/skills/scheduled-jobs/SKILL.md +88 -407
  211. package/.cursor/skills/security-guard/SKILL.md +137 -532
  212. package/.cursor/skills/security-guard/references/encrypt-config.md +103 -0
  213. package/.cursor/skills/security-guard/references/sensitive-strategies.md +42 -0
  214. package/.cursor/skills/sms-mail/SKILL.md +116 -574
  215. package/.cursor/skills/sms-mail/references/mail-config.md +88 -0
  216. package/.cursor/skills/sms-mail/references/sms-config.md +74 -0
  217. package/.cursor/skills/social-login/SKILL.md +112 -514
  218. package/.cursor/skills/social-login/references/provider-configs.md +118 -0
  219. package/.cursor/skills/tenant-management/SKILL.md +129 -444
  220. package/.cursor/skills/tenant-management/references/tenant-scenarios.md +91 -0
  221. package/.cursor/skills/test-development/SKILL.md +86 -540
  222. package/.cursor/skills/test-development/references/parameterized-examples.md +119 -0
  223. package/.cursor/skills/utils-toolkit/SKILL.md +52 -305
  224. package/.cursor/skills/utils-toolkit/references/redis-utils-api.md +56 -0
  225. package/.cursor/skills/websocket-sse/SKILL.md +105 -550
  226. package/.cursor/skills/workflow-engine/SKILL.md +147 -502
  227. package/AGENTS.md +1 -0
  228. package/package.json +1 -1
@@ -0,0 +1,273 @@
1
+ # leniu API 真实代码示例
2
+
3
+ ## 示例1:ReportAnalysisController(报表模块典型 Controller)
4
+
5
+ ```java
6
+ @RestController
7
+ @RequestMapping("/summary/analysis")
8
+ @Api(value = "报表中心/经营分析", tags = "报表/经营分析-新")
9
+ public class ReportAnalysisController {
10
+
11
+ @Autowired
12
+ @Lazy
13
+ protected ExportApi exportApi; // 跨模块依赖用 @Lazy 避免循环依赖
14
+ @Autowired
15
+ private ReportAnalysisTurnoverService reportAnalysisTurnoverService;
16
+
17
+ // 报表查询:返回直接 VO 对象
18
+ @ApiOperation(value = "营业分析-总营业额")
19
+ @PostMapping("/turnover/total")
20
+ public ReportTurnoverPO getTurnoverTotal(@RequestBody LeRequest<ReportAnalysisTurnoverParam> request) {
21
+ return reportAnalysisTurnoverService.getTurnoverTotal(request.getContent());
22
+ }
23
+
24
+ // 报表分页:返回 ReportBaseTotalVO(含合计行)
25
+ @ApiOperation(value = "营业分析-营业额报表")
26
+ @PostMapping("/turnover/detail")
27
+ public ReportBaseTotalVO<ReportAnalysisTurnoverDetailVO> getTurnoverDetail(
28
+ @RequestBody LeRequest<ReportAnalysisTurnoverParam> request) {
29
+ return reportAnalysisTurnoverService.getTurnoverDetail(request.getContent());
30
+ }
31
+
32
+ // 同步导出(小数据量)
33
+ @SneakyThrows
34
+ @ApiOperation(value = "食堂满意度统计导出")
35
+ @PostMapping("/evaluate/export")
36
+ public void exportEvaluateSummary(@RequestBody LeRequest<ReportAnalysisEvaluateParam> request,
37
+ HttpServletResponse response) {
38
+ ReportAnalysisEvaluateParam param = request.getContent();
39
+ ReportBaseTotalVO<ReportAnalysisEvaluateVO> result = reportAnalysisEvaluateService.pageSummary(param);
40
+ List<ReportAnalysisEvaluateVO> list = (List<ReportAnalysisEvaluateVO>)
41
+ CollUtil.addAll(result.getResultPage().getRecords(), result.getTotalLine());
42
+ EasyExcelUtil.writeExcelByDownLoadIncludeWrite(response, "文件",
43
+ ReportAnalysisEvaluateVO.class, ReportConstant.REPORT_TITLE_DETAILS, list, param.getExportCols());
44
+ }
45
+
46
+ // 异步导出(大数据量)
47
+ @ApiOperation(value = "异步导出菜品销售排行")
48
+ @PostMapping("/export-async/dishes/sale/export")
49
+ public void exportDishesSaleSummary(@RequestBody LeRequest<ReportAnalysisDishesSaleParam> request) {
50
+ ReportAnalysisDishesSaleParam param = request.getContent();
51
+ ReportBaseTotalVO<ReportAnalysisDishesSaleVO> result = reportAnalysisDishesSaleService.pageSummary(param);
52
+ List<ReportAnalysisDishesSaleVO> list = (List<ReportAnalysisDishesSaleVO>)
53
+ CollUtil.addAll(result.getResultPage().getRecords(), result.getTotalLine());
54
+ exportApi.startExcelExportTaskByPage(
55
+ "菜品销售排行",
56
+ I18n.getMessage(ReportConstant.REPORT_TITLE_DETAILS),
57
+ ReportAnalysisDishesSaleVO.class,
58
+ param.getExportCols(),
59
+ param.getPage(),
60
+ null,
61
+ () -> PageVO.of(list));
62
+ }
63
+ }
64
+ ```
65
+
66
+ ---
67
+
68
+ ## 示例2:OrderInfoExportWebController(订单导出 Controller)
69
+
70
+ ```java
71
+ // 导出功能独立到单独的 Controller,与查询 Controller 分离
72
+ @Slf4j
73
+ @RestController
74
+ @RequestMapping(value = "/api/v2/web/order/export")
75
+ public class OrderInfoExportWebController {
76
+
77
+ @Autowired
78
+ @Lazy
79
+ protected OrderWebBusiness orderWebBusiness;
80
+ @Autowired
81
+ @Lazy
82
+ protected OrderClients orderClients;
83
+
84
+ // 使用 orderClients.export() 启动异步导出(通过 client 代理)
85
+ @PostMapping(value = "/detail")
86
+ public void exportOrderDetail(@RequestBody LeRequest<OrderDetailWebDTO> request) {
87
+ OrderDetailWebDTO orderDetailDTO = request.getContent();
88
+ orderClients.export().startExcelExportTaskByPage(
89
+ I18n.getMessage("order.title.order-detail"), // 文件名(国际化)
90
+ orderSheetName(), // 工作表名
91
+ OrderListWebVO.class, // 数据类
92
+ orderDetailDTO.getExportCols(), // 导出列
93
+ orderDetailDTO, // 分页参数
94
+ null, // 合计行(可选)
95
+ () -> orderWebBusiness.queryOrderInfoWebByPage(orderDetailDTO, orderDetailDTO));
96
+ }
97
+ }
98
+ ```
99
+
100
+ ---
101
+
102
+ ## 示例3:OrderInfoWebController(订单查询 Controller)
103
+
104
+ ```java
105
+ @Validated
106
+ @RestController
107
+ @RequestMapping(value = "/api/v2/web/order")
108
+ public class OrderInfoWebController {
109
+
110
+ @Autowired
111
+ private OrderWebBusiness orderWebBusiness;
112
+
113
+ // 详情查询
114
+ @PostMapping(value = "/info")
115
+ public OrderInfoWebVO info(@Valid @RequestBody LeRequest<OrderInfoWebDTO> request) {
116
+ return orderWebBusiness.getOrderInfo(request.getContent().getOrderId());
117
+ }
118
+
119
+ // 分页查询:返回 PageVO
120
+ @PostMapping(value = "/page/detail")
121
+ public PageVO<OrderListWebVO> pageOrderDetail(@RequestBody LeRequest<OrderDetailWebDTO> request) {
122
+ OrderDetailWebDTO content = request.getContent();
123
+ return orderWebBusiness.queryOrderInfoWebByPage(PageDTO.of(content.getCurrent(), content.getSize()), content);
124
+ }
125
+
126
+ // 业务失败抛出 LeException
127
+ @PostMapping(value = "/refund")
128
+ public OrderRefundResultVO orderRefundWeb(@RequestBody LeRequest<OrderRefundSubmitWebDTO> request) throws LeCheckedException {
129
+ OrderRefundResultVO result = orderRefundBusiness.orderRefund(
130
+ request.getContent().convertToOrderRefundParam(), OrderRefundBizEnum.WEB);
131
+ if (!result.ifSuccess()) {
132
+ throw new LeException(result.getResultCode(), result.getResultMsg());
133
+ }
134
+ return result;
135
+ }
136
+ }
137
+ ```
138
+
139
+ ---
140
+
141
+ ## 示例4:AttendanceLeaveInfoController(完整 CRUD)
142
+
143
+ ```java
144
+ package net.xnzn.core.attendance.leave.controller;
145
+
146
+ @Api(tags = "zjl-考勤-请假信息")
147
+ @RestController
148
+ @RequiresAuthentication
149
+ @RequestMapping("/attendance/leave-info")
150
+ public class AttendanceLeaveInfoController {
151
+
152
+ @Autowired
153
+ AttendanceLeaveInfoService attendanceLeaveInfoService;
154
+ @Autowired
155
+ RedissonClient redissonClient;
156
+
157
+ @PostMapping("/add")
158
+ @ApiOperation(value = "请假信息-新增")
159
+ public void add(@RequestBody LeRequest<AddOrUpdateAttendanceLeaveInfoDTO> request) {
160
+ attendanceLeaveInfoService.add(request.getContent());
161
+ }
162
+
163
+ @PutMapping("/batch/delete")
164
+ @ApiOperation(value = "请假信息-批量删除")
165
+ public void batchDelete(@RequestBody LeRequest<List<Long>> request) {
166
+ attendanceLeaveInfoService.batchDelete(request.getContent());
167
+ }
168
+
169
+ @PutMapping("/update")
170
+ @ApiOperation(value = "请假信息-修改")
171
+ public void update(@RequestBody LeRequest<AddOrUpdateAttendanceLeaveInfoDTO> request) {
172
+ attendanceLeaveInfoService.update(request.getContent());
173
+ }
174
+
175
+ @PostMapping("/query")
176
+ @ApiOperation(value = "请假信息-分页查询")
177
+ public Page<QueryAttendanceLeaveInfoVO> query(@RequestBody LeRequest<QueryAttendanceLeaveInfoDTO> request) {
178
+ return attendanceLeaveInfoService.page(request.getContent());
179
+ }
180
+
181
+ @PostMapping("/import-excel")
182
+ @ApiOperation(value = "请假信息-excel导入")
183
+ public void importExcel(@RequestParam(value = "leaveInfoExcel") MultipartFile leaveInfoExcel) throws Exception {
184
+ RLock lock = redissonClient.getLock("import:lock:" + TenantContextHolder.getTenantId());
185
+ if (!lock.tryLock(5, TimeUnit.SECONDS)) {
186
+ throw new LeException("考勤-请假数据导入中,请等待...");
187
+ }
188
+ try {
189
+ attendanceLeaveInfoService.importExcel(new ImportLeaveInfoExcelDTO().setLeaveInfoExcel(leaveInfoExcel));
190
+ } finally {
191
+ if (lock.isLocked() && lock.isHeldByCurrentThread()) {
192
+ lock.unlock();
193
+ }
194
+ }
195
+ }
196
+ }
197
+ ```
198
+
199
+ ---
200
+
201
+ ## 示例5:AllocCanteenController(食堂档口,混合认证)
202
+
203
+ ```java
204
+ package net.xnzn.core.allocation.canteen.controller;
205
+
206
+ @Slf4j
207
+ @RestController
208
+ @RequestMapping("/api/v2/alloc/canteen")
209
+ @Api(tags = "lsh_食堂档口相关控制器")
210
+ public class AllocCanteenController {
211
+
212
+ @Autowired
213
+ @Lazy
214
+ private AllocCanteenService allocCanteenService;
215
+
216
+ @ApiOperation("分页查询食堂列表")
217
+ @PostMapping("/page-canteen")
218
+ public Page<AllocCanteenVO> pageCanteen(@RequestBody LeRequest<AllocCanteenStallPageParam> request) {
219
+ return allocCanteenService.pageCanteen(request.getContent());
220
+ }
221
+
222
+ @ApiOperation("查询区域食堂档口餐线编号")
223
+ @PostMapping("/get-canteen-num")
224
+ public LeResponse<String> getCanteenNum(@Valid @RequestBody LeRequest<AllocCanteenNumParam> request) {
225
+ return LeResponse.succ(allocCanteenBusiness.getCanteenNum(request.getContent()));
226
+ }
227
+
228
+ @ApiOperation("新增食堂")
229
+ @PostMapping("/add-canteen")
230
+ @RequiresGuest
231
+ public void addCanteen(@Valid @RequestBody LeRequest<AllocCanteenModel> request) {
232
+ allocCanteenBusiness.addCanteen(request.getContent());
233
+ }
234
+ }
235
+ ```
236
+
237
+ ---
238
+
239
+ ## 示例6:MgrMenuController(菜单权限,方法级认证)
240
+
241
+ ```java
242
+ package net.xnzn.core.auth.menu.controller;
243
+
244
+ @RestController
245
+ @RequestMapping("/api/v1/mgrmenu")
246
+ @Api(value = "mgrmenu", tags = "菜单权限表管理")
247
+ public class MgrMenuController {
248
+
249
+ @Autowired
250
+ private MgrMenuService mgrMenuService;
251
+
252
+ @ApiOperation(value = "新增菜单")
253
+ @PostMapping("/add")
254
+ @RequiresAuthentication
255
+ public void saveMenu(@Valid @RequestBody LeRequest<MgrMenuVO> request) {
256
+ mgrMenuService.saveMenu(request.getContent());
257
+ }
258
+
259
+ @ApiOperation(value = "更新菜单")
260
+ @PostMapping("/update")
261
+ @RequiresAuthentication
262
+ public boolean updateMenu(@Valid @RequestBody LeRequest<MgrMenuVO> request) {
263
+ return mgrMenuService.updateMenu(request.getContent());
264
+ }
265
+
266
+ @ApiOperation(value = "删除菜单")
267
+ @DeleteMapping("/{id}")
268
+ @RequiresGuest
269
+ public boolean removeById(@PathVariable Long id) {
270
+ return mgrMenuService.removeById(id);
271
+ }
272
+ }
273
+ ```