增加取消订单接口

增加根据id获取订单接口
增加获取我的订单接口
增加根据商品id查询商品接口
This commit is contained in:
gaomusan 2024-11-29 14:33:01 +08:00
parent 896d2a92a1
commit aa3cdb1191
10 changed files with 245 additions and 14 deletions

View File

@ -205,6 +205,18 @@ public class CommoditiesController {
// return ResultUtils.success(commoditiesVOPage);
// }
/**
*根据id获取商品
*/
@ApiOperation(value = "根据id获取商品信息")
@GetMapping("/getById/commodities")
public BaseResponse<CommoditiesVO> getCommoditiesById(@RequestParam Long id) {
ThrowUtils.throwIf(id < 0, ErrorCode.NULL_ERROR);
Commodities byId = commoditiesService.getById(id);
CommoditiesVO commoditiesVO = commoditiesService.getCommoditiesVO(byId);
return ResultUtils.success(commoditiesVO);
}
}

View File

@ -206,11 +206,9 @@ public class ManicuristController {
* 用于展示店铺信息
*/
@ApiOperation(value = "用户查询全部美甲师")
@PostMapping("/userQueryAll")
public BaseResponse<List<ManicuristVO>> UserQueryAllManicurist(@RequestBody UserManicuristQueryRequest userManicuristQueryRequest){
ThrowUtils.throwIf(userManicuristQueryRequest == null, ErrorCode.NULL_ERROR);
@GetMapping("/userQueryAll")
public BaseResponse<List<ManicuristVO>> UserQueryAllManicurist(@RequestParam Long businessId){
Integer businessId = userManicuristQueryRequest.getBusinessId();
QueryWrapper<Manicurist> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("businessId", businessId);
List<Manicurist> manicuristList = manicuristService.list(queryWrapper);

View File

@ -1,18 +1,22 @@
package com.cj.jiaqingjiayi.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.cj.jiaqingjiayi.common.BaseResponse;
import com.cj.jiaqingjiayi.common.ErrorCode;
import com.cj.jiaqingjiayi.common.ResultUtils;
import com.cj.jiaqingjiayi.contant.UserConstant;
import com.cj.jiaqingjiayi.exception.BusinessException;
import com.cj.jiaqingjiayi.model.domain.Commodities;
import com.cj.jiaqingjiayi.model.domain.OrderItems;
import com.cj.jiaqingjiayi.model.domain.Orders;
import com.cj.jiaqingjiayi.model.domain.User;
import com.cj.jiaqingjiayi.exception.ThrowUtils;
import com.cj.jiaqingjiayi.model.CommonRequest;
import com.cj.jiaqingjiayi.model.domain.*;
import com.cj.jiaqingjiayi.model.request.order.MyOrderQueryRequest;
import com.cj.jiaqingjiayi.model.request.order.OrderAddRequest;
import com.cj.jiaqingjiayi.model.request.order.OrderItemsAddRequest;
import com.cj.jiaqingjiayi.model.request.order.OrderQueryRequest;
import com.cj.jiaqingjiayi.model.vo.OrdersVO;
import com.cj.jiaqingjiayi.service.*;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@ -81,7 +85,7 @@ public class OrdersController {
BeanUtils.copyProperties(item, orderItems);
orderItemsService.validOrderItems(orderItems);
Long commoditiesId = orderItems.getCommoditiesId();
// 根据品设置价格
// 根据品设置价格
Commodities commodities = commoditiesService.getById(commoditiesId);
BigDecimal commoditiesPrice = BigDecimal.valueOf(commodities.getCommoditiesPrice());
orderItems.setPrice(commoditiesPrice);
@ -94,6 +98,76 @@ public class OrdersController {
return ResultUtils.success(orderId, "订单创建成功");
}
/**
* 取消订单
*/
@ApiOperation(value = "订单取消接口")
@PostMapping("/cancel")
public BaseResponse<Boolean> cancelOrder(@RequestBody CommonRequest commonRequest, HttpServletRequest request) {
Long orderId = commonRequest.getId();
if (orderId == null || orderId <= 0) {
throw new BusinessException(ErrorCode.PARAMS_ERROR);
}
//
Orders orders = ordersService.getById(orderId);
ThrowUtils.throwIf(orders == null, ErrorCode.NOT_FOUND_ERROR);
ThrowUtils.throwIf(orders.getPaymentStatus() != 0, ErrorCode.OPERATION_ERROR, "订单状态错误");
// 判断是否为自己的订单
User loginUser = userService.getLoginUser(request);
if (!orders.getUserId().equals(loginUser.getId())) {
throw new BusinessException(ErrorCode.NO_AUTH);
}
// 修改订单状态
orders.setPaymentStatus(3);
boolean update = ordersService.updateById(orders);
ThrowUtils.throwIf(!update, ErrorCode.SYSTEM_ERROR);
return ResultUtils.success(true);
}
/**
* 根据 id 获取订单信息仅管理员
*/
@ApiOperation(value = "根据 id 获取订单信息(仅管理员)")
@GetMapping("/get")
public BaseResponse<OrdersVO> getOrderVOById(@RequestParam Long id) {
if (id <= 0) {
throw new BusinessException(ErrorCode.PARAMS_ERROR);
}
Orders orders = ordersService.getById(id);
ThrowUtils.throwIf(orders == null, ErrorCode.NOT_FOUND_ERROR);
return ResultUtils.success(ordersService.getOrdersVO(orders));
}
/**
* 获取我的订单
*/
@ApiOperation(value = "获取自己的订单")
@PostMapping("/my/page")
public BaseResponse<Page<OrdersVO>> getMyOrders(@RequestBody MyOrderQueryRequest myOrderQueryRequest, HttpServletRequest request) {
if (myOrderQueryRequest == null) {
throw new BusinessException(ErrorCode.PARAMS_ERROR);
}
long current = myOrderQueryRequest.getCurrent();
long size = myOrderQueryRequest.getPageSize();
User loginUser = userService.getLoginUser(request);
OrderQueryRequest orderQueryRequest = new OrderQueryRequest();
BeanUtils.copyProperties(myOrderQueryRequest, orderQueryRequest);
QueryWrapper<Orders> queryWrapper = ordersService.getQueryWrapper(orderQueryRequest);
if (loginUser.getUserRole().equals(UserConstant.BUSINESS_ROLE)) {
// 商家获取订单
Business loginBusiness = businessService.getLoginBusiness(request);
queryWrapper.eq("businessId", loginBusiness.getId());
} else {
// 用户获取订单
queryWrapper.eq("userId", loginUser.getId());
}
Page<Orders> ordersPage = ordersService.page(new Page<>(current, size),
queryWrapper);
Page<OrdersVO> ordersVOPage = new Page<>(current, size, ordersPage.getTotal());
List<OrdersVO> ordersVOList = ordersService.getOrdersVO(ordersPage.getRecords());
ordersVOPage.setRecords(ordersVOList);
return ResultUtils.success(ordersVOPage);
}

View File

@ -128,7 +128,6 @@ public class UserController {
/**
* 分页获取用户列表仅管理员
*
* @return 用户列表
*/
@ApiOperation(value = "分页查询用户")
@ -183,7 +182,7 @@ public class UserController {
*/
@ApiOperation(value = "根据id获取用户")
@GetMapping("/getById")
public BaseResponse<User> getUserById(long id, HttpServletRequest request){
public BaseResponse<User> getUserById(@RequestParam Long id, HttpServletRequest request){
//判断是否为管理员
userService.isAdmin(request);
if(id < 0){
@ -239,8 +238,8 @@ public class UserController {
throw new BusinessException(ErrorCode.PARAMS_ERROR, "用户账号过短");
}
//判断密码是否小于6
if(userPassword.length() < 6){
//判断密码是否小于8
if(userPassword.length() < 8){
throw new BusinessException(ErrorCode.PARAMS_ERROR, "密码过短");
}
//判断是否有特殊字符

View File

@ -51,6 +51,7 @@ public class AppointmentsAddRequest implements Serializable {
* 美甲师名
*/
private String manicuristName;
/**
* 预约时间
*/

View File

@ -4,6 +4,7 @@ package com.cj.jiaqingjiayi.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.cj.jiaqingjiayi.model.domain.OrderItems;
import com.cj.jiaqingjiayi.model.domain.Orders;
import com.cj.jiaqingjiayi.model.vo.OrderItemsVO;
import java.util.List;
@ -18,4 +19,14 @@ public interface OrderItemsService extends IService<OrderItems> {
* 校验订单商品
*/
void validOrderItems(OrderItems orderItems);
/**
* 获取订单详情视图信息
*/
OrderItemsVO getOrderItemsVO(OrderItems orderItems);
/**
* 获取订单详情视图信息
*/
List<OrderItemsVO> getOrderItemsVO(List<OrderItems> orderItemsList);
}

View File

@ -1,9 +1,12 @@
package com.cj.jiaqingjiayi.service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.IService;
import com.cj.jiaqingjiayi.model.domain.OrderItems;
import com.cj.jiaqingjiayi.model.domain.Orders;
import com.cj.jiaqingjiayi.model.request.order.OrderQueryRequest;
import com.cj.jiaqingjiayi.model.vo.OrdersVO;
import java.util.List;
@ -25,4 +28,16 @@ public interface OrdersService extends IService<Orders> {
* 校验订单
*/
void validOrder(Orders orders);
/**
* 获取订单视图信息
*/
OrdersVO getOrdersVO(Orders orders);
List<OrdersVO> getOrdersVO(List<Orders> ordersList);
/**
* 获取查询条件
*/
QueryWrapper<Orders> getQueryWrapper(OrderQueryRequest orderQueryRequest);
}

View File

@ -109,7 +109,7 @@ public class CommoditiesServiceImpl extends ServiceImpl<CommoditiesMapper, Commo
}
long count = getCount(commodities);
CommoditiesVO commoditiesVO = new CommoditiesVO();
BeanUtils.copyProperties(commodities, commoditiesVO);
if (count > 0) {
commoditiesVO.setIsSpecification(1);
}

View File

@ -1,5 +1,6 @@
package com.cj.jiaqingjiayi.service.impl;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.cj.jiaqingjiayi.common.ErrorCode;
@ -8,13 +9,19 @@ import com.cj.jiaqingjiayi.exception.ThrowUtils;
import com.cj.jiaqingjiayi.mapper.OrderItemsMapper;
import com.cj.jiaqingjiayi.model.domain.Commodities;
import com.cj.jiaqingjiayi.model.domain.OrderItems;
import com.cj.jiaqingjiayi.model.vo.CommoditiesVO;
import com.cj.jiaqingjiayi.model.vo.OrderItemsVO;
import com.cj.jiaqingjiayi.service.CommoditiesService;
import com.cj.jiaqingjiayi.service.OrderItemsService;
import org.apache.commons.lang3.ObjectUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
* @author 高木
@ -41,6 +48,32 @@ public class OrderItemsServiceImpl extends ServiceImpl<OrderItemsMapper, OrderIt
throw new BusinessException(ErrorCode.PARAMS_ERROR, "商品错误");
}
}
@Override
public OrderItemsVO getOrderItemsVO(OrderItems orderItems) {
if (orderItems == null) {
return null;
}
OrderItemsVO orderItemsVO = new OrderItemsVO();
BeanUtils.copyProperties(orderItems, orderItemsVO);
// 关联查询商品信息
Long commoditiesId = orderItems.getCommoditiesId();
Commodities commodities = null;
if (commoditiesId != null && commoditiesId > 0) {
commodities = commoditiesService.getById(commoditiesId);
}
CommoditiesVO commoditiesVO = commoditiesService.getCommoditiesVO(commodities);
orderItemsVO.setCommoditiesVO(commoditiesVO);
return orderItemsVO;
}
@Override
public List<OrderItemsVO> getOrderItemsVO(List<OrderItems> orderItemsList) {
if (CollectionUtils.isEmpty(orderItemsList)) {
return new ArrayList<>();
}
return orderItemsList.stream().map(this::getOrderItemsVO).collect(Collectors.toList());
}
}

View File

@ -1,27 +1,40 @@
package com.cj.jiaqingjiayi.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.cj.jiaqingjiayi.common.ErrorCode;
import com.cj.jiaqingjiayi.contant.CommonConstant;
import com.cj.jiaqingjiayi.exception.BusinessException;
import com.cj.jiaqingjiayi.model.domain.Business;
import com.cj.jiaqingjiayi.model.domain.OrderItems;
import com.cj.jiaqingjiayi.model.domain.Orders;
import com.cj.jiaqingjiayi.model.request.order.OrderQueryRequest;
import com.cj.jiaqingjiayi.model.vo.BusinessVO;
import com.cj.jiaqingjiayi.model.vo.OrderItemsVO;
import com.cj.jiaqingjiayi.model.vo.OrdersVO;
import com.cj.jiaqingjiayi.service.BusinessService;
import com.cj.jiaqingjiayi.service.OrderItemsService;
import com.cj.jiaqingjiayi.service.OrdersService;
import com.cj.jiaqingjiayi.mapper.OrdersMapper;
import com.cj.jiaqingjiayi.utils.RegexUtils;
import com.cj.jiaqingjiayi.utils.SqlUtils;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import javax.naming.Name;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import java.util.stream.Collectors;
/**
* @author 高木
@ -35,6 +48,10 @@ public class OrdersServiceImpl extends ServiceImpl<OrdersMapper, Orders>
@Resource
private OrderItemsService orderItemsService;
@Resource
private BusinessService businessService;
@Transactional(rollbackFor = Exception.class)
@Override
public long addOrder(Orders orders, List<OrderItems> orderItemsList) {
@ -84,6 +101,77 @@ public class OrdersServiceImpl extends ServiceImpl<OrdersMapper, Orders>
throw new BusinessException(ErrorCode.PARAMS_ERROR, "参数不全");
}
}
@Override
public OrdersVO getOrdersVO(Orders orders) {
if (orders == null) {
return null;
}
OrdersVO ordersVO = new OrdersVO();
BeanUtils.copyProperties(orders, ordersVO);
// 关联查询商家信息
Long businessId = orders.getBusinessId();
Business business = null;
if (businessId != null && businessId > 0) {
business = businessService.getById(businessId);
}
BusinessVO businessVO = businessService.getBusinessVO(business);
ordersVO.setBusinessVO(businessVO);
// 关联查询订单详情信息
Long orderId = orders.getId();
QueryWrapper<OrderItems> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("orderId", orderId);
List<OrderItems> orderItemsList = orderItemsService.list(queryWrapper);
List<OrderItemsVO> orderItemsVOList = orderItemsService.getOrderItemsVO(orderItemsList);
ordersVO.setOrderItemsVOList(orderItemsVOList);
// 关联查询评价状态
// 设置商品数量
Integer number = 0;
for (OrderItemsVO detailsVO : orderItemsVOList) {
number += detailsVO.getQuantity();
}
ordersVO.setNumber(number);
return ordersVO;
}
@Override
public List<OrdersVO> getOrdersVO(List<Orders> ordersList) {
if (CollectionUtils.isEmpty(ordersList)) {
return new ArrayList<>();
}
return ordersList.stream().map(this::getOrdersVO).collect(Collectors.toList());
}
@Override
public QueryWrapper<Orders> getQueryWrapper(OrderQueryRequest orderQueryRequest) {
if (orderQueryRequest == null) {
throw new BusinessException(ErrorCode.PARAMS_ERROR, "请求参数为空");
}
Long id = orderQueryRequest.getId();
Long userId = orderQueryRequest.getUserId();
Long businessId = orderQueryRequest.getBusinessId();
String orderNumber = orderQueryRequest.getOrderNumber();
Integer claimStatus = orderQueryRequest.getClaimStatus();
Integer state = orderQueryRequest.getPaymentStatus();
String startTime = orderQueryRequest.getStartTime();
String endTime = orderQueryRequest.getEndTime();
String sortField = orderQueryRequest.getSortField();
String sortOrder = orderQueryRequest.getSortOrder();
QueryWrapper<Orders> queryWrapper = new QueryWrapper<>();
queryWrapper.like(ObjectUtils.isNotEmpty(id), "id", id);
queryWrapper.eq(ObjectUtils.isNotEmpty(userId), "userId", userId);
queryWrapper.eq(ObjectUtils.isNotEmpty(businessId), "businessId", businessId);
queryWrapper.eq(ObjectUtils.isNotEmpty(orderNumber), "orderNumber", orderNumber);
queryWrapper.eq(ObjectUtils.isNotEmpty(state), "paymentStatus", state);
queryWrapper.ge(claimStatus != null, "claimStatus", claimStatus);
queryWrapper.ge(StringUtils.isNotBlank(startTime), "createTime", startTime);
queryWrapper.le(StringUtils.isNotBlank(endTime), "createTime", endTime);
queryWrapper.orderBy(SqlUtils.validSortField(sortField), sortOrder.equals(CommonConstant.SORT_ORDER_ASC),
sortField);
return queryWrapper;
}
}