package org.example.order.controller;
import org.example.feign.result.ResultCode;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import org.example.order.service.OrderService;
import org.example.feign.clients.BookClients;
import org.example.feign.util.ResultUtil;
import org.example.feign.result.Result;
import org.example.feign.view.CartTable;
import org.example.order.view.OrderInfo;
import org.example.order.view.OrderItemInfo;
import org.example.order.pojo.Order;
import org.example.order.pojo.OrderItem;
import org.example.feign.pojo.Book;
import org.example.order.utils.OrderCode;
/**
* @author DELL
*/
@RestController
@RequestMapping("/order")
public class OrderController {
@Autowired
private OrderService orderService;
@Autowired
private BookClients bookClients;
/**
* 购物车下订单模块(新建订单)
* @param cartTableList 选中的购物车表
* @param buyerId 买家ID
* @return 订单详情
*/
@PostMapping("/create")
@ResponseBody
public Result createOrder(@RequestBody List<CartTable> cartTableList, @RequestParam("buyerId") long buyerId){
/*对cartTableList按照uid进行分组;此uid为卖家的id*/
Map<Long,List<CartTable>> cartTables = cartTableList.stream().collect(Collectors.groupingBy(CartTable::getUid));
/*定义返回的数据*/
List<OrderInfo> orderInfoList = new ArrayList<>();
/*而后循环对每一分组进行处理*/
for (Map.Entry<Long,List<CartTable>> entry : cartTables.entrySet()){
long sellerId = entry.getKey();
List<CartTable> list = entry.getValue();
/*先新建一个订单*/
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String time = df.format(new Date());
String oid = OrderCode.getOrderCode();
Order order = new Order(oid,buyerId,sellerId,time,"",0);
int res = orderService.insertOrder(order);
if (res != 1){
System.out.println("订单创建失败!");
}
OrderInfo orderInfo = new OrderInfo(oid,sellerId,"",time,"",0,new BigDecimal(0),null);
String sellerName = "";
BigDecimal subTotal = BigDecimal.valueOf(0);
List<OrderItemInfo> orderItemInfoList = new ArrayList<>();
for (CartTable table:list){
/*遍历,建立订单项*/
OrderItem orderItem = new OrderItem(1,oid,table.getBid(),0);
int res2 = orderService.insertOrderItem(orderItem);
if (res2 != 1){
System.out.println("订单项建立失败!");
}
int id = orderService.queryItemId(oid,table.getBid());
OrderItemInfo orderItemInfo = new OrderItemInfo(id,table.getBid(),0,table.getTitle(),table.getSellPrice());
orderItemInfoList.add(orderItemInfo);
sellerName = table.getName();
subTotal = subTotal.add(table.getSellPrice());
}
orderInfo.setSellerName(sellerName);
orderInfo.setSubTotal(subTotal);
orderInfo.setItemInfos(orderItemInfoList);
orderInfoList.add(orderInfo);
}
return ResultUtil.buildSuccessResult("成功",orderInfoList);
}
/**
* 获取买家的相关订单
* @param statuses 订单状态
* @param buyerId 买家ID
* @return 所有相关的订单详情
*/
@PostMapping("/getBuyerOrders")
@ResponseBody
public Result getBuyerOrders(@RequestBody List<Integer> statuses, @RequestParam("buyerId") long buyerId){
List<OrderInfo> orderInfos = orderService.getBuyerOrSellerOrders(buyerId,statuses,true);
return ResultUtil.buildSuccessResult("成功!",orderInfos);
}
/**
* 获取卖家订单
* @param statuses 订单状态
* @param sellerId 卖家ID
* @return 所有相关订单
*/
@PostMapping("/getSellerOrders")
@ResponseBody
public Result getSellerOrders(@RequestBody List<Integer> statuses,@RequestParam("sellerId") long sellerId){
List<OrderInfo> orderInfos = orderService.getBuyerOrSellerOrders(sellerId,statuses,false);
return ResultUtil.buildSuccessResult("成功!",orderInfos);
}
/**
* 删除某一订单项:若只有一项则连带删除订单
* @param id 包括订单项id
* @return 删除结果
*/
@PostMapping("/deleteOrderItem")
@ResponseBody
public Result deleteOrderItem(@RequestParam("id") int id){
String oid = orderService.findOrderItemById(id).getOid();
int res = orderService.deleteOrderItem(id);
if (res == 1){
if (orderService.orderItemIsExist(oid)){
return ResultUtil.buildSuccessResult("删除订单项成功!",null);
} else {
int rest = orderService.deleteOrder(oid);
if (rest == 1){
return ResultUtil.buildSuccessResult("删除订单项成功,该订单已作废!",null);
} else {
return ResultUtil.buildSuccessResult("删除订单项成功,但该订单删除失败,原因未知!",null);
}
}
} else {
return ResultUtil.buildFailResult("删除失败!",null);
}
}
/**
* 删除订单
* @param id 订单编号
* @return 删除结果
*/
@PostMapping("/deleteOrder")
@ResponseBody
public Result deleteOrder(@RequestParam("id") String id){
if (!orderService.orderItemIsExist(id)){
return ResultUtil.buildFailResult("订单里面不存在订单项,错误!",null);
} else {
orderService.deleteOrderItems(id);
int res = orderService.deleteOrder(id);
if (res == 1){
return ResultUtil.buildSuccessResult("删除订单成功",null);
} else {
return ResultUtil.buildFailResult("删除订单失败!",null);
}
}
}
/**
* 修改订单状态信息
* @param order_id 订单编号(id)
* @param order_status 订单状态(status)
* @return 修改结果
*/
@PostMapping("/changeStatus")
@ResponseBody
public Result changeStatus(@RequestParam("id") String order_id,
@RequestParam("status") int order_status){
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String time = df.format(new Date());
Order order = new Order();
order.setTime(time);
order.setId(order_id);
order.setStatus(order_status);
if (!orderService.orderIsExist(order_id)){
return ResultUtil.buildFailResult("订单不存在,错误!",null);
} else {
int res = orderService.updateOrderStatus(order);
if (res == 1){
return ResultUtil.buildSuccessResult("成功",null);
} else {
return ResultUtil.buildFailResult("失败!",null);
}
}
}
@GetMapping("/getAll")
public List<Order> getAll(){
return orderService.getAll();
}
/**
* 修改订单orderitem状态信息
* @param uid book的seller
* @param sellPrice 新售价
* @param degree 重新设置新旧
* @param item_id orderitem表中的id
* @return 修改结果
*/
@PostMapping("/resale")
@ResponseBody
public Result resale(@RequestParam("sellPrice") BigDecimal sellPrice,
@RequestParam("degree") String degree,
@RequestParam("uid") long uid,
@Reque
没有合适的资源?快使用搜索试试~ 我知道了~
基于SpringCloud的校园二手书交易系统源码+项目说明.zip

共105个文件
java:60个
xml:15个
yml:7个

1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉

温馨提示
基于SpringCloud的校园二手书交易系统源码+项目说明.zip 基于SpringCloud2.3的校园二手书交易系统,整合了nacos、feign、springcloud-gateway服务,并实现Docker部署与云部署。 每个微服务是基于SpringBoot+Mybatis的单体应用,并用到了支付宝沙箱支付、minio文件服务器等技术。 前端项目:https://download.csdn.net/download/DeepLearning_/87351494 【备注】 主要针对计算机相关专业的正在做毕设的学生和需要项目实战的Java学习者。 也可作为课程设计、期末大作业。包含:项目源码、数据库脚本、项目说明等,该项目可以直接作为毕设、课程设计使用。 也可以用来学习参考借鉴!
资源推荐
资源详情
资源评论























收起资源包目录





































































































共 105 条
- 1
- 2
资源评论

- 安妮心动论2024-02-14资源内容总结的很到位,内容详实,很受用,学到了~
- m0_477985612023-05-23简直是宝藏资源,实用价值很高,支持!onnx2023-11-08感谢认可~~

onnx
- 粉丝: 1w+
- 资源: 5803
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- .Net通用运动控制系统:雷赛控制卡及多种控制卡框架指南.pdf
- .net源码、.net框架源码、工作流源码、开发平台源码、开发框架源码.pdf
- .net源码大型MES生产制造管理系统(BS版本)Oracle数据库源码.pdf
- .西门子SMART与组态王的过程控制系统:带注释、Io表和程序框架的智能化应用.pdf
- .基于西门子1200饮料传输系统设置 '功能齐全、配置清晰.pdf
- .两部四层群控电梯(基于西门子1200和博图wincc仿真)的清单见下图.pdf
- 0.2-0.75KW简易型变频器生产方案:220V输入,三相220V输出,高温环境需加风扇散热.pdf
- 01线性多智能体分布式动态事件触发一致性的研究.pdf
- 01风光储并网协同运行:永磁风机、光伏阵列、储能系统及其控制策略.pdf
- 1. 调用Halcon实现九点标定 vs 2. LabVIEW自编九点标定算法:算法对比与实现.pdf
- 1. 普通开关磁阻电机调速(仅电流控制)仿真无文档;2. 开关磁阻电机直流斩波双闭环控制(转速外环)及对应说明文档.pdf
- 1.5MW双馈风力发电机系统建模与仿真:基于背靠背PWM变流器与定子电压定向矢量控制的理解注释.pdf
- 1.5MW内转子永磁直驱风力发电机:转速25rpm,端电压700V,效率97%的参数及仿真文件.pdf
- 1.5MW双馈发电机(DFIG双馈风力发电机)仿真模型介绍.pdf
- 1.5延时补偿与扩张龙伯格扰动观测器(ESO)及扰动观测器(DOB)设计思路的pmsm仿真研究——基于离散模型与M文件方便移植到C验证.pdf
- 1.5MW无刷双馈电机性能及定子转子匝间波形分析.pdf
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制
