package com.xcong.excoin.modules.otc.controller; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.xcong.excoin.common.LoginUserUtils; import com.xcong.excoin.common.response.Result; import com.xcong.excoin.modules.member.dao.MemberDao; import com.xcong.excoin.modules.member.entity.MemberEntity; import com.xcong.excoin.modules.otc.dao.OtcReturnMoneyDao; import com.xcong.excoin.modules.otc.dto.*; import com.xcong.excoin.modules.otc.service.OtcOrderService; import com.xcong.excoin.modules.otc.vo.BuyOrderDetailVo; import com.xcong.excoin.modules.otc.vo.OrderListVo; import com.xcong.excoin.modules.otc.vo.SaleOrderDetailVo; import com.xcong.excoin.modules.otc.vo.TeamVo; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiResponse; import io.swagger.annotations.ApiResponses; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.ibatis.annotations.Param; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import java.math.BigDecimal; import java.util.HashMap; import java.util.Map; @Slf4j @Validated @RestController @RequestMapping(value = "/api/otcOrder") @RequiredArgsConstructor @Api(value = "OtcOrderController", tags = "otc用户订单接口类") public class OtcOrderController { private final OtcOrderService otcOrderService; private final OtcReturnMoneyDao otcReturnMoneyDao; @ApiOperation(value = "我要购买") @PostMapping(value = "/buy") public Result buy(@RequestBody OtcOrderAddDto orderAddDto) { return otcOrderService.buyOrder(orderAddDto); } @ApiOperation(value = "我要出售") @PostMapping(value = "/sale") public Result sale(@RequestBody OtcOrderAddDto orderAddDto) { return otcOrderService.saleOrder(orderAddDto); } @ApiOperation(value = "用户订单列表") @ApiResponses({ @ApiResponse(code = 200, message = "success", response = OrderListVo.class) }) @PostMapping(value = "/orderList") public Result orderList(@RequestBody OrderListDto orderListDto) { IPage page = otcOrderService.findOrderListInPage(orderListDto); return Result.ok(page.getRecords()); } @ApiOperation(value = "买单 - 订单详情") @ApiResponses({ @ApiResponse(code = 200, message = "success", response = BuyOrderDetailVo.class) }) @GetMapping(value = "/buyOrderDetail/{id}") public Result buyOrderDetail(@PathVariable("id") Long id) { return otcOrderService.findBuyOrderDetail(id); } @ApiOperation(value = "卖单 - 订单详情") @ApiResponses({ @ApiResponse(code = 200, message = "success", response = SaleOrderDetailVo.class) }) @GetMapping(value = "/saleOrderDetail/{id}") public Result saleOrderDetail(@PathVariable("id") Long id) { return otcOrderService.findSaleOrderDetail(id); } @ApiOperation(value = "已付款,请放币") @PostMapping(value = "/hasPay") public Result hasPay(@RequestBody HasPayDto hasPayDto) { otcOrderService.hasPay(hasPayDto); return Result.ok("操作成功"); } @ApiOperation(value = "确认收款") @PostMapping(value = "/finishOrder/{id}") public Result finishOrder(@PathVariable("id") Long id) { otcOrderService.finishOrder(id); return Result.ok("操作成功"); } @ApiOperation(value = "取消订单") @PostMapping(value = "/cancelUserOrder/{id}") public Result cancelUserOrder(@PathVariable("id") Long id) { otcOrderService.cancelOrder(id); return Result.ok("操作成功"); } @ApiOperation(value = "申诉") @PostMapping(value = "/orderApeal") public Result orderApeal(@RequestBody OrderApealDto orderApealDto) { return otcOrderService.orderApeal(orderApealDto); } @ApiOperation(value = "获取我的团队") @PostMapping(value = "/findTeamList") public Result teamList(@RequestBody TeamDto teamDto) { Page page = new Page<>(teamDto.getPageNum(), teamDto.getPageSize()); MemberEntity member = LoginUserUtils.getAppLoginUser(); IPage data = otcReturnMoneyDao.selectMyTeamAmountInPage(member.getInviteId(), member.getId(), page); BigDecimal totalAmount = otcReturnMoneyDao.selectTotalAmount(member.getId()); Map result = new HashMap<>(); result.put("totalCnt", data.getTotal()); result.put("totalAmount", totalAmount == null ? BigDecimal.ZERO : totalAmount.setScale(4, BigDecimal.ROUND_DOWN)); result.put("result", data.getRecords()); return Result.ok(result); } }