package com.ruoyi.order.controller.inner;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.enums.OrderStatusEnum;
import com.ruoyi.common.core.utils.page.BeanUtils;
import com.ruoyi.common.security.annotation.InnerAuth;
import com.ruoyi.order.service.IOrderService;
import com.ruoyi.system.api.domain.Order;
import com.ruoyi.system.api.domain.dto.HomeGoodsSkuDTO;
import com.ruoyi.system.api.domain.dto.OrderDTO;
import com.ruoyi.system.api.domain.dto.OrderUpdDTO;
import com.ruoyi.system.api.domain.vo.OrderVO;
import java.util.Collection;
import java.util.List;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.ss.formula.functions.T;
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.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
/**
*
* 订单表 前端控制器
*
*
* @author mitao
* @since 2024-05-16
*/
@Slf4j
@RestController
@RequestMapping("/order")
@RequiredArgsConstructor
public class OrderController {
private final IOrderService orderService;
@PostMapping("/saveOrderOne")
@ResponseBody
@InnerAuth
public R saveOrderOne(@RequestBody OrderDTO OrderDTO) {
orderService.saveOrderOne(OrderDTO);
return R.ok();
}
@PostMapping("/getOrderOne")
@ResponseBody
@InnerAuth
public R getOrderOne(@RequestBody OrderDTO OrderDTO) {
LambdaQueryWrapper wrapper= Wrappers.lambdaQuery();
wrapper.eq(Order::getMemberId,OrderDTO.getMemberId());
wrapper.eq(Order::getOrderFrom,4);
wrapper.eq(Order::getAuctionOrderType,2 );
wrapper.eq(Order::getGoodsSkuId,OrderDTO.getGoodsSkuId());
wrapper.eq(Order::getDelFlag,0);
wrapper.orderByDesc(Order::getCancelTime);
Order page1 = orderService.getOne(wrapper);
return R.ok(page1);
}
@PostMapping("/getOrderOne1")
@ResponseBody
@InnerAuth
public R getOrderOne1(@RequestBody OrderDTO OrderDTO) {
LambdaQueryWrapper wrapper= Wrappers.lambdaQuery();
wrapper.eq(Order::getMemberId,OrderDTO.getMemberId());
wrapper.eq(Order::getOrderFrom,4);
wrapper.eq(Order::getAuctionOrderType,1 );
wrapper.eq(Order::getGoodsSkuId,OrderDTO.getGoodsSkuId());
wrapper.eq(Order::getDelFlag,0);
wrapper.orderByDesc(Order::getCancelTime);
Order page1 = orderService.getOne(wrapper);
return R.ok(page1);
}
@PostMapping("/getOrderOne2")
@ResponseBody
@InnerAuth
public R getOrderOne2(@RequestBody OrderDTO OrderDTO) {
LambdaQueryWrapper wrapper= Wrappers.lambdaQuery();
wrapper.eq(Order::getMemberId,OrderDTO.getMemberId());
wrapper.eq(Order::getOrderFrom,OrderDTO.getOrderFrom());
wrapper.eq(Order::getGoodsSkuId,OrderDTO.getGoodsSkuId());
wrapper.eq(Order::getDelFlag,0);
wrapper.orderByDesc(Order::getCancelTime);
List list = orderService.list(wrapper);
return R.ok(list.get(0));
}
/**
* 获取某个商品的已购会员数
*
* @param id 秒杀商品id
* @return 已购会员数
*/
@InnerAuth
@GetMapping("/seckill-members/{id}")
R getSeckillMembers(@PathVariable("id") Long id) {
return R.ok(orderService.getSeckillMembers(id));
}
/**
* 获取团购商品已购数量
*
* @param id 团购商品id
* @return 团购商品已购数量
*/
@InnerAuth
@GetMapping("/group-purchase-num/{id}")
R getGroupPurchasesGoodsNum(@PathVariable("id") Long id) {
return R.ok(orderService.getGroupPurchasesGoodsNum(id));
}
/**
* 获取团购商品已购订单列表
*
* @param id 团购商品id
* @return List 订单列表
*/
@InnerAuth
@GetMapping("/group-purchase-id/{id}")
R> getOrderByGroupPurchaseId(@PathVariable("id") Long id) {
return R.ok(orderService.getOrderByGroupPurchaseId(id));
}
@InnerAuth
@ResponseBody
@PostMapping("/getOrderByGroupPurchaseMemberId")
R getOrderByGroupPurchaseMemberId(@RequestBody HomeGoodsSkuDTO homeGoodsSkuDTO){
return R.ok(orderService.getOrderByGroupPurchaseMemberId(homeGoodsSkuDTO));
}
@InnerAuth
@ResponseBody
@PostMapping("/getOrderByGroupPurchaseMemberId1")
R getOrderByGroupPurchaseMemberId1(@RequestBody HomeGoodsSkuDTO homeGoodsSkuDTO){
return R.ok(orderService.getOrderByGroupPurchaseMemberId1(homeGoodsSkuDTO));
}
@InnerAuth
@ResponseBody
@PostMapping("/getOrderByGroupPurchaseMemberId2")
R getOrderByGroupPurchaseMemberId2(@RequestBody HomeGoodsSkuDTO homeGoodsSkuDTO){
return R.ok(orderService.getOrderByGroupPurchaseMemberId2(homeGoodsSkuDTO));
}
@InnerAuth
@ResponseBody
@PostMapping("/getOrderByGroupPurchaseMemberList")
R> getOrderByGroupPurchaseMemberList(@RequestBody HomeGoodsSkuDTO homeGoodsSkuDTO){
return R.ok(orderService.getOrderByGroupPurchaseMemberList(homeGoodsSkuDTO));
}
@InnerAuth
@ResponseBody
@PostMapping("/getOrderByGroupPurchaseMemberList1")
R> getOrderByGroupPurchaseMemberList1(@RequestBody HomeGoodsSkuDTO homeGoodsSkuDTO){
return R.ok(orderService.getOrderByGroupPurchaseMemberList1(homeGoodsSkuDTO));
}
/**
* 批量更新订单状态
*
* @param orderUpdDTOS 订单更新数据传输对象列表
*/
@PutMapping("/upd-batch")
R> updateOrderList(@RequestBody List orderUpdDTOS) {
List orders = BeanUtils.copyList(orderUpdDTOS, Order.class);
orderService.updateBatchById(orders);
return R.ok();
}
/**
* 根据优惠券id集合查询订单列表
*
* @param couponIds 优惠券id集合
* @return List
*/
@PostMapping("/list-by-coupon")
R> getOrderByCouponIds(@RequestBody Collection couponIds) {
return R.ok(orderService.getOrderByCouponIds(couponIds));
}
@InnerAuth
@GetMapping("/autoCancelOrder/{id}")
R> autoCancelOrder(@PathVariable("id") Long oid) {
Order byId = orderService.getById(oid);
if (byId.getOrderStatus().getCode()==1){
byId.setOrderStatus(OrderStatusEnum.CANCELED);
orderService.updateById(byId);
}
return R.ok();
}
@InnerAuth
@PostMapping("/getOrderListByMubres")
R> getOrderListByMubres(@RequestBody List mubres) {
return R.ok(orderService.getOrderListByMubres(mubres));
}
@InnerAuth
@PostMapping("/updOrderStatusByMubres")
R> updateOrderStatusByMubres(@RequestBody List formedGroupMubres) {
orderService.updateOrderStatusByMubres(formedGroupMubres);
return R.ok();
}
@InnerAuth
@PostMapping("/updOrderStatusByMubres1")
R> updateOrderStatusByMubres1(@RequestBody String formedGroupMubres) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
orderService.updateOrderStatusByMubres1(formedGroupMubres);
return R.ok();
}
@InnerAuth
@PostMapping("/updOrderStatusByMubres2")
R> updateOrderStatusByMubres2(@RequestBody String formedGroupMubres) {
orderService.updateOrderStatusByMubres2(formedGroupMubres);
return R.ok();
}
}