diff --git a/nla-coupon-service/src/main/java/cn/nla/coupon/controller/CouponTaskController.java b/nla-coupon-service/src/main/java/cn/nla/coupon/controller/CouponTaskController.java
new file mode 100644
index 0000000..d08e970
--- /dev/null
+++ b/nla-coupon-service/src/main/java/cn/nla/coupon/controller/CouponTaskController.java
@@ -0,0 +1,23 @@
+package cn.nla.coupon.controller;
+
+
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 优惠券记录锁定任务表 前端控制器
+ *
+ *
+ * @author YJs
+ * @since 2024-08-14
+ */
+@Api(tags = "优惠券记录锁定任务控制器")
+@RestController
+@RequestMapping("/cop/couponTask/v1")
+public class CouponTaskController {
+
+}
+
diff --git a/nla-coupon-service/src/main/java/cn/nla/coupon/mapper/CouponTaskMapper.java b/nla-coupon-service/src/main/java/cn/nla/coupon/mapper/CouponTaskMapper.java
new file mode 100644
index 0000000..e5e0a8d
--- /dev/null
+++ b/nla-coupon-service/src/main/java/cn/nla/coupon/mapper/CouponTaskMapper.java
@@ -0,0 +1,23 @@
+package cn.nla.coupon.mapper;
+
+import cn.nla.coupon.model.entity.CouponTaskEntity;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ *
+ * 优惠券记录锁定任务表 Mapper 接口
+ *
+ *
+ * @author YJs
+ * @since 2024-08-14
+ */
+public interface CouponTaskMapper extends BaseMapper {
+
+ /**
+ * 批量插入
+ */
+ int insertBatch(@Param("couponTaskList") List couponTaskList);
+}
diff --git a/nla-coupon-service/src/main/java/cn/nla/coupon/model/entity/CouponTaskEntity.java b/nla-coupon-service/src/main/java/cn/nla/coupon/model/entity/CouponTaskEntity.java
new file mode 100644
index 0000000..2c3c70d
--- /dev/null
+++ b/nla-coupon-service/src/main/java/cn/nla/coupon/model/entity/CouponTaskEntity.java
@@ -0,0 +1,50 @@
+package cn.nla.coupon.model.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ *
+ * 优惠券记录锁定任务表
+ *
+ *
+ * @author YJs
+ * @since 2024-08-14
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@TableName("coupon_task")
+public class CouponTaskEntity implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+
+ /**
+ * 优惠券记录id
+ */
+ private Long couponRecordId;
+
+ /**
+ * 创建时间
+ */
+ private Date createTime;
+
+ /**
+ * 订单号
+ */
+ private String outTradeNo;
+
+ /**
+ * 锁定状态 锁定LOCK-完成FINISH 取消CANCEL
+ */
+ private String lockState;
+
+
+}
diff --git a/nla-coupon-service/src/main/java/cn/nla/coupon/service/CouponTaskService.java b/nla-coupon-service/src/main/java/cn/nla/coupon/service/CouponTaskService.java
new file mode 100644
index 0000000..2feb540
--- /dev/null
+++ b/nla-coupon-service/src/main/java/cn/nla/coupon/service/CouponTaskService.java
@@ -0,0 +1,16 @@
+package cn.nla.coupon.service;
+
+import cn.nla.coupon.model.entity.CouponTaskEntity;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 优惠券记录锁定任务表 服务类
+ *
+ *
+ * @author YJs
+ * @since 2024-08-14
+ */
+public interface CouponTaskService extends IService {
+
+}
diff --git a/nla-coupon-service/src/main/java/cn/nla/coupon/service/impl/CouponTaskServiceImpl.java b/nla-coupon-service/src/main/java/cn/nla/coupon/service/impl/CouponTaskServiceImpl.java
new file mode 100644
index 0000000..9a9ec31
--- /dev/null
+++ b/nla-coupon-service/src/main/java/cn/nla/coupon/service/impl/CouponTaskServiceImpl.java
@@ -0,0 +1,20 @@
+package cn.nla.coupon.service.impl;
+
+import cn.nla.coupon.model.entity.CouponTaskEntity;
+import cn.nla.coupon.mapper.CouponTaskMapper;
+import cn.nla.coupon.service.CouponTaskService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 优惠券记录锁定任务表 服务实现类
+ *
+ *
+ * @author YJs
+ * @since 2024-08-14
+ */
+@Service
+public class CouponTaskServiceImpl extends ServiceImpl implements CouponTaskService {
+
+}
diff --git a/nla-coupon-service/src/main/resources/application.yml b/nla-coupon-service/src/main/resources/application.yml
index cef309b..5b5f297 100644
--- a/nla-coupon-service/src/main/resources/application.yml
+++ b/nla-coupon-service/src/main/resources/application.yml
@@ -3,43 +3,51 @@ server:
spring:
application:
name: nla-coupon-service
+ # 缓存
redis:
host: 127.0.0.1
port: 6379
database: 0
password: yuan123456
+ #数据库配置
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://117.72.43.105:3306/p_nla_coupon?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai
username: root
password: Yuan625621105.
+ #注册中心地址
cloud:
nacos:
discovery:
server-addr: 117.72.43.105:8848
-# username: nacos
-# password: sW5U%pxecL#p
-# namespace: yjs
+ # username: nacos
+ # password: sW5U%pxecL#p
+ # namespace: yjs
+ #消息队列
rabbitmq:
- host: 192.168.30.130
- port: 5672
- virtual-host: /
- password: admin
- username: admin
- listener:
+ host: 192.168.30.130
+ port: 5672
+ virtual-host: /
+ password: admin
+ username: admin
+ #开启手动确认消息
+ listener:
simple:
acknowledge-mode: manual
+#配置plus打印sql⽇志
mybatis-plus:
configuration:
log-impl:
org.apache.ibatis.logging.stdout.StdOutImpl
+#设置⽇志级别,ERROR/WARN/INFO/DEBUG,默认是INFO以上才显示
#logging:
# level:
# root: INFO
+#seata配置
#seata:
# tx-service-group: ${spring.application.name}-group
# service:
@@ -49,11 +57,18 @@ mybatis-plus:
# nla-coupon-service-group: nla
+##自定义消息队列配置,发送锁定库存消息-》延迟exchange-》lock.queue-》死信exchange-》release.queue
mq:
config:
- coupon_release_delay_queue: coupon.release.delay.queue
- coupon_release_queue: coupon.release.queue
- coupon_event_exchange: coupon.event.exchange
- coupon_release_delay_routing_key: coupon.release.delay.routing.key
- coupon_release_routing_key: coupon.release.routing.key
- ttl: 6000
+ #延迟队列,不能被监听消费
+ coupon_release_delay_queue: coupon.release.delay.queue
+ #延迟队列的消息过期后转发的队列
+ coupon_release_queue: coupon.release.queue
+ #交换机
+ coupon_event_exchange: coupon.event.exchange
+ #进入延迟队列的路由key
+ coupon_release_delay_routing_key: coupon.release.delay.routing.key
+ #消息过期,进入释放死信队列的key
+ coupon_release_routing_key: coupon.release.routing.key
+ #消息过期时间,毫秒,临时改为6分钟
+ ttl: 360000
diff --git a/nla-coupon-service/src/main/resources/application_m.yml b/nla-coupon-service/src/main/resources/application_m.yml
deleted file mode 100644
index c2b61c2..0000000
--- a/nla-coupon-service/src/main/resources/application_m.yml
+++ /dev/null
@@ -1,74 +0,0 @@
-server:
- port: 9002
-spring:
- application:
- name: nla-coupon-service
- # 缓存
- redis:
- host: 127.0.0.1
- port: 6379
- database: 0
- password: yuan123456
- #数据库配置
- datasource:
- driver-class-name: com.mysql.cj.jdbc.Driver
- url: jdbc:mysql://117.72.43.105:3306/p_nla_coupon?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai
- username: root
- password: Yuan625621105.
- #注册中心地址
- cloud:
- nacos:
- discovery:
- server-addr: 117.72.43.105:8848
-# username: nacos
-# password: sW5U%pxecL#p
-# namespace: yjs
-
- #消息队列
- rabbitmq:
- host: 192.168.30.130
- port: 5672
- virtual-host: /
- password: admin
- username: admin
- #开启手动确认消息
- listener:
- simple:
- acknowledge-mode: manual
-
-#配置plus打印sql⽇志
-mybatis-plus:
- configuration:
- log-impl:
- org.apache.ibatis.logging.stdout.StdOutImpl
-#设置⽇志级别,ERROR/WARN/INFO/DEBUG,默认是INFO以上才显示
-#logging:
-# level:
-# root: INFO
-
-
-#seata配置
-#seata:
-# tx-service-group: ${spring.application.name}-group
-# service:
-# grouplist:
-# nla: 127.0.0.1:8091
-# vgroup-mapping:
-# nla-coupon-service-group: nla
-
-
-##自定义消息队列配置,发送锁定库存消息-》延迟exchange-》lock.queue-》死信exchange-》release.queue
-mq:
- config:
- #延迟队列,不能被监听消费
- coupon_release_delay_queue: coupon.release.delay.queue
- #延迟队列的消息过期后转发的队列
- coupon_release_queue: coupon.release.queue
- #交换机
- coupon_event_exchange: coupon.event.exchange
- #进入延迟队列的路由key
- coupon_release_delay_routing_key: coupon.release.delay.routing.key
- #消息过期,进入释放死信队列的key
- coupon_release_routing_key: coupon.release.routing.key
- #消息过期时间,毫秒,临时改为6分钟
- ttl: 360000
diff --git a/nla-coupon-service/src/main/resources/mapper/CouponTaskMapper.xml b/nla-coupon-service/src/main/resources/mapper/CouponTaskMapper.xml
new file mode 100644
index 0000000..6db9271
--- /dev/null
+++ b/nla-coupon-service/src/main/resources/mapper/CouponTaskMapper.xml
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ id, coupon_record_id, create_time, out_trade_no, lock_state
+
+
+
+
+ coupon_record_id, create_time, out_trade_no, lock_state
+
+
+
+ insert into coupon_task
+ (
+
+ )
+ values
+
+ (
+ #{item.couponRecordId},
+ #{item.createTime},
+ #{item.outTradeNo},
+ #{item.lockState}
+ )
+
+
+
diff --git a/nla-order-service/src/main/java/cn/nla/order/controller/ProductOrderController.java b/nla-order-service/src/main/java/cn/nla/order/controller/ProductOrderController.java
new file mode 100644
index 0000000..dcf6a55
--- /dev/null
+++ b/nla-order-service/src/main/java/cn/nla/order/controller/ProductOrderController.java
@@ -0,0 +1,85 @@
+package cn.nla.order.controller;
+
+
+import cn.nla.common.enums.BizCodeEnum;
+import cn.nla.common.enums.ClientType;
+import cn.nla.common.enums.ProductOrderPayTypeEnum;
+import cn.nla.common.util.JsonData;
+import cn.nla.order.model.request.ConfirmOrderRequest;
+import cn.nla.order.service.ProductOrderService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+
+/**
+ *
+ * 订单表 前端控制器
+ *
+ *
+ * @author YJs
+ * @since 2024-08-13
+ */
+@Api(tags = "订单控制器")
+@Slf4j
+@RestController
+@RequestMapping("/odr/product/v1")
+public class ProductOrderController {
+ @Resource
+ private ProductOrderService orderService;
+ /**
+ * 查询订单状态
+ *
+ * 此接口没有登录拦截,可以增加一个秘钥进行rpc通信
+ */
+ @ApiOperation("查询订单状态")
+ @GetMapping("query_state")
+ public JsonData queryProductOrderState(@ApiParam("订单号") @RequestParam("out_trade_no")String outTradeNo){
+ log.info("获取订单查询: {}",outTradeNo);
+ String state = orderService.queryProductOrderState(outTradeNo);
+ return StringUtils.isBlank(state)?JsonData.buildResult(BizCodeEnum.ORDER_CONFIRM_NOT_EXIST):JsonData.buildSuccess(state);
+
+ }
+
+ @ApiOperation("提交订单")
+ @PostMapping("confirm")
+ public void confirmOrder(@ApiParam("订单对象") @RequestBody ConfirmOrderRequest orderRequest, HttpServletResponse response) {
+ JsonData jsonData = orderService.confirmOrder(orderRequest);
+ if (jsonData.getCode() == 0) {
+ String client = orderRequest.getClientType();
+ String payType = orderRequest.getPayType();
+ //如果是支付宝网页支付,都是跳转网页,APP除外
+ if (payType.equalsIgnoreCase(ProductOrderPayTypeEnum.ALIPAY.name())) {
+ log.info("创建支付宝订单成功:{}", orderRequest.toString());
+ if (client.equalsIgnoreCase(ClientType.H5.name())) {
+ writeData(response, jsonData);
+ } else if (client.equalsIgnoreCase(ClientType.APP.name())) {
+ //APP SDK支付 TODO
+ }
+ } else if (payType.equalsIgnoreCase(ProductOrderPayTypeEnum.WECHAT.name())) {
+ //微信支付 TODO
+ }
+ } else {
+ log.error("创建订单失败{}", jsonData);
+ }
+ }
+
+
+ private void writeData(HttpServletResponse response, JsonData jsonData) {
+ try {
+ response.setContentType("text/html;charset=UTF8");
+ response.getWriter().write(jsonData.getData().toString());
+ response.getWriter().flush();
+ response.getWriter().close();
+ } catch (IOException e) {
+ log.error("写出Html异常", e);
+ }
+ }
+}
+
diff --git a/nla-order-service/src/main/java/cn/nla/order/controller/ProductOrderItemController.java b/nla-order-service/src/main/java/cn/nla/order/controller/ProductOrderItemController.java
new file mode 100644
index 0000000..7cb0da8
--- /dev/null
+++ b/nla-order-service/src/main/java/cn/nla/order/controller/ProductOrderItemController.java
@@ -0,0 +1,23 @@
+package cn.nla.order.controller;
+
+
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 订单项表 前端控制器
+ *
+ *
+ * @author YJs
+ * @since 2024-08-13
+ */
+@Api(tags = "订单项控制器")
+@RestController
+@RequestMapping("/odr/productItem")
+public class ProductOrderItemController {
+
+}
+
diff --git a/nla-order-service/src/main/java/cn/nla/order/mapper/ProductOrderItemMapper.java b/nla-order-service/src/main/java/cn/nla/order/mapper/ProductOrderItemMapper.java
new file mode 100644
index 0000000..26204d3
--- /dev/null
+++ b/nla-order-service/src/main/java/cn/nla/order/mapper/ProductOrderItemMapper.java
@@ -0,0 +1,16 @@
+package cn.nla.order.mapper;
+
+import cn.nla.order.model.entity.ProductOrderItemEntity;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 订单项表 Mapper 接口
+ *
+ *
+ * @author YJs
+ * @since 2024-08-13
+ */
+public interface ProductOrderItemMapper extends BaseMapper {
+
+}
diff --git a/nla-order-service/src/main/java/cn/nla/order/mapper/ProductOrderMapper.java b/nla-order-service/src/main/java/cn/nla/order/mapper/ProductOrderMapper.java
new file mode 100644
index 0000000..2b29f37
--- /dev/null
+++ b/nla-order-service/src/main/java/cn/nla/order/mapper/ProductOrderMapper.java
@@ -0,0 +1,16 @@
+package cn.nla.order.mapper;
+
+import cn.nla.order.model.entity.ProductOrderEntity;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 订单表 Mapper 接口
+ *
+ *
+ * @author YJs
+ * @since 2024-08-13
+ */
+public interface ProductOrderMapper extends BaseMapper {
+
+}
diff --git a/nla-order-service/src/main/java/cn/nla/order/model/entity/ProductOrderEntity.java b/nla-order-service/src/main/java/cn/nla/order/model/entity/ProductOrderEntity.java
new file mode 100644
index 0000000..d78dc6e
--- /dev/null
+++ b/nla-order-service/src/main/java/cn/nla/order/model/entity/ProductOrderEntity.java
@@ -0,0 +1,96 @@
+package cn.nla.order.model.entity;
+
+import java.math.BigDecimal;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ *
+ * 订单表
+ *
+ *
+ * @author YJs
+ * @since 2024-08-13
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@TableName("product_order")
+public class ProductOrderEntity implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+
+ /**
+ * 订单唯一标识
+ */
+ private String outTradeNo;
+
+ /**
+ * NEW 未支付订单,PAY已经支付订单,CANCEL超时取消订单
+ */
+ private String state;
+
+ /**
+ * 订单生成时间
+ */
+ private Date createTime;
+
+ /**
+ * 订单总金额
+ */
+ private BigDecimal totalAmount;
+
+ /**
+ * 订单实际支付价格
+ */
+ private BigDecimal payAmount;
+
+ /**
+ * 支付类型,微信-银行-支付宝
+ */
+ private String payType;
+
+ /**
+ * 昵称
+ */
+ private String nickname;
+
+ /**
+ * 头像
+ */
+ private String headImg;
+
+ /**
+ * 用户id
+ */
+ private Integer userId;
+
+ /**
+ * 0表示未删除,1表示已经删除
+ */
+ private Integer del;
+
+ /**
+ * 更新时间
+ */
+ private Date updateTime;
+
+ /**
+ * 订单类型 DAILY普通单,PROMOTION促销订单
+ */
+ private String orderType;
+
+ /**
+ * 收货地址 json存储
+ */
+ private String receiverAddress;
+
+
+}
diff --git a/nla-order-service/src/main/java/cn/nla/order/model/entity/ProductOrderItemEntity.java b/nla-order-service/src/main/java/cn/nla/order/model/entity/ProductOrderItemEntity.java
new file mode 100644
index 0000000..6dc0cdb
--- /dev/null
+++ b/nla-order-service/src/main/java/cn/nla/order/model/entity/ProductOrderItemEntity.java
@@ -0,0 +1,70 @@
+package cn.nla.order.model.entity;
+
+import java.math.BigDecimal;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ *
+ * 订单项表
+ *
+ *
+ * @author YJs
+ * @since 2024-08-13
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@TableName("product_order_item")
+public class ProductOrderItemEntity implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+
+ /**
+ * 订单号
+ */
+ private Long productOrderId;
+
+ private String outTradeNo;
+
+ /**
+ * 产品id
+ */
+ private Long productId;
+
+ /**
+ * 商品名称
+ */
+ private String productName;
+
+ /**
+ * 商品图片
+ */
+ private String productImg;
+
+ /**
+ * 购买数量
+ */
+ private Integer buyNum;
+
+ private Date createTime;
+
+ /**
+ * 购物项商品总价格
+ */
+ private BigDecimal totalAmount;
+
+ /**
+ * 购物项商品单价
+ */
+ private BigDecimal amount;
+
+
+}
diff --git a/nla-order-service/src/main/java/cn/nla/order/service/ProductOrderItemService.java b/nla-order-service/src/main/java/cn/nla/order/service/ProductOrderItemService.java
new file mode 100644
index 0000000..8785afc
--- /dev/null
+++ b/nla-order-service/src/main/java/cn/nla/order/service/ProductOrderItemService.java
@@ -0,0 +1,16 @@
+package cn.nla.order.service;
+
+import cn.nla.order.model.entity.ProductOrderItemEntity;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 订单项表 服务类
+ *
+ *
+ * @author YJs
+ * @since 2024-08-13
+ */
+public interface ProductOrderItemService extends IService {
+
+}
diff --git a/nla-order-service/src/main/java/cn/nla/order/service/ProductOrderService.java b/nla-order-service/src/main/java/cn/nla/order/service/ProductOrderService.java
new file mode 100644
index 0000000..22f30b7
--- /dev/null
+++ b/nla-order-service/src/main/java/cn/nla/order/service/ProductOrderService.java
@@ -0,0 +1,35 @@
+package cn.nla.order.service;
+
+import cn.nla.common.util.JsonData;
+import cn.nla.order.model.entity.ProductOrderEntity;
+import cn.nla.order.model.request.ConfirmOrderRequest;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 订单表 服务类
+ *
+ *
+ * @author YJs
+ * @since 2024-08-13
+ */
+public interface ProductOrderService extends IService {
+
+ /**
+ * 防重提交
+ * 用户微服务-确认收货地址
+ * 商品微服务-获取最新购物项和价格
+ * 订单验价
+ * * 优惠券微服务-获取优惠券
+ * * 验证价格
+ * 锁定优惠券
+ * 锁定商品库存
+ * 创建订单对象
+ * 创建子订单对象
+ * 发送延迟消息-用于自动关单
+ * 创建支付信息-对接三方支付
+ */
+ JsonData confirmOrder(ConfirmOrderRequest request);
+
+ String queryProductOrderState(String outTradeNo);
+}
diff --git a/nla-order-service/src/main/java/cn/nla/order/service/impl/ProductOrderItemServiceImpl.java b/nla-order-service/src/main/java/cn/nla/order/service/impl/ProductOrderItemServiceImpl.java
new file mode 100644
index 0000000..1b3e828
--- /dev/null
+++ b/nla-order-service/src/main/java/cn/nla/order/service/impl/ProductOrderItemServiceImpl.java
@@ -0,0 +1,20 @@
+package cn.nla.order.service.impl;
+
+import cn.nla.order.model.entity.ProductOrderItemEntity;
+import cn.nla.order.mapper.ProductOrderItemMapper;
+import cn.nla.order.service.ProductOrderItemService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 订单项表 服务实现类
+ *
+ *
+ * @author YJs
+ * @since 2024-08-13
+ */
+@Service
+public class ProductOrderItemServiceImpl extends ServiceImpl implements ProductOrderItemService {
+
+}
diff --git a/nla-order-service/src/main/java/cn/nla/order/service/impl/ProductOrderServiceImpl.java b/nla-order-service/src/main/java/cn/nla/order/service/impl/ProductOrderServiceImpl.java
new file mode 100644
index 0000000..e01f033
--- /dev/null
+++ b/nla-order-service/src/main/java/cn/nla/order/service/impl/ProductOrderServiceImpl.java
@@ -0,0 +1,38 @@
+package cn.nla.order.service.impl;
+
+import cn.nla.common.util.JsonData;
+import cn.nla.order.model.entity.ProductOrderEntity;
+import cn.nla.order.mapper.ProductOrderMapper;
+import cn.nla.order.model.request.ConfirmOrderRequest;
+import cn.nla.order.service.ProductOrderService;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 订单表 服务实现类
+ *
+ *
+ * @author YJs
+ * @since 2024-08-13
+ */
+@Service
+public class ProductOrderServiceImpl extends ServiceImpl implements ProductOrderService {
+
+ @Override
+ public JsonData confirmOrder(ConfirmOrderRequest request) {
+ return null;
+ }
+
+ @Override
+ public String queryProductOrderState(String outTradeNo) {
+ ProductOrderEntity productOrderDO = baseMapper.selectOne(new QueryWrapper()
+ .eq("out_trade_no", outTradeNo));
+ if (productOrderDO == null) {
+ return "";
+ } else {
+ return productOrderDO.getState();
+ }
+ }
+}
diff --git a/nla-order-service/src/main/resources/mapper/ProductOrderItemMapper.xml b/nla-order-service/src/main/resources/mapper/ProductOrderItemMapper.xml
new file mode 100644
index 0000000..4efeca3
--- /dev/null
+++ b/nla-order-service/src/main/resources/mapper/ProductOrderItemMapper.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ id, product_order_id, out_trade_no, product_id, product_name, product_img, buy_num, create_time, total_amount, amount
+
+
+
diff --git a/nla-order-service/src/main/resources/mapper/ProductOrderMapper.xml b/nla-order-service/src/main/resources/mapper/ProductOrderMapper.xml
new file mode 100644
index 0000000..8f1709c
--- /dev/null
+++ b/nla-order-service/src/main/resources/mapper/ProductOrderMapper.xml
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ id, out_trade_no, state, create_time, total_amount, pay_amount, pay_type, nickname, head_img, user_id, del, update_time, order_type, receiver_address
+
+
+
diff --git a/nla-product-service/src/main/java/cn/nla/product/controller/ProductTaskController.java b/nla-product-service/src/main/java/cn/nla/product/controller/ProductTaskController.java
new file mode 100644
index 0000000..51e1932
--- /dev/null
+++ b/nla-product-service/src/main/java/cn/nla/product/controller/ProductTaskController.java
@@ -0,0 +1,23 @@
+package cn.nla.product.controller;
+
+
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 下单锁库存任务表 前端控制器
+ *
+ *
+ * @author YJs
+ * @since 2024-08-14
+ */
+@Api(tags = "下单锁库存任务控制器")
+@RestController
+@RequestMapping("/pdt/productTask/v1")
+public class ProductTaskController {
+
+}
+
diff --git a/nla-product-service/src/main/java/cn/nla/product/mapper/ProductTaskMapper.java b/nla-product-service/src/main/java/cn/nla/product/mapper/ProductTaskMapper.java
new file mode 100644
index 0000000..056ecda
--- /dev/null
+++ b/nla-product-service/src/main/java/cn/nla/product/mapper/ProductTaskMapper.java
@@ -0,0 +1,16 @@
+package cn.nla.product.mapper;
+
+import cn.nla.product.model.entity.ProductTaskEntity;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 下单锁库存任务表 Mapper 接口
+ *
+ *
+ * @author YJs
+ * @since 2024-08-14
+ */
+public interface ProductTaskMapper extends BaseMapper {
+
+}
diff --git a/nla-product-service/src/main/java/cn/nla/product/model/entity/ProductTaskEntity.java b/nla-product-service/src/main/java/cn/nla/product/model/entity/ProductTaskEntity.java
new file mode 100644
index 0000000..c227574
--- /dev/null
+++ b/nla-product-service/src/main/java/cn/nla/product/model/entity/ProductTaskEntity.java
@@ -0,0 +1,54 @@
+package cn.nla.product.model.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ *
+ * 下单锁库存任务表
+ *
+ *
+ * @author YJs
+ * @since 2024-08-14
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@TableName("product_task")
+public class ProductTaskEntity implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+
+ /**
+ * 商品id
+ */
+ private Long productId;
+
+ /**
+ * 购买数量
+ */
+ private Integer buyNum;
+
+ /**
+ * 商品标题
+ */
+ private String productName;
+
+ /**
+ * 锁定状态锁定LOCK 完成FINISH-取消CANCEL
+ */
+ private String lockState;
+
+ private String outTradeNo;
+
+ private Date createTime;
+
+
+}
diff --git a/nla-product-service/src/main/java/cn/nla/product/service/ProductTaskService.java b/nla-product-service/src/main/java/cn/nla/product/service/ProductTaskService.java
new file mode 100644
index 0000000..11de514
--- /dev/null
+++ b/nla-product-service/src/main/java/cn/nla/product/service/ProductTaskService.java
@@ -0,0 +1,16 @@
+package cn.nla.product.service;
+
+import cn.nla.product.model.entity.ProductTaskEntity;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 下单锁库存任务表 服务类
+ *
+ *
+ * @author YJs
+ * @since 2024-08-14
+ */
+public interface ProductTaskService extends IService {
+
+}
diff --git a/nla-product-service/src/main/java/cn/nla/product/service/impl/ProductTaskServiceImpl.java b/nla-product-service/src/main/java/cn/nla/product/service/impl/ProductTaskServiceImpl.java
new file mode 100644
index 0000000..67382f7
--- /dev/null
+++ b/nla-product-service/src/main/java/cn/nla/product/service/impl/ProductTaskServiceImpl.java
@@ -0,0 +1,20 @@
+package cn.nla.product.service.impl;
+
+import cn.nla.product.model.entity.ProductTaskEntity;
+import cn.nla.product.mapper.ProductTaskMapper;
+import cn.nla.product.service.ProductTaskService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 下单锁库存任务表 服务实现类
+ *
+ *
+ * @author YJs
+ * @since 2024-08-14
+ */
+@Service
+public class ProductTaskServiceImpl extends ServiceImpl implements ProductTaskService {
+
+}
diff --git a/nla-product-service/src/main/resources/mapper/ProductTaskMapper.xml b/nla-product-service/src/main/resources/mapper/ProductTaskMapper.xml
new file mode 100644
index 0000000..dc57f43
--- /dev/null
+++ b/nla-product-service/src/main/resources/mapper/ProductTaskMapper.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ id, product_id, buy_num, product_name, lock_state, out_trade_no, create_time
+
+
+