修正项目

This commit is contained in:
2024-01-07 01:10:08 +08:00
parent 2f29241806
commit b22014e976
943 changed files with 27699 additions and 28227 deletions

View File

@@ -0,0 +1,23 @@
package com.yovinchen.xlcs;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
/**
* ClassName: ServiceOrderApplication
* Package: com.yovinchen.xlcs
*
* @author yovinchen
* @Create 2023/10/11 19:09
*/
@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
public class ServiceOrderApplication {
public static void main(String[] args) {
SpringApplication.run(ServiceOrderApplication.class, args);
}
}

View File

@@ -0,0 +1,20 @@
package com.yovinchen.xlcs.order.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* <p>
* 购物车表 前端控制器
* </p>
*
* @author yovinchen
* @since 2023-10-12
*/
@RestController
@RequestMapping("/order/cart-info")
public class CartInfoController {
}

View File

@@ -0,0 +1,20 @@
package com.yovinchen.xlcs.order.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* <p>
* 订单配送表 前端控制器
* </p>
*
* @author yovinchen
* @since 2023-10-12
*/
@RestController
@RequestMapping("/order/order-deliver")
public class OrderDeliverController {
}

View File

@@ -0,0 +1,80 @@
package com.yovinchen.xlcs.order.controller;
import com.yovinchen.xlcs.common.auth.AuthContextHolder;
import com.yovinchen.xlcs.common.result.Result;
import com.yovinchen.xlcs.model.order.OrderInfo;
import com.yovinchen.xlcs.order.service.OrderInfoService;
import com.yovinchen.xlcs.vo.order.OrderConfirmVo;
import com.yovinchen.xlcs.vo.order.OrderSubmitVo;
import com.yovinchen.xlcs.vo.order.OrderUserQueryVo;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
/**
* <p>
* 订单 前端控制器
* </p>
*
* @author yovinchen
* @since 2023-10-12
*/
@RestController
@RequestMapping("/api/order")
public class OrderInfoController {
@Autowired
private OrderInfoService orderInfoService;
@ApiOperation(value = "订单查询")
@GetMapping("auth/findUserOrderPage/{page}/{limit}")
public Result findUserOrderPage(
@ApiParam(name = "page", value = "当前页码", required = true)
@PathVariable Long page,
@ApiParam(name = "limit", value = "每页记录数", required = true)
@PathVariable Long limit,
@ApiParam(name = "orderVo", value = "查询对象", required = false)
OrderUserQueryVo orderUserQueryVo) {
//获取userId
Long userId = AuthContextHolder.getUserId();
orderUserQueryVo.setUserId(userId);
//分页查询条件
Page<OrderInfo> pageParam = new Page<>(page, limit);
IPage<OrderInfo> pageModel = orderInfoService.getOrderInfoByUserIdPage(pageParam, orderUserQueryVo);
return Result.ok(pageModel);
}
@ApiOperation("确认订单")
@GetMapping("auth/confirmOrder")
public Result confirm() {
OrderConfirmVo orderConfirmVo = orderInfoService.confirmOrder();
return Result.ok(orderConfirmVo);
}
@ApiOperation("生成订单")
@PostMapping("auth/submitOrder")
public Result submitOrder(@RequestBody OrderSubmitVo orderParamVo) {
Long orderId = orderInfoService.submitOrder(orderParamVo);
return Result.ok(orderId);
}
@ApiOperation("获取订单详情")
@GetMapping("auth/getOrderInfoById/{orderId}")
public Result getOrderInfoById(@PathVariable("orderId") Long orderId) {
OrderInfo orderInfo = orderInfoService.getOrderInfoById(orderId);
return Result.ok(orderInfo);
}
@ApiOperation(value = "根据orderNo查询订单信息")
@GetMapping("inner/getOrderInfo/{orderNo}")
public OrderInfo getOrderInfo(@PathVariable("orderNo") String orderNo) {
return orderInfoService.getOrderInfoByOrderNo(orderNo);
}
}

View File

@@ -0,0 +1,20 @@
package com.yovinchen.xlcs.order.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* <p>
* 订单项信息 前端控制器
* </p>
*
* @author yovinchen
* @since 2023-10-12
*/
@RestController
@RequestMapping("/order/order-item")
public class OrderItemController {
}

View File

@@ -0,0 +1,20 @@
package com.yovinchen.xlcs.order.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* <p>
* 订单操作日志记录 前端控制器
* </p>
*
* @author yovinchen
* @since 2023-10-12
*/
@RestController
@RequestMapping("/order/order-log")
public class OrderLogController {
}

View File

@@ -0,0 +1,20 @@
package com.yovinchen.xlcs.order.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* <p>
* 订单退货申请 前端控制器
* </p>
*
* @author yovinchen
* @since 2023-10-12
*/
@RestController
@RequestMapping("/order/order-return-apply")
public class OrderReturnApplyController {
}

View File

@@ -0,0 +1,20 @@
package com.yovinchen.xlcs.order.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* <p>
* 退货原因表 前端控制器
* </p>
*
* @author yovinchen
* @since 2023-10-12
*/
@RestController
@RequestMapping("/order/order-return-reason")
public class OrderReturnReasonController {
}

View File

@@ -0,0 +1,20 @@
package com.yovinchen.xlcs.order.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* <p>
* 订单设置表 前端控制器
* </p>
*
* @author yovinchen
* @since 2023-10-12
*/
@RestController
@RequestMapping("/order/order-set")
public class OrderSetController {
}

View File

@@ -0,0 +1,20 @@
package com.yovinchen.xlcs.order.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* <p>
* 支付信息表 前端控制器
* </p>
*
* @author yovinchen
* @since 2023-10-12
*/
@RestController
@RequestMapping("/order/payment-info")
public class PaymentInfoController {
}

View File

@@ -0,0 +1,20 @@
package com.yovinchen.xlcs.order.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* <p>
* 退款信息表 前端控制器
* </p>
*
* @author yovinchen
* @since 2023-10-12
*/
@RestController
@RequestMapping("/order/refund-info")
public class RefundInfoController {
}

View File

@@ -0,0 +1,17 @@
package com.yovinchen.xlcs.order.mapper;
import com.yovinchen.xlcs.model.order.CartInfo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* <p>
* 购物车表 Mapper 接口
* </p>
*
* @author yovinchen
* @since 2023-10-12
*/
public interface CartInfoMapper extends BaseMapper<CartInfo> {
}

View File

@@ -0,0 +1,17 @@
package com.yovinchen.xlcs.order.mapper;
import com.yovinchen.xlcs.model.order.OrderDeliver;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* <p>
* 订单配送表 Mapper 接口
* </p>
*
* @author yovinchen
* @since 2023-10-12
*/
public interface OrderDeliverMapper extends BaseMapper<OrderDeliver> {
}

View File

@@ -0,0 +1,18 @@
package com.yovinchen.xlcs.order.mapper;
import com.yovinchen.xlcs.model.order.OrderInfo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.stereotype.Repository;
/**
* <p>
* 订单 Mapper 接口
* </p>
*
* @author yovinchen
* @since 2023-10-12
*/
@Repository
public interface OrderInfoMapper extends BaseMapper<OrderInfo> {
}

View File

@@ -0,0 +1,18 @@
package com.yovinchen.xlcs.order.mapper;
import com.yovinchen.xlcs.model.order.OrderItem;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.stereotype.Repository;
/**
* <p>
* 订单项信息 Mapper 接口
* </p>
*
* @author yovinchen
* @since 2023-10-12
*/
@Repository
public interface OrderItemMapper extends BaseMapper<OrderItem> {
}

View File

@@ -0,0 +1,17 @@
package com.yovinchen.xlcs.order.mapper;
import com.yovinchen.xlcs.model.order.OrderLog;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* <p>
* 订单操作日志记录 Mapper 接口
* </p>
*
* @author yovinchen
* @since 2023-10-12
*/
public interface OrderLogMapper extends BaseMapper<OrderLog> {
}

View File

@@ -0,0 +1,16 @@
package com.yovinchen.xlcs.order.mapper;
import com.yovinchen.xlcs.model.order.OrderReturnApply;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* <p>
* 订单退货申请 Mapper 接口
* </p>
*
* @author yovinchen
* @since 2023-10-12
*/
public interface OrderReturnApplyMapper extends BaseMapper<OrderReturnApply> {
}

View File

@@ -0,0 +1,16 @@
package com.yovinchen.xlcs.order.mapper;
import com.yovinchen.xlcs.model.order.OrderReturnReason;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* <p>
* 退货原因表 Mapper 接口
* </p>
*
* @author yovinchen
* @since 2023-10-12
*/
public interface OrderReturnReasonMapper extends BaseMapper<OrderReturnReason> {
}

View File

@@ -0,0 +1,16 @@
package com.yovinchen.xlcs.order.mapper;
import com.yovinchen.xlcs.model.order.OrderSet;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* <p>
* 订单设置表 Mapper 接口
* </p>
*
* @author yovinchen
* @since 2023-10-12
*/
public interface OrderSetMapper extends BaseMapper<OrderSet> {
}

View File

@@ -0,0 +1,16 @@
package com.yovinchen.xlcs.order.mapper;
import com.yovinchen.xlcs.model.order.PaymentInfo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* <p>
* 支付信息表 Mapper 接口
* </p>
*
* @author yovinchen
* @since 2023-10-12
*/
public interface PaymentInfoMapper extends BaseMapper<PaymentInfo> {
}

View File

@@ -0,0 +1,16 @@
package com.yovinchen.xlcs.order.mapper;
import com.yovinchen.xlcs.model.order.RefundInfo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* <p>
* 退款信息表 Mapper 接口
* </p>
*
* @author yovinchen
* @since 2023-10-12
*/
public interface RefundInfoMapper extends BaseMapper<RefundInfo> {
}

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yovinchen.xlcs.order.mapper.CartInfoMapper">
</mapper>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yovinchen.xlcs.order.mapper.OrderDeliverMapper">
</mapper>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yovinchen.xlcs.order.mapper.OrderInfoMapper">
</mapper>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yovinchen.xlcs.order.mapper.OrderItemMapper">
</mapper>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yovinchen.xlcs.order.mapper.OrderLogMapper">
</mapper>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yovinchen.xlcs.order.mapper.OrderReturnApplyMapper">
</mapper>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yovinchen.xlcs.order.mapper.OrderReturnReasonMapper">
</mapper>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yovinchen.xlcs.order.mapper.OrderSetMapper">
</mapper>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yovinchen.xlcs.order.mapper.PaymentInfoMapper">
</mapper>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yovinchen.xlcs.order.mapper.RefundInfoMapper">
</mapper>

View File

@@ -0,0 +1,44 @@
package com.yovinchen.xlcs.order.receiver;
import com.yovinchen.xlcs.mq.constant.MqConst;
import com.yovinchen.xlcs.order.service.OrderInfoService;
import com.rabbitmq.client.Channel;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.annotation.Exchange;
import org.springframework.amqp.rabbit.annotation.Queue;
import org.springframework.amqp.rabbit.annotation.QueueBinding;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;
import java.io.IOException;
/**
* ClassName: OrderReceiver
* Package: com.yovinchen.xlcs.order.receiver
*
* @author yovinchen
* @Create 2023/10/13 14:15
*/
@Component
public class OrderReceiver {
@Autowired
private OrderInfoService orderInfoService;
//订单支付成功,更新订单状态,扣减库存
@RabbitListener(bindings = @QueueBinding(
value = @Queue(value = MqConst.QUEUE_ORDER_PAY, durable = "true"),
exchange = @Exchange(value = MqConst.EXCHANGE_PAY_DIRECT),
key = {MqConst.ROUTING_PAY_SUCCESS}
))
public void orderPay(String orderNo,
Message message,
Channel channel) throws IOException {
if (!StringUtils.isEmpty(orderNo)) {
orderInfoService.orderPay(orderNo);
}
channel.basicAck(message.getMessageProperties().getDeliveryTag(),
false);
}
}

View File

@@ -0,0 +1,16 @@
package com.yovinchen.xlcs.order.service;
import com.yovinchen.xlcs.model.order.CartInfo;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
* 购物车表 服务类
* </p>
*
* @author yovinchen
* @since 2023-10-12
*/
public interface CartInfoService extends IService<CartInfo> {
}

View File

@@ -0,0 +1,16 @@
package com.yovinchen.xlcs.order.service;
import com.yovinchen.xlcs.model.order.OrderDeliver;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
* 订单配送表 服务类
* </p>
*
* @author yovinchen
* @since 2023-10-12
*/
public interface OrderDeliverService extends IService<OrderDeliver> {
}

View File

@@ -0,0 +1,67 @@
package com.yovinchen.xlcs.order.service;
import com.yovinchen.xlcs.model.order.OrderInfo;
import com.yovinchen.xlcs.vo.order.OrderConfirmVo;
import com.yovinchen.xlcs.vo.order.OrderSubmitVo;
import com.yovinchen.xlcs.vo.order.OrderUserQueryVo;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
* 订单 服务类
* </p>
*
* @author yovinchen
* @since 2023-10-12
*/
public interface OrderInfoService extends IService<OrderInfo> {
/**
* 确认订单
*
* @return
*/
OrderConfirmVo confirmOrder();
/**
* 生成订单
*
* @param orderParamVo
* @return
*/
Long submitOrder(OrderSubmitVo orderParamVo);
/**
* 获取订单详情
*
* @param orderId
* @return
*/
OrderInfo getOrderInfoById(Long orderId);
/**
* 根据orderNo查询订单信息
*
* @param orderNo
* @return
*/
OrderInfo getOrderInfoByOrderNo(String orderNo);
/**
* 订单支付成功,更新订单状态,扣减库存
*
* @param orderNo
*/
void orderPay(String orderNo);
/**
* 订单查询
*
* @param pageParam
* @param orderUserQueryVo
* @return
*/
IPage<OrderInfo> getOrderInfoByUserIdPage(Page<OrderInfo> pageParam, OrderUserQueryVo orderUserQueryVo);
}

View File

@@ -0,0 +1,16 @@
package com.yovinchen.xlcs.order.service;
import com.yovinchen.xlcs.model.order.OrderItem;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
* 订单项信息 服务类
* </p>
*
* @author yovinchen
* @since 2023-10-12
*/
public interface OrderItemService extends IService<OrderItem> {
}

View File

@@ -0,0 +1,16 @@
package com.yovinchen.xlcs.order.service;
import com.yovinchen.xlcs.model.order.OrderLog;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
* 订单操作日志记录 服务类
* </p>
*
* @author yovinchen
* @since 2023-10-12
*/
public interface OrderLogService extends IService<OrderLog> {
}

View File

@@ -0,0 +1,16 @@
package com.yovinchen.xlcs.order.service;
import com.yovinchen.xlcs.model.order.OrderReturnApply;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
* 订单退货申请 服务类
* </p>
*
* @author yovinchen
* @since 2023-10-12
*/
public interface OrderReturnApplyService extends IService<OrderReturnApply> {
}

View File

@@ -0,0 +1,16 @@
package com.yovinchen.xlcs.order.service;
import com.yovinchen.xlcs.model.order.OrderReturnReason;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
* 退货原因表 服务类
* </p>
*
* @author yovinchen
* @since 2023-10-12
*/
public interface OrderReturnReasonService extends IService<OrderReturnReason> {
}

View File

@@ -0,0 +1,16 @@
package com.yovinchen.xlcs.order.service;
import com.yovinchen.xlcs.model.order.OrderSet;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
* 订单设置表 服务类
* </p>
*
* @author yovinchen
* @since 2023-10-12
*/
public interface OrderSetService extends IService<OrderSet> {
}

View File

@@ -0,0 +1,16 @@
package com.yovinchen.xlcs.order.service;
import com.yovinchen.xlcs.model.order.PaymentInfo;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
* 支付信息表 服务类
* </p>
*
* @author yovinchen
* @since 2023-10-12
*/
public interface PaymentInfoService extends IService<PaymentInfo> {
}

View File

@@ -0,0 +1,16 @@
package com.yovinchen.xlcs.order.service;
import com.yovinchen.xlcs.model.order.RefundInfo;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
* 退款信息表 服务类
* </p>
*
* @author yovinchen
* @since 2023-10-12
*/
public interface RefundInfoService extends IService<RefundInfo> {
}

View File

@@ -0,0 +1,20 @@
package com.yovinchen.xlcs.order.service.impl;
import com.yovinchen.xlcs.model.order.CartInfo;
import com.yovinchen.xlcs.order.mapper.CartInfoMapper;
import com.yovinchen.xlcs.order.service.CartInfoService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* <p>
* 购物车表 服务实现类
* </p>
*
* @author yovinchen
* @since 2023-10-12
*/
@Service
public class CartInfoServiceImpl extends ServiceImpl<CartInfoMapper, CartInfo> implements CartInfoService {
}

View File

@@ -0,0 +1,20 @@
package com.yovinchen.xlcs.order.service.impl;
import com.yovinchen.xlcs.model.order.OrderDeliver;
import com.yovinchen.xlcs.order.mapper.OrderDeliverMapper;
import com.yovinchen.xlcs.order.service.OrderDeliverService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* <p>
* 订单配送表 服务实现类
* </p>
*
* @author yovinchen
* @since 2023-10-12
*/
@Service
public class OrderDeliverServiceImpl extends ServiceImpl<OrderDeliverMapper, OrderDeliver> implements OrderDeliverService {
}

View File

@@ -0,0 +1,532 @@
package com.yovinchen.xlcs.order.service.impl;
import com.yovinchen.xlcs.client.activity.ActivityFeignClient;
import com.yovinchen.xlcs.client.cart.CartFeignClient;
import com.yovinchen.xlcs.client.product.ProductFeignClient;
import com.yovinchen.xlcs.client.user.UserFeignClient;
import com.yovinchen.xlcs.common.auth.AuthContextHolder;
import com.yovinchen.xlcs.common.constant.RedisConst;
import com.yovinchen.xlcs.common.exception.xlcsException;
import com.yovinchen.xlcs.common.result.ResultCodeEnum;
import com.yovinchen.xlcs.common.utils.DateUtil;
import com.yovinchen.xlcs.enums.*;
import com.yovinchen.xlcs.model.activity.ActivityRule;
import com.yovinchen.xlcs.model.activity.CouponInfo;
import com.yovinchen.xlcs.model.order.CartInfo;
import com.yovinchen.xlcs.model.order.OrderInfo;
import com.yovinchen.xlcs.model.order.OrderItem;
import com.yovinchen.xlcs.enums.*;
import com.yovinchen.xlcs.mq.constant.MqConst;
import com.yovinchen.xlcs.mq.service.RabbitService;
import com.yovinchen.xlcs.order.mapper.OrderInfoMapper;
import com.yovinchen.xlcs.order.mapper.OrderItemMapper;
import com.yovinchen.xlcs.order.service.OrderInfoService;
import com.yovinchen.xlcs.order.service.OrderItemService;
import com.yovinchen.xlcs.vo.order.CartInfoVo;
import com.yovinchen.xlcs.vo.order.OrderConfirmVo;
import com.yovinchen.xlcs.vo.order.OrderSubmitVo;
import com.yovinchen.xlcs.vo.order.OrderUserQueryVo;
import com.yovinchen.xlcs.vo.product.SkuStockLockVo;
import com.yovinchen.xlcs.vo.user.LeaderAddressVo;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.BoundHashOperations;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.script.DefaultRedisScript;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
/**
* <p>
* 订单 服务实现类
* </p>
*
* @author yovinchen
* @since 2023-10-12
*/
@Service
public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo> implements OrderInfoService {
@Autowired
private UserFeignClient userFeignClient;
@Autowired
private CartFeignClient cartFeignClient;
@Autowired
private ActivityFeignClient activityFeignClient;
@Autowired
private ProductFeignClient productFeignClient;
@Autowired
private RedisTemplate redisTemplate;
@Autowired
private RabbitService rabbitService;
@Autowired
private OrderItemService orderItemService;
@Autowired
private OrderItemMapper orderItemMapper;
/**
* 确认订单
*
* @return
*/
@Override
public OrderConfirmVo confirmOrder() {
//获取用户id
Long userId = AuthContextHolder.getUserId();
//获取用户对应团长信息
LeaderAddressVo leaderAddressVo = userFeignClient.getUserAddressByUserId(userId);
//获取购物车里面选中的商品
List<CartInfo> cartInfoList = cartFeignClient.getCartCheckedList(userId);
//唯一标识订单
String orderNo = System.currentTimeMillis() + "";
redisTemplate.opsForValue().set(RedisConst.ORDER_REPEAT + orderNo, orderNo, 24, TimeUnit.HOURS);
//获取购物车满足条件活动和优惠卷信息
OrderConfirmVo orderConfirmVo = activityFeignClient.findCartActivityAndCoupon(cartInfoList, userId);
//封装其他值
orderConfirmVo.setLeaderAddressVo(leaderAddressVo);
orderConfirmVo.setOrderNo(orderNo);
return orderConfirmVo;
}
/**
* 生成订单
*
* @param orderParamVo
* @return
*/
@Override
public Long submitOrder(OrderSubmitVo orderParamVo) {
//第一步 设置给哪个用户生成订单 设置orderParamVo的userId
Long userId = AuthContextHolder.getUserId();
orderParamVo.setUserId(userId);
//第二步 订单不能重复提交,重复提交验证
// 通过redis + lua脚本进行判断
//// lua脚本保证原子性操作
//1 获取传递过来的订单 orderNo
String orderNo = orderParamVo.getOrderNo();
if (StringUtils.isEmpty(orderNo)) {
throw new xlcsException(ResultCodeEnum.ILLEGAL_REQUEST);
}
//2 拿着orderNo 到 redis进行查询
String script = "if(redis.call('get', KEYS[1]) == ARGV[1]) then return redis.call('del', KEYS[1]) else return 0 end";
//3 如果redis有相同orderNo表示正常提交订单把redis的orderNo删除
Boolean flag = (Boolean) redisTemplate.execute(new DefaultRedisScript(script, Boolean.class), Collections.singletonList(RedisConst.ORDER_REPEAT + orderNo), orderNo);
//4 如果redis没有相同orderNo表示重复提交了不能再往后进行
if (Boolean.FALSE.equals(flag)) {
throw new xlcsException(ResultCodeEnum.REPEAT_SUBMIT);
}
//第三步 验证库存 并且 锁定库存
// 比如仓库有10个西红柿我想买2个西红柿
// ** 验证库存,查询仓库里面是是否有充足西红柿
// ** 库存充足,库存锁定 2锁定目前没有真正减库存
//1、远程调用service-cart模块获取当前用户购物车商品选中的购物项
List<CartInfo> cartInfoList = cartFeignClient.getCartCheckedList(userId);
//2、购物车有很多商品商品不同类型重点处理普通类型商品
List<CartInfo> commonSkuList = cartInfoList.stream().filter(cartInfo -> Objects.equals(cartInfo.getSkuType(), SkuType.COMMON.getCode())).collect(Collectors.toList());
//3、把获取购物车里面普通类型商品list集合
// List<CartInfo>转换List<SkuStockLockVo>
if (!CollectionUtils.isEmpty(commonSkuList)) {
List<SkuStockLockVo> commonStockLockVoList = commonSkuList.stream().map(item -> {
SkuStockLockVo skuStockLockVo = new SkuStockLockVo();
skuStockLockVo.setSkuId(item.getSkuId());
skuStockLockVo.setSkuNum(item.getSkuNum());
return skuStockLockVo;
}).collect(Collectors.toList());
//4、远程调用service-product模块实现锁定商品
//// 验证库存并锁定库存,保证具备原子性
Boolean isLockSuccess = productFeignClient.checkAndLock(commonStockLockVoList, orderNo);
if (!isLockSuccess) {//库存锁定失败
throw new xlcsException(ResultCodeEnum.ORDER_STOCK_FALL);
}
}
//第四步 下单过程
//1 向两张表添加数据
// order_info 和 order_item
Long orderId = this.saveOrder(orderParamVo, cartInfoList);
//下单完成,删除购物车记录
//发送mq消息
rabbitService.sendMessage(MqConst.EXCHANGE_ORDER_DIRECT, MqConst.ROUTING_DELETE_CART, orderParamVo.getUserId());
//第五步 返回订单id
return orderId;
}
//下单过程向两张表添加数据
private Long saveOrder(OrderSubmitVo orderParamVo, List<CartInfo> cartInfoList) {
if (CollectionUtils.isEmpty(cartInfoList)) {
throw new xlcsException(ResultCodeEnum.DATA_ERROR);
}
//查询用户提货点和团长信息
Long userId = AuthContextHolder.getUserId();
LeaderAddressVo leaderAddressVo = userFeignClient.getUserAddressByUserId(userId);
if (leaderAddressVo == null) {
throw new xlcsException(ResultCodeEnum.DATA_ERROR);
}
//计算金额
//营销活动金额
Map<String, BigDecimal> activitySplitAmount = this.computeActivitySplitAmount(cartInfoList);
//优惠卷金额
Map<String, BigDecimal> couponInfoSplitAmount = this.computeCouponInfoSplitAmount(cartInfoList, orderParamVo.getCouponId());
//封装订单项数据
List<OrderItem> orderItemList = new ArrayList<>();
for (CartInfo cartInfo : cartInfoList) {
OrderItem orderItem = new OrderItem();
orderItem.setId(null);
orderItem.setCategoryId(cartInfo.getCategoryId());
if (cartInfo.getSkuType() == SkuType.COMMON.getCode()) {
orderItem.setSkuType(SkuType.COMMON);
} else {
orderItem.setSkuType(SkuType.SECKILL);
}
orderItem.setSkuId(cartInfo.getSkuId());
orderItem.setSkuName(cartInfo.getSkuName());
orderItem.setSkuPrice(cartInfo.getCartPrice());
orderItem.setImgUrl(cartInfo.getImgUrl());
orderItem.setSkuNum(cartInfo.getSkuNum());
orderItem.setLeaderId(orderParamVo.getLeaderId());
//营销活动金额
BigDecimal activityAmount = activitySplitAmount.get("activity:" + orderItem.getSkuId());
if (activityAmount == null) {
activityAmount = new BigDecimal(0);
}
orderItem.setSplitActivityAmount(activityAmount);
//优惠卷金额
BigDecimal couponAmount = couponInfoSplitAmount.get("coupon:" + orderItem.getSkuId());
if (couponAmount == null) {
couponAmount = new BigDecimal(0);
}
orderItem.setSplitCouponAmount(couponAmount);
//总金额
BigDecimal skuTotalAmount = orderItem.getSkuPrice().multiply(new BigDecimal(orderItem.getSkuNum()));
//优惠之后金额
BigDecimal splitTotalAmount = skuTotalAmount.subtract(activityAmount).subtract(couponAmount);
orderItem.setSplitTotalAmount(splitTotalAmount);
orderItemList.add(orderItem);
}
//封装订单OrderInfo数据
OrderInfo orderInfo = new OrderInfo();
orderInfo.setUserId(userId);//用户id
orderInfo.setOrderNo(orderParamVo.getOrderNo()); //订单号 唯一标识
orderInfo.setOrderStatus(OrderStatus.UNPAID); //订单状态,生成成功未支付
orderInfo.setLeaderId(orderParamVo.getLeaderId());//团长id
orderInfo.setLeaderName(leaderAddressVo.getLeaderName());//团长名称
orderInfo.setLeaderPhone(leaderAddressVo.getLeaderPhone());
orderInfo.setTakeName(leaderAddressVo.getTakeName());
orderInfo.setReceiverName(orderParamVo.getReceiverName());
orderInfo.setReceiverPhone(orderParamVo.getReceiverPhone());
orderInfo.setReceiverProvince(leaderAddressVo.getProvince());
orderInfo.setReceiverCity(leaderAddressVo.getCity());
orderInfo.setReceiverDistrict(leaderAddressVo.getDistrict());
orderInfo.setReceiverAddress(leaderAddressVo.getDetailAddress());
orderInfo.setWareId(cartInfoList.get(0).getWareId());
orderInfo.setProcessStatus(ProcessStatus.UNPAID);
//计算订单金额
BigDecimal originalTotalAmount = this.computeTotalAmount(cartInfoList);
BigDecimal activityAmount = activitySplitAmount.get("activity:total");
if (null == activityAmount) activityAmount = new BigDecimal(0);
BigDecimal couponAmount = couponInfoSplitAmount.get("coupon:total");
if (null == couponAmount) couponAmount = new BigDecimal(0);
BigDecimal totalAmount = originalTotalAmount.subtract(activityAmount).subtract(couponAmount);
//计算订单金额
orderInfo.setOriginalTotalAmount(originalTotalAmount);
orderInfo.setActivityAmount(activityAmount);
orderInfo.setCouponAmount(couponAmount);
orderInfo.setTotalAmount(totalAmount);
//计算团长佣金
BigDecimal profitRate = new BigDecimal(0);//orderSetService.getProfitRate();
BigDecimal commissionAmount = orderInfo.getTotalAmount().multiply(profitRate);
orderInfo.setCommissionAmount(commissionAmount);
//添加数据到订单基本信息表
baseMapper.insert(orderInfo);
//添加订单里面订单项
orderItemList.forEach(orderItem -> {
orderItem.setOrderId(orderInfo.getId());
orderItemService.save(orderItem);
});
//如果当前订单使用优惠卷,更新优惠卷状态
if (orderInfo.getCouponId() != null) {
activityFeignClient.updateCouponInfoUseStatus(orderInfo.getCouponId(), userId, orderInfo.getId());
}
//下单成功记录用户购物商品数量redis
//hash类型 key(userId) - field(skuId)-value(skuNum)
String orderSkuKey = RedisConst.ORDER_SKU_MAP + orderParamVo.getUserId();
BoundHashOperations<String, String, Integer> hashOperations = redisTemplate.boundHashOps(orderSkuKey);
cartInfoList.forEach(cartInfo -> {
if (Boolean.TRUE.equals(hashOperations.hasKey(cartInfo.getSkuId().toString()))) {
Integer orderSkuNum = hashOperations.get(cartInfo.getSkuId().toString()) + cartInfo.getSkuNum();
hashOperations.put(cartInfo.getSkuId().toString(), orderSkuNum);
}
});
redisTemplate.expire(orderSkuKey, DateUtil.getCurrentExpireTimes(), TimeUnit.SECONDS);
//订单id
return orderInfo.getId();
}
/**
* 获取订单详情
*
* @param orderId
* @return
*/
@Override
public OrderInfo getOrderInfoById(Long orderId) {
//根据orderId查询订单基本信息
OrderInfo orderInfo = baseMapper.selectById(orderId);
//根据orderId查询订单所有订单项list列表
List<OrderItem> orderItemList = orderItemMapper.selectList(new LambdaQueryWrapper<OrderItem>().eq(OrderItem::getOrderId, orderInfo.getId()));
//查询所有订单项封装到每个订单对象里面
orderInfo.setOrderItemList(orderItemList);
return orderInfo;
}
/**
* 根据orderNo查询订单信息
*
* @param orderNo
* @return
*/
@Override
public OrderInfo getOrderInfoByOrderNo(String orderNo) {
return baseMapper.selectOne(new LambdaQueryWrapper<OrderInfo>().eq(OrderInfo::getOrderNo, orderNo));
}
/**
* 订单支付成功,更新订单状态,扣减库存
*
* @param orderNo
*/
@Override
public void orderPay(String orderNo) {
//查询订单状态是否已经修改完成了支付状态
OrderInfo orderInfo = this.getOrderInfoByOrderNo(orderNo);
if (orderInfo == null || orderInfo.getOrderStatus() != OrderStatus.UNPAID) {
return;
}
//更新状态
this.updateOrderStatus(orderInfo.getId());
//扣减库存
rabbitService.sendMessage(MqConst.EXCHANGE_ORDER_DIRECT, MqConst.ROUTING_MINUS_STOCK, orderNo);
}
/**
* 订单查询
*
* @param pageParam
* @param orderUserQueryVo
* @return
*/
@Override
public IPage<OrderInfo> getOrderInfoByUserIdPage(Page<OrderInfo> pageParam, OrderUserQueryVo orderUserQueryVo) {
IPage<OrderInfo> pageModel = baseMapper.selectPage(pageParam, new LambdaQueryWrapper<OrderInfo>()
.eq(OrderInfo::getUserId, orderUserQueryVo.getUserId())
.eq(OrderInfo::getOrderStatus, orderUserQueryVo.getOrderStatus()));
//获取每个订单,把每个订单里面订单项查询封装
List<OrderInfo> orderInfoList = pageModel.getRecords();
for (OrderInfo orderInfo : orderInfoList) {
//根据订单id查询里面所有订单项列表
List<OrderItem> orderItemList = orderItemMapper.selectList(new LambdaQueryWrapper<OrderItem>()
.eq(OrderItem::getOrderId, orderInfo.getId()));
//把订单项集合封装到每个订单里面
orderInfo.setOrderItemList(orderItemList);
//封装订单状态名称
orderInfo.getParam().put("orderStatusName", orderInfo.getOrderStatus().getComment());
}
return pageModel;
}
//更新状态
private void updateOrderStatus(Long id) {
OrderInfo orderInfo = baseMapper.selectById(id);
orderInfo.setOrderStatus(OrderStatus.WAITING_DELEVER);
orderInfo.setProcessStatus(ProcessStatus.WAITING_DELEVER);
baseMapper.updateById(orderInfo);
}
//计算总金额
private BigDecimal computeTotalAmount(List<CartInfo> cartInfoList) {
BigDecimal total = new BigDecimal(0);
for (CartInfo cartInfo : cartInfoList) {
BigDecimal itemTotal = cartInfo.getCartPrice().multiply(new BigDecimal(cartInfo.getSkuNum()));
total = total.add(itemTotal);
}
return total;
}
/**
* 计算购物项分摊的优惠减少金额
* 打折:按折扣分担
* 现金:按比例分摊
*
* @param cartInfoParamList
* @return
*/
private Map<String, BigDecimal> computeActivitySplitAmount(List<CartInfo> cartInfoParamList) {
Map<String, BigDecimal> activitySplitAmountMap = new HashMap<>();
//促销活动相关信息
List<CartInfoVo> cartInfoVoList = activityFeignClient.findCartActivityList(cartInfoParamList);
//活动总金额
BigDecimal activityReduceAmount = new BigDecimal(0);
if (!CollectionUtils.isEmpty(cartInfoVoList)) {
for (CartInfoVo cartInfoVo : cartInfoVoList) {
ActivityRule activityRule = cartInfoVo.getActivityRule();
List<CartInfo> cartInfoList = cartInfoVo.getCartInfoList();
if (null != activityRule) {
//优惠金额, 按比例分摊
BigDecimal reduceAmount = activityRule.getReduceAmount();
activityReduceAmount = activityReduceAmount.add(reduceAmount);
if (cartInfoList.size() == 1) {
activitySplitAmountMap.put("activity:" + cartInfoList.get(0).getSkuId(), reduceAmount);
} else {
//总金额
BigDecimal originalTotalAmount = new BigDecimal(0);
for (CartInfo cartInfo : cartInfoList) {
BigDecimal skuTotalAmount = cartInfo.getCartPrice().multiply(new BigDecimal(cartInfo.getSkuNum()));
originalTotalAmount = originalTotalAmount.add(skuTotalAmount);
}
//记录除最后一项是所有分摊金额, 最后一项=总的 - skuPartReduceAmount
BigDecimal skuPartReduceAmount = new BigDecimal(0);
if (activityRule.getActivityType() == ActivityType.FULL_REDUCTION) {
for (int i = 0, len = cartInfoList.size(); i < len; i++) {
CartInfo cartInfo = cartInfoList.get(i);
if (i < len - 1) {
BigDecimal skuTotalAmount = cartInfo.getCartPrice().multiply(new BigDecimal(cartInfo.getSkuNum()));
//sku分摊金额
BigDecimal skuReduceAmount = skuTotalAmount.divide(originalTotalAmount, 2, RoundingMode.HALF_UP).multiply(reduceAmount);
activitySplitAmountMap.put("activity:" + cartInfo.getSkuId(), skuReduceAmount);
skuPartReduceAmount = skuPartReduceAmount.add(skuReduceAmount);
} else {
BigDecimal skuReduceAmount = reduceAmount.subtract(skuPartReduceAmount);
activitySplitAmountMap.put("activity:" + cartInfo.getSkuId(), skuReduceAmount);
}
}
} else {
for (int i = 0, len = cartInfoList.size(); i < len; i++) {
CartInfo cartInfo = cartInfoList.get(i);
if (i < len - 1) {
BigDecimal skuTotalAmount = cartInfo.getCartPrice().multiply(new BigDecimal(cartInfo.getSkuNum()));
//sku分摊金额
BigDecimal skuDiscountTotalAmount = skuTotalAmount.multiply(activityRule.getBenefitDiscount().divide(new BigDecimal("10")));
BigDecimal skuReduceAmount = skuTotalAmount.subtract(skuDiscountTotalAmount);
activitySplitAmountMap.put("activity:" + cartInfo.getSkuId(), skuReduceAmount);
skuPartReduceAmount = skuPartReduceAmount.add(skuReduceAmount);
} else {
BigDecimal skuReduceAmount = reduceAmount.subtract(skuPartReduceAmount);
activitySplitAmountMap.put("activity:" + cartInfo.getSkuId(), skuReduceAmount);
}
}
}
}
}
}
}
activitySplitAmountMap.put("activity:total", activityReduceAmount);
return activitySplitAmountMap;
}
//优惠卷优惠金额
private Map<String, BigDecimal> computeCouponInfoSplitAmount(List<CartInfo> cartInfoList, Long couponId) {
Map<String, BigDecimal> couponInfoSplitAmountMap = new HashMap<>();
if (null == couponId) return couponInfoSplitAmountMap;
CouponInfo couponInfo = activityFeignClient.findRangeSkuIdList(cartInfoList, couponId);
if (null != couponInfo) {
//sku对应的订单明细
Map<Long, CartInfo> skuIdToCartInfoMap = new HashMap<>();
for (CartInfo cartInfo : cartInfoList) {
skuIdToCartInfoMap.put(cartInfo.getSkuId(), cartInfo);
}
//优惠券对应的skuId列表
List<Long> skuIdList = couponInfo.getSkuIdList();
if (CollectionUtils.isEmpty(skuIdList)) {
return couponInfoSplitAmountMap;
}
//优惠券优化总金额
BigDecimal reduceAmount = couponInfo.getAmount();
if (skuIdList.size() == 1) {
//sku的优化金额
couponInfoSplitAmountMap.put("coupon:" + skuIdToCartInfoMap.get(skuIdList.get(0)).getSkuId(), reduceAmount);
} else {
//总金额
BigDecimal originalTotalAmount = new BigDecimal(0);
for (Long skuId : skuIdList) {
CartInfo cartInfo = skuIdToCartInfoMap.get(skuId);
BigDecimal skuTotalAmount = cartInfo.getCartPrice().multiply(new BigDecimal(cartInfo.getSkuNum()));
originalTotalAmount = originalTotalAmount.add(skuTotalAmount);
}
//记录除最后一项是所有分摊金额, 最后一项=总的 - skuPartReduceAmount
BigDecimal skuPartReduceAmount = new BigDecimal(0);
if (couponInfo.getCouponType() == CouponType.CASH || couponInfo.getCouponType() == CouponType.FULL_REDUCTION) {
for (int i = 0, len = skuIdList.size(); i < len; i++) {
CartInfo cartInfo = skuIdToCartInfoMap.get(skuIdList.get(i));
if (i < len - 1) {
BigDecimal skuTotalAmount = cartInfo.getCartPrice().multiply(new BigDecimal(cartInfo.getSkuNum()));
//sku分摊金额
BigDecimal skuReduceAmount = skuTotalAmount.divide(originalTotalAmount, 2, RoundingMode.HALF_UP).multiply(reduceAmount);
couponInfoSplitAmountMap.put("coupon:" + cartInfo.getSkuId(), skuReduceAmount);
skuPartReduceAmount = skuPartReduceAmount.add(skuReduceAmount);
} else {
BigDecimal skuReduceAmount = reduceAmount.subtract(skuPartReduceAmount);
couponInfoSplitAmountMap.put("coupon:" + cartInfo.getSkuId(), skuReduceAmount);
}
}
}
}
couponInfoSplitAmountMap.put("coupon:total", couponInfo.getAmount());
}
return couponInfoSplitAmountMap;
}
}

View File

@@ -0,0 +1,20 @@
package com.yovinchen.xlcs.order.service.impl;
import com.yovinchen.xlcs.model.order.OrderItem;
import com.yovinchen.xlcs.order.mapper.OrderItemMapper;
import com.yovinchen.xlcs.order.service.OrderItemService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* <p>
* 订单项信息 服务实现类
* </p>
*
* @author yovinchen
* @since 2023-10-12
*/
@Service
public class OrderItemServiceImpl extends ServiceImpl<OrderItemMapper, OrderItem> implements OrderItemService {
}

View File

@@ -0,0 +1,20 @@
package com.yovinchen.xlcs.order.service.impl;
import com.yovinchen.xlcs.model.order.OrderLog;
import com.yovinchen.xlcs.order.mapper.OrderLogMapper;
import com.yovinchen.xlcs.order.service.OrderLogService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* <p>
* 订单操作日志记录 服务实现类
* </p>
*
* @author yovinchen
* @since 2023-10-12
*/
@Service
public class OrderLogServiceImpl extends ServiceImpl<OrderLogMapper, OrderLog> implements OrderLogService {
}

View File

@@ -0,0 +1,20 @@
package com.yovinchen.xlcs.order.service.impl;
import com.yovinchen.xlcs.model.order.OrderReturnApply;
import com.yovinchen.xlcs.order.mapper.OrderReturnApplyMapper;
import com.yovinchen.xlcs.order.service.OrderReturnApplyService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* <p>
* 订单退货申请 服务实现类
* </p>
*
* @author yovinchen
* @since 2023-10-12
*/
@Service
public class OrderReturnApplyServiceImpl extends ServiceImpl<OrderReturnApplyMapper, OrderReturnApply> implements OrderReturnApplyService {
}

View File

@@ -0,0 +1,20 @@
package com.yovinchen.xlcs.order.service.impl;
import com.yovinchen.xlcs.model.order.OrderReturnReason;
import com.yovinchen.xlcs.order.mapper.OrderReturnReasonMapper;
import com.yovinchen.xlcs.order.service.OrderReturnReasonService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* <p>
* 退货原因表 服务实现类
* </p>
*
* @author yovinchen
* @since 2023-10-12
*/
@Service
public class OrderReturnReasonServiceImpl extends ServiceImpl<OrderReturnReasonMapper, OrderReturnReason> implements OrderReturnReasonService {
}

View File

@@ -0,0 +1,20 @@
package com.yovinchen.xlcs.order.service.impl;
import com.yovinchen.xlcs.model.order.OrderSet;
import com.yovinchen.xlcs.order.mapper.OrderSetMapper;
import com.yovinchen.xlcs.order.service.OrderSetService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* <p>
* 订单设置表 服务实现类
* </p>
*
* @author yovinchen
* @since 2023-10-12
*/
@Service
public class OrderSetServiceImpl extends ServiceImpl<OrderSetMapper, OrderSet> implements OrderSetService {
}

View File

@@ -0,0 +1,20 @@
package com.yovinchen.xlcs.order.service.impl;
import com.yovinchen.xlcs.model.order.PaymentInfo;
import com.yovinchen.xlcs.order.mapper.PaymentInfoMapper;
import com.yovinchen.xlcs.order.service.PaymentInfoService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* <p>
* 支付信息表 服务实现类
* </p>
*
* @author yovinchen
* @since 2023-10-12
*/
@Service
public class PaymentInfoServiceImpl extends ServiceImpl<PaymentInfoMapper, PaymentInfo> implements PaymentInfoService {
}

View File

@@ -0,0 +1,20 @@
package com.yovinchen.xlcs.order.service.impl;
import com.yovinchen.xlcs.model.order.RefundInfo;
import com.yovinchen.xlcs.order.mapper.RefundInfoMapper;
import com.yovinchen.xlcs.order.service.RefundInfoService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* <p>
* 退款信息表 服务实现类
* </p>
*
* @author yovinchen
* @since 2023-10-12
*/
@Service
public class RefundInfoServiceImpl extends ServiceImpl<RefundInfoMapper, RefundInfo> implements RefundInfoService {
}

View File

@@ -0,0 +1,11 @@
server:
port: 8209
spring:
application:
name: service-order
cloud:
nacos:
discovery:
server-addr: 82.157.68.223:8848
username: nacos
password: nacos

View File

@@ -0,0 +1,24 @@
spring:
cloud:
nacos:
config:
namespace: dd5265c5-8290-45bc-9d07-395c14c977d3
server-addr: 82.157.68.223:8848
group: service
username: nacos
password: nacos
enabled: true
file-extension: yml
extension-configs:
- data-id: common.yml
group: common
refresh: true
- data-id: service-redis.yml
group: common
refresh: true
- data-id: service-rabbitmq.yml
group: common
refresh: true
- data-id: service-openfeign.yml
group: common
refresh: true