【7.6.0】【框架改造】移除seata

pull/55/head
fengshuonan 2023-05-08 14:10:37 +08:00
parent 13a0832da8
commit c57b60c321
18 changed files with 0 additions and 660 deletions

View File

@ -1 +0,0 @@
分布式事务Seata模块

View File

@ -1,111 +0,0 @@
-- ----------------------------
-- 订单库
-- ----------------------------
DROP DATABASE IF EXISTS `order`;
CREATE DATABASE IF NOT EXISTS `order` DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_general_ci;
USE `order`;
DROP TABLE IF EXISTS `order_info`;
CREATE TABLE `order_info` (
`order_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '订单ID',
`product_id` bigint(20) NOT NULL COMMENT '商品ID',
`user_id` bigint(20) NOT NULL COMMENT '用户ID',
`prod_price` double(8, 2) NOT NULL COMMENT '商品单价',
`prod_number` int(11) NOT NULL COMMENT '商品数量',
`total_amount` double(10, 2) NOT NULL COMMENT '总价',
`pay_status` int(11) NOT NULL COMMENT '支付状态:1待支付,2已支付,3支付失败,已取消',
`create_user` bigint(20) NULL DEFAULT NULL COMMENT '创建者',
`create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
`update_user` bigint(20) NULL DEFAULT NULL COMMENT '更新者',
`update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
`remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注',
PRIMARY KEY (`order_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '订单表' ROW_FORMAT = Dynamic;
DROP TABLE IF EXISTS `undo_log`;
CREATE TABLE `undo_log` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`branch_id` bigint(20) NOT NULL,
`xid` varchar(100) NOT NULL,
`context` varchar(128) NOT NULL,
`rollback_info` longblob NOT NULL,
`log_status` int(11) NOT NULL,
`log_created` datetime NOT NULL,
`log_modified` datetime NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `ux_undo_log` (`xid`,`branch_id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT = 'seata事务记录';
-- ----------------------------
-- 仓储库
-- ----------------------------
DROP DATABASE IF EXISTS `storage`;
CREATE DATABASE IF NOT EXISTS `storage` DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_general_ci;
USE `storage`;
DROP TABLE IF EXISTS `product_info`;
CREATE TABLE `product_info` (
`prod_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '商品ID',
`prod_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '商品名称',
`inventory` int(11) NOT NULL COMMENT '库存数量',
`prod_price` double(8, 2) NOT NULL COMMENT '商品单价',
`prod_status` int(11) NOT NULL COMMENT '上架状态:1上架,2下架',
`create_user` bigint(20) NULL DEFAULT NULL COMMENT '创建者',
`create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
`update_user` bigint(20) NULL DEFAULT NULL COMMENT '更新者',
`update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
`remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注',
PRIMARY KEY (`prod_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '商品表' ROW_FORMAT = Dynamic;
DROP TABLE IF EXISTS `undo_log`;
CREATE TABLE `undo_log` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`branch_id` bigint(20) NOT NULL,
`xid` varchar(100) NOT NULL,
`context` varchar(128) NOT NULL,
`rollback_info` longblob NOT NULL,
`log_status` int(11) NOT NULL,
`log_created` datetime NOT NULL,
`log_modified` datetime NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `ux_undo_log` (`xid`,`branch_id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT = 'seata事务记录';
-- ----------------------------
-- 用户库
-- ----------------------------
DROP DATABASE IF EXISTS `member`;
CREATE DATABASE IF NOT EXISTS `member` DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_general_ci;
USE `member`;
DROP TABLE IF EXISTS `member_wallet`;
CREATE TABLE `member_wallet` (
`member_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '会员ID',
`member_balance` double(8, 2) DEFAULT '0.00' COMMENT '会员余额',
`member_integral` double(8, 2) DEFAULT '0.00' COMMENT '会员积分',
`create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
`update_user` bigint(20) NULL DEFAULT NULL COMMENT '更新者',
`update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`member_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '用户钱包' ROW_FORMAT = Dynamic;
DROP TABLE IF EXISTS `undo_log`;
CREATE TABLE `undo_log` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`branch_id` bigint(20) NOT NULL,
`xid` varchar(100) NOT NULL,
`context` varchar(128) NOT NULL,
`rollback_info` longblob NOT NULL,
`log_status` int(11) NOT NULL,
`log_created` datetime NOT NULL,
`log_modified` datetime NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `ux_undo_log` (`xid`,`branch_id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT = 'seata事务记录';

View File

@ -1,35 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>cn.stylefeng.roses</groupId>
<artifactId>roses-kernel</artifactId>
<version>7.6.0</version>
<relativePath>../pom.xml</relativePath>
</parent>
<artifactId>kernel-d-seata</artifactId>
<packaging>pom</packaging>
<modules>
<module>seata-demo-wallet-api</module>
<module>seata-demo-storage-api</module>
<module>seata-demo-order</module>
</modules>
<dependencies>
<!-- 开发规则 -->
<dependency>
<groupId>cn.stylefeng.roses</groupId>
<artifactId>kernel-a-rule</artifactId>
<version>${roses.version}</version>
</dependency>
</dependencies>
</project>

View File

@ -1,55 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>cn.stylefeng.roses</groupId>
<artifactId>kernel-d-seata</artifactId>
<version>7.6.0</version>
<relativePath>../pom.xml</relativePath>
</parent>
<artifactId>seata-demo-order</artifactId>
<packaging>jar</packaging>
<dependencies>
<!--feign远程调用-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-openfeign-core</artifactId>
<version>${openfeign.version}</version>
</dependency>
<!--demo业务-->
<dependency>
<groupId>cn.stylefeng.roses</groupId>
<artifactId>seata-demo-storage-api</artifactId>
<version>${roses.version}</version>
</dependency>
<dependency>
<groupId>cn.stylefeng.roses</groupId>
<artifactId>seata-demo-wallet-api</artifactId>
<version>${roses.version}</version>
</dependency>
<!--seata分布式事务-->
<dependency>
<groupId>io.seata</groupId>
<artifactId>seata-all</artifactId>
<version>${seata.all.version}</version>
</dependency>
<!--资源api模块-->
<!--用在资源控制器,资源扫描上-->
<dependency>
<groupId>cn.stylefeng.roses</groupId>
<artifactId>scanner-api</artifactId>
<version>${roses.version}</version>
</dependency>
</dependencies>
</project>

View File

@ -1,14 +0,0 @@
package cn.stylefeng.roses.kernel.seata.order.consumer;
import cn.stylefeng.roses.kernel.seata.api.StorageApi;
import org.springframework.cloud.openfeign.FeignClient;
/**
* api
*
* @author wangyl
* @since 2021/04/10 16:42
*/
@FeignClient(name = "seata-demo-storage")
public interface StorageConsumer extends StorageApi {
}

View File

@ -1,14 +0,0 @@
package cn.stylefeng.roses.kernel.seata.order.consumer;
import cn.stylefeng.roses.kernel.seata.wallet.api.WalletApi;
import org.springframework.cloud.openfeign.FeignClient;
/**
* api
*
* @author wangyl
* @since 2021/04/10 16:42
*/
@FeignClient(name = "seata-demo-wallet")
public interface WalletConsumer extends WalletApi {
}

View File

@ -1,35 +0,0 @@
package cn.stylefeng.roses.kernel.seata.order.controller;
import cn.stylefeng.roses.kernel.rule.enums.ResBizTypeEnum;
import cn.stylefeng.roses.kernel.scanner.api.annotation.ApiResource;
import cn.stylefeng.roses.kernel.scanner.api.annotation.GetResource;
import cn.stylefeng.roses.kernel.seata.order.entity.Order;
import cn.stylefeng.roses.kernel.seata.order.service.OrderService;
import org.springframework.web.bind.annotation.RequestParam;
import javax.annotation.Resource;
/**
*
*
* @author wangyl
* @since 2021/04/10 16:42
*/
@ApiResource(name = "订单接口测试seata", resBizType = ResBizTypeEnum.SYSTEM)
public class OrderController {
@Resource
private OrderService orderService;
/**
*
*
* @author wangyl
* @since 2021/4/20 20:11
*/
@GetResource(name = "创建订单", path = "/order/create", requiredPermission = false, requiredLogin = false)
public Order create(@RequestParam("userId") String userId, @RequestParam("commodityCode") String commodityCode, @RequestParam("orderCount") Integer orderCount) {
return orderService.create(userId, commodityCode, orderCount);
}
}

View File

@ -1,169 +0,0 @@
package cn.stylefeng.roses.kernel.seata.order.entity;
import java.io.Serializable;
import java.util.Date;
/**
*
*
* @author wangyl
* @since 2021/04/21 08:33
*/
public class Order implements Serializable {
/**
* ID
*/
private Long orderId;
/**
* ID
*/
private Long productId;
/**
* ID
*/
private Long userId;
/**
*
*/
private Integer prodPrice;
/**
*
*/
private Integer prodNumber;
/**
*
*/
private Integer totalAmount;
/**
* :1,2,3,
*/
private Integer payStatus;
/**
*
*/
private Long createUser;
/**
*
*/
private Date createTime;
/**
*
*/
private Long updateUser;
/**
*
*/
private Date updateTime;
/**
*
*/
private String remark;
public Long getOrderId() {
return orderId;
}
public void setOrderId(Long orderId) {
this.orderId = orderId;
}
public Long getProductId() {
return productId;
}
public void setProductId(Long productId) {
this.productId = productId;
}
public Long getUserId() {
return userId;
}
public void setUserId(Long userId) {
this.userId = userId;
}
public Integer getProdPrice() {
return prodPrice;
}
public void setProdPrice(Integer prodPrice) {
this.prodPrice = prodPrice;
}
public Integer getProdNumber() {
return prodNumber;
}
public void setProdNumber(Integer prodNumber) {
this.prodNumber = prodNumber;
}
public Integer getTotalAmount() {
return totalAmount;
}
public void setTotalAmount(Integer totalAmount) {
this.totalAmount = totalAmount;
}
public Integer getPayStatus() {
return payStatus;
}
public void setPayStatus(Integer payStatus) {
this.payStatus = payStatus;
}
public Long getCreateUser() {
return createUser;
}
public void setCreateUser(Long createUser) {
this.createUser = createUser;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public Long getUpdateUser() {
return updateUser;
}
public void setUpdateUser(Long updateUser) {
this.updateUser = updateUser;
}
public Date getUpdateTime() {
return updateTime;
}
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
}

View File

@ -1,31 +0,0 @@
package cn.stylefeng.roses.kernel.seata.order.mapper;
import cn.stylefeng.roses.kernel.seata.order.entity.Order;
/**
*
*
* @author wangyl
* @since 2021/04/21 08:33
*/
public interface OrderMapper {
/**
*
*
* @param order
* @author wangyl
* @since 2021/4/21 9:43
*/
void insertOrder(Order order);
/**
* ID
*
* @param orderId id
* @author wangyl
* @since 2021/4/21 9:43
*/
Order selectById(Long orderId);
}

View File

@ -1,41 +0,0 @@
<?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="cn.stylefeng.roses.kernel.seata.order.mapper.OrderMapper">
<!-- 新增订单 -->
<insert id="insertOrder" parameterType="cn.stylefeng.roses.kernel.seata.order.entity.Order">
insert into order(
<if test="productId != null and productId != ''">product_id,</if>
<if test="userId != null and userId != ''">user_id,</if>
<if test="prodPrice != null and prodPrice != ''">prod_price,</if>
<if test="prodNumber != null and prodNumber != ''">prod_number,</if>
<if test="totalAmount != null and totalAmount != ''">total_amount,</if>
<if test="payStatus != null and payStatus != ''">pay_status,</if>
<if test="createUser != null and createUser != ''">create_user,</if>
<if test="createTime != null and createTime != ''">create_time</if>
<if test="updateUser != null and updateUser != ''">update_user,</if>
<if test="updateTime != null and updateTime != ''">update_time,</if>
<if test="remark != null and remark != ''">remark,</if>
)values(
<if test="productId != null and productId != ''">#{productId},</if>
<if test="userId != null and userId != ''">#{userId},</if>
<if test="prodPrice != null and prodPrice != ''">#{prodPrice},</if>
<if test="prodNumber != null and prodNumber != ''">#{prodNumber},</if>
<if test="totalAmount != null and totalAmount != ''">#{totalAmount},</if>
<if test="payStatus != null and payStatus != ''">#{payStatus},</if>
<if test="createUser != null and createUser != ''">#{createUser},</if>
<if test="createTime != null and createTime != ''">#{createTime}</if>
<if test="updateUser != null and updateUser != ''">#{updateUser},</if>
<if test="updateTime != null and updateTime != ''">#{updateTime},</if>
<if test="remark != null and remark != ''">#{remark},</if>
)
</insert>
<!-- 根据ID查询订单 -->
<select id="selectById" resultType="cn.stylefeng.roses.kernel.seata.order.entity.Order">
select *
from order
where order_id = #{orderId}
</select>
</mapper>

View File

@ -1,24 +0,0 @@
package cn.stylefeng.roses.kernel.seata.order.service;
import cn.stylefeng.roses.kernel.seata.order.entity.Order;
/**
*
*
* @author wangyl
* @since 2021/04/21 08:33
*/
public interface OrderService {
/**
*
*
* @param userId ID
* @param commodityCode
* @param orderCount
* @author wangyl
* @since 2021/4/21 9:43
*/
Order create(String userId, String commodityCode, int orderCount);
}

View File

@ -1,48 +0,0 @@
package cn.stylefeng.roses.kernel.seata.order.service.impl;
import cn.stylefeng.roses.kernel.seata.order.consumer.StorageConsumer;
import cn.stylefeng.roses.kernel.seata.order.consumer.WalletConsumer;
import cn.stylefeng.roses.kernel.seata.order.entity.Order;
import cn.stylefeng.roses.kernel.seata.order.mapper.OrderMapper;
import cn.stylefeng.roses.kernel.seata.order.service.OrderService;
import io.seata.spring.annotation.GlobalTransactional;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
/**
*
*
* @author wangyl
* @since 2021/04/21 08:33
*/
@Service
public class OrderServiceImpl implements OrderService {
@Resource
private StorageConsumer storageConsumer;
@Resource
private WalletConsumer walletConsumer;
@Resource
private OrderMapper orderMapper;
@GlobalTransactional(rollbackFor = Exception.class)
@Override
public Order create(String userId, String commodityCode, int orderCount) {
Order order = new Order();
//保存订单
orderMapper.insertOrder(order);
//扣减商品库存
storageConsumer.deduct(commodityCode, orderCount);
//扣用户钱
walletConsumer.debit(userId, order.getTotalAmount());
return order;
}
}

View File

@ -1,18 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>cn.stylefeng.roses</groupId>
<artifactId>kernel-d-seata</artifactId>
<version>7.6.0</version>
<relativePath>../pom.xml</relativePath>
</parent>
<artifactId>seata-demo-storage-api</artifactId>
<packaging>jar</packaging>
</project>

View File

@ -1,21 +0,0 @@
package cn.stylefeng.roses.kernel.seata.api;
/**
* api
*
* @author wangyl
* @since 2021/04/10 16:42
*/
public interface StorageApi {
/**
*
*
* @param commodityCode
* @param count
* @author wangyl
* @since 2021/4/21 9:44
*/
void deduct(String commodityCode, Integer count);
}

View File

@ -1,18 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>cn.stylefeng.roses</groupId>
<artifactId>kernel-d-seata</artifactId>
<version>7.6.0</version>
<relativePath>../pom.xml</relativePath>
</parent>
<artifactId>seata-demo-wallet-api</artifactId>
<packaging>jar</packaging>
</project>

View File

@ -1,21 +0,0 @@
package cn.stylefeng.roses.kernel.seata.wallet.api;
/**
* api
*
* @author wangyl
* @since 2021/04/10 16:42
*/
public interface WalletApi {
/**
*
*
* @param userId ID
* @param money
* @author wangyl
* @since 2021/4/21 9:44
*/
void debit(String userId, Integer money);
}

View File

@ -106,9 +106,6 @@
<!--系统管理基础业务-->
<module>kernel-s-system</module>
<!-- 分布式事务seata -->
<module>kernel-d-seata</module>
<!-- Socket模块 -->
<module>kernel-d-socket</module>
@ -149,7 +146,6 @@
<easy.excel.version>3.2.1</easy.excel.version>
<pinyin4j.version>2.5.0</pinyin4j.version>
<openfeign.version>2.2.6.RELEASE</openfeign.version>
<seata.all.version>1.3.0</seata.all.version>
<bcprov.version>1.68</bcprov.version>
<springdoc.version>1.6.12</springdoc.version>
</properties>