diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/controller/CommoditiesController.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/controller/CommoditiesController.java index 6818749..c1c253f 100644 --- a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/controller/CommoditiesController.java +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/controller/CommoditiesController.java @@ -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); + } + } diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/controller/ManicuristController.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/controller/ManicuristController.java index d1cfd3b..e4279a6 100644 --- a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/controller/ManicuristController.java +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/controller/ManicuristController.java @@ -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); diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/controller/OrdersController.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/controller/OrdersController.java index cb1b859..773c09b 100644 --- a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/controller/OrdersController.java +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/controller/OrdersController.java @@ -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); + } diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/controller/UserController.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/controller/UserController.java index 61e5707..d202fcb 100644 --- a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/controller/UserController.java +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/controller/UserController.java @@ -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, "密码过短"); } //判断是否有特殊字符 diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/appointments/AppointmentsAddRequest.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/appointments/AppointmentsAddRequest.java index 873f12f..6778006 100644 --- a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/appointments/AppointmentsAddRequest.java +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/model/request/appointments/AppointmentsAddRequest.java @@ -51,6 +51,7 @@ public class AppointmentsAddRequest implements Serializable { * 美甲师名 */ private String manicuristName; + /** * 预约时间 */ diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/OrderItemsService.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/OrderItemsService.java index 1338f6b..7eace20 100644 --- a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/OrderItemsService.java +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/OrderItemsService.java @@ -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); } diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/OrdersService.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/OrdersService.java index c456401..84f6566 100644 --- a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/OrdersService.java +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/OrdersService.java @@ -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); } diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/impl/CommoditiesServiceImpl.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/impl/CommoditiesServiceImpl.java index 64091fb..5144953 100644 --- a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/impl/CommoditiesServiceImpl.java +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/impl/CommoditiesServiceImpl.java @@ -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); } diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/impl/OrderItemsServiceImpl.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/impl/OrderItemsServiceImpl.java index de508ac..829f12f 100644 --- a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/impl/OrderItemsServiceImpl.java +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/impl/OrderItemsServiceImpl.java @@ -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()); + } } diff --git a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/impl/OrdersServiceImpl.java b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/impl/OrdersServiceImpl.java index c0a99ca..4a8da31 100644 --- a/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/impl/OrdersServiceImpl.java +++ b/project/jiaqingjiayi/src/main/java/com/cj/jiaqingjiayi/service/impl/OrdersServiceImpl.java @@ -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; + } }