diff --git a/agileboot-admin/src/main/java/com/agileboot/admin/controller/ab98/UserBalanceLogController.java b/agileboot-admin/src/main/java/com/agileboot/admin/controller/ab98/UserBalanceLogController.java new file mode 100644 index 0000000..85ecb79 --- /dev/null +++ b/agileboot-admin/src/main/java/com/agileboot/admin/controller/ab98/UserBalanceLogController.java @@ -0,0 +1,125 @@ +package com.agileboot.admin.controller.ab98; + +import com.agileboot.admin.customize.aop.accessLog.AccessLog; +import com.agileboot.common.core.base.BaseController; +import com.agileboot.common.core.dto.ResponseDTO; +import com.agileboot.common.core.page.PageDTO; +import com.agileboot.common.enums.common.BusinessTypeEnum; +import com.agileboot.domain.ab98.user_balance_log.UserBalanceLogApplicationService; +import com.agileboot.domain.ab98.user_balance_log.command.AddUserBalanceLogCommand; +import com.agileboot.domain.ab98.user_balance_log.command.UpdateUserBalanceLogCommand; +import com.agileboot.domain.ab98.user_balance_log.dto.UserBalanceLogDTO; +import com.agileboot.domain.ab98.user_balance_log.query.SearchUserBalanceLogQuery; +import io.swagger.v3.oas.annotations.Operation; +import java.util.List; +import javax.validation.constraints.NotNull; +import lombok.RequiredArgsConstructor; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 用户余额变更日志控制器 + *

+ * + * @author valarchie + * @since 2025-12-06 + */ +@RestController +@RequestMapping("/ab98/balance-log") +@RequiredArgsConstructor +@Validated +public class UserBalanceLogController extends BaseController { + + private final UserBalanceLogApplicationService userBalanceLogApplicationService; + + @Operation(summary = "用户余额变更日志列表") + @GetMapping + public ResponseDTO> list(SearchUserBalanceLogQuery query) { + PageDTO page = userBalanceLogApplicationService.getList(query); + return ResponseDTO.ok(page); + } + + @Operation(summary = "用户余额变更日志详情") + @GetMapping("/{id}") + public ResponseDTO detail(@PathVariable Long id) { + UserBalanceLogDTO userBalanceLogDTO = userBalanceLogApplicationService.getById(id); + return ResponseDTO.ok(userBalanceLogDTO); + } + + @Operation(summary = "根据用户余额ID查询变更日志") + @GetMapping("/byUserBalanceId/{userBalanceId}") + public ResponseDTO> getByUserBalanceId(@PathVariable Long userBalanceId) { + List userBalanceLogDTOList = userBalanceLogApplicationService.getByUserBalanceId(userBalanceId); + return ResponseDTO.ok(userBalanceLogDTOList); + } + + @Operation(summary = "根据订单ID查询变更日志") + @GetMapping("/byOrderId/{orderId}") + public ResponseDTO> getByOrderId(@PathVariable Long orderId) { + List userBalanceLogDTOList = userBalanceLogApplicationService.getByOrderId(orderId); + return ResponseDTO.ok(userBalanceLogDTOList); + } + + @Operation(summary = "根据审批ID查询变更日志") + @GetMapping("/byApprovalId/{approvalId}") + public ResponseDTO> getByApprovalId(@PathVariable Long approvalId) { + List userBalanceLogDTOList = userBalanceLogApplicationService.getByApprovalId(approvalId); + return ResponseDTO.ok(userBalanceLogDTOList); + } + + @Operation(summary = "根据订单商品ID查询变更日志") + @GetMapping("/byOrderGoodsId/{orderGoodsId}") + public ResponseDTO> getByOrderGoodsId(@PathVariable Long orderGoodsId) { + List userBalanceLogDTOList = userBalanceLogApplicationService.getByOrderGoodsId(orderGoodsId); + return ResponseDTO.ok(userBalanceLogDTOList); + } + + @Operation(summary = "根据变更类型查询变更日志") + @GetMapping("/byChangeType/{changeType}") + public ResponseDTO> getByChangeType(@PathVariable Integer changeType) { + List userBalanceLogDTOList = userBalanceLogApplicationService.getByChangeType(changeType); + return ResponseDTO.ok(userBalanceLogDTOList); + } + + @Operation(summary = "新增用户余额变更日志") + @AccessLog(title = "用户余额变更日志管理", businessType = BusinessTypeEnum.ADD) + @PostMapping + public ResponseDTO add(@Validated @RequestBody AddUserBalanceLogCommand command) { + UserBalanceLogDTO userBalanceLogDTO = userBalanceLogApplicationService.add(command); + return ResponseDTO.ok(userBalanceLogDTO); + } + + @Operation(summary = "修改用户余额变更日志") + @AccessLog(title = "用户余额变更日志管理", businessType = BusinessTypeEnum.MODIFY) + @PutMapping("/{id}") + public ResponseDTO edit(@PathVariable Long id, @Validated @RequestBody UpdateUserBalanceLogCommand command) { + command.setLogId(id); + UserBalanceLogDTO userBalanceLogDTO = userBalanceLogApplicationService.update(command); + return ResponseDTO.ok(userBalanceLogDTO); + } + + @Operation(summary = "删除用户余额变更日志") + @AccessLog(title = "用户余额变更日志管理", businessType = BusinessTypeEnum.DELETE) + @DeleteMapping("/{id}") + public ResponseDTO remove(@PathVariable Long id) { + userBalanceLogApplicationService.delete(id); + return ResponseDTO.ok(); + } + + @Operation(summary = "批量删除用户余额变更日志") + @AccessLog(title = "用户余额变更日志管理", businessType = BusinessTypeEnum.DELETE) + @DeleteMapping("/batch/{ids}") + public ResponseDTO batchRemove(@PathVariable @NotNull List ids) { + userBalanceLogApplicationService.batchDelete(ids); + return ResponseDTO.ok(); + } + +}