From 161a7b8af0da1806c123564515b4b5d6136c4b62 Mon Sep 17 00:00:00 2001 From: pengren Date: Thu, 11 Apr 2024 13:51:18 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BC=96=E5=8F=B7=EF=BC=9AZSSAC-163=20?= =?UTF-8?q?=E6=8F=8F=E8=BF=B0=EF=BC=9A=E6=88=91=E7=9A=84=E8=B4=AD=E4=B9=B0?= =?UTF-8?q?=E5=95=86=E5=93=81=E4=B8=8E=E5=AE=89=E8=A3=85=E5=8C=85=E5=90=8E?= =?UTF-8?q?=E5=8F=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sf-admin/pom.xml | 8 +- .../mapper/deploy/SysApkInfoMapper.xml | 113 ++++++ .../mapper/goods/GoodsMessagesMapper.xml | 118 ++++++ .../mapper/index/ApplyListInfoMapper.xml | 87 +++++ .../common/exception/BusinessException.java | 77 ++++ .../sf/common/utils/SnowflakeIdWorker.java | 152 ++++++++ sf-order/pom.xml | 34 ++ .../java/com/sf/order/domain/OrderInfo.java | 367 ++++++++++++++++++ .../sf/order/domain/dto/OrderCreateDto.java | 59 +++ .../sf/order/domain/req/OrderListreqVo.java | 22 ++ .../sf/order/domain/res/OrderListResVo.java | 53 +++ .../com/sf/order/mapper/OrderInfoMapper.java | 67 ++++ .../sf/order/service/IOrderInfoService.java | 73 ++++ .../service/impl/OrderInfoServiceImpl.java | 137 +++++++ .../mapper/order/OrderInfoMapper.xml | 172 ++++++++ sf-ui/src/api/deploy/INFO.js | 44 +++ sf-ui/src/api/goods/goods.js | 44 +++ sf-ui/src/views/deploy/INFO/add.vue | 199 ++++++++++ sf-ui/src/views/deploy/INFO/index.vue | 332 ++++++++++++++++ sf-ui/src/views/goods/goods/index.vue | 348 +++++++++++++++++ 20 files changed, 2505 insertions(+), 1 deletion(-) create mode 100644 sf-admin/src/main/resources/mapper/deploy/SysApkInfoMapper.xml create mode 100644 sf-admin/src/main/resources/mapper/goods/GoodsMessagesMapper.xml create mode 100644 sf-admin/src/main/resources/mapper/index/ApplyListInfoMapper.xml create mode 100644 sf-common/src/main/java/com/sf/common/exception/BusinessException.java create mode 100644 sf-common/src/main/java/com/sf/common/utils/SnowflakeIdWorker.java create mode 100644 sf-order/pom.xml create mode 100644 sf-order/src/main/java/com/sf/order/domain/OrderInfo.java create mode 100644 sf-order/src/main/java/com/sf/order/domain/dto/OrderCreateDto.java create mode 100644 sf-order/src/main/java/com/sf/order/domain/req/OrderListreqVo.java create mode 100644 sf-order/src/main/java/com/sf/order/domain/res/OrderListResVo.java create mode 100644 sf-order/src/main/java/com/sf/order/mapper/OrderInfoMapper.java create mode 100644 sf-order/src/main/java/com/sf/order/service/IOrderInfoService.java create mode 100644 sf-order/src/main/java/com/sf/order/service/impl/OrderInfoServiceImpl.java create mode 100644 sf-order/src/main/resources/mapper/order/OrderInfoMapper.xml create mode 100644 sf-ui/src/api/deploy/INFO.js create mode 100644 sf-ui/src/api/goods/goods.js create mode 100644 sf-ui/src/views/deploy/INFO/add.vue create mode 100644 sf-ui/src/views/deploy/INFO/index.vue create mode 100644 sf-ui/src/views/goods/goods/index.vue diff --git a/sf-admin/pom.xml b/sf-admin/pom.xml index 1f2a15f..781eeae 100644 --- a/sf-admin/pom.xml +++ b/sf-admin/pom.xml @@ -60,7 +60,13 @@ com.smarterFramework sf-file - + + com.smarterFramework + sf-order + 1.0.0 + compile + + diff --git a/sf-admin/src/main/resources/mapper/deploy/SysApkInfoMapper.xml b/sf-admin/src/main/resources/mapper/deploy/SysApkInfoMapper.xml new file mode 100644 index 0000000..d1a60cf --- /dev/null +++ b/sf-admin/src/main/resources/mapper/deploy/SysApkInfoMapper.xml @@ -0,0 +1,113 @@ + + + + + + + + + + + + + + + + + + + + + + + + select id, uploading_type, sys_apk_name, version, sys_apk, sys_apk_size, sys_type, uploading_status, uploading_log_id, order_num, is_delete, created, modified, create_time, update_time from SYS_APK_INFO + + + + + + + + insert into SYS_APK_INFO + + uploading_type, + sys_apk_name, + version, + sys_apk, + sys_apk_size, + sys_type, + uploading_status, + uploading_log_id, + order_num, + is_delete, + created, + modified, + create_time, + update_time, + + + #{uploadingType}, + #{sysApkName}, + #{version}, + #{sysApk}, + #{sysApkSize}, + #{sysType}, + #{uploadingStatus}, + #{uploadingLogId}, + #{orderNum}, + #{isDelete}, + #{created}, + #{modified}, + #{createTime}, + #{updateTime}, + + + + + update SYS_APK_INFO + + uploading_type = #{uploadingType}, + sys_apk_name = #{sysApkName}, + version = #{version}, + sys_apk = #{sysApk}, + sys_apk_size = #{sysApkSize}, + sys_type = #{sysType}, + uploading_status = #{uploadingStatus}, + uploading_log_id = #{uploadingLogId}, + order_num = #{orderNum}, + is_delete = #{isDelete}, + created = #{created}, + modified = #{modified}, + create_time = #{createTime}, + update_time = #{updateTime}, + + where id = #{id} + + + + delete from SYS_APK_INFO where id = #{id} + + + + delete from SYS_APK_INFO where id in + + #{id} + + + \ No newline at end of file diff --git a/sf-admin/src/main/resources/mapper/goods/GoodsMessagesMapper.xml b/sf-admin/src/main/resources/mapper/goods/GoodsMessagesMapper.xml new file mode 100644 index 0000000..ffa20fa --- /dev/null +++ b/sf-admin/src/main/resources/mapper/goods/GoodsMessagesMapper.xml @@ -0,0 +1,118 @@ + + + + + + + + + + + + + + + + + + + + + + + + + select id, goods_code, stock_id, review_status, product_title, product_picture, original_price, product_desc, order_num, is_delete, created, modified, create_time, update_time, goods_type, goods_spec from GOODS_MESSAGES + + + + + + + + + insert into GOODS_MESSAGES + + goods_code, + stock_id, + review_status, + product_title, + product_picture, + original_price, + product_desc, + order_num, + is_delete, + created, + modified, + create_time, + update_time, + goods_type, + goods_spec, + + + #{goodsCode}, + #{stockId}, + #{reviewStatus}, + #{productTitle}, + #{productPicture}, + #{originalPrice}, + #{productDesc}, + #{orderNum}, + #{isDelete}, + #{created}, + #{modified}, + #{createTime}, + #{updateTime}, + #{goodsType}, + #{goodsSpec}, + + + + + update GOODS_MESSAGES + + goods_code = #{goodsCode}, + stock_id = #{stockId}, + review_status = #{reviewStatus}, + product_title = #{productTitle}, + product_picture = #{productPicture}, + original_price = #{originalPrice}, + product_desc = #{productDesc}, + order_num = #{orderNum}, + is_delete = #{isDelete}, + created = #{created}, + modified = #{modified}, + create_time = #{createTime}, + update_time = #{updateTime}, + goods_type = #{goodsType}, + goods_spec = #{goodsSpec}, + + where id = #{id} + + + + delete from GOODS_MESSAGES where id = #{id} + + + + delete from GOODS_MESSAGES where id in + + #{id} + + + \ No newline at end of file diff --git a/sf-admin/src/main/resources/mapper/index/ApplyListInfoMapper.xml b/sf-admin/src/main/resources/mapper/index/ApplyListInfoMapper.xml new file mode 100644 index 0000000..9bac81d --- /dev/null +++ b/sf-admin/src/main/resources/mapper/index/ApplyListInfoMapper.xml @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + + + + + + select id, app_name, app_desc, picture, order_num, is_delete, created, modified, create_time, update_time from APPLY_LIST_INFO + + + + + + + + insert into APPLY_LIST_INFO + + app_name, + app_desc, + picture, + order_num, + is_delete, + created, + modified, + create_time, + update_time, + + + #{appName}, + #{appDesc}, + #{picture}, + #{orderNum}, + #{isDelete}, + #{created}, + #{modified}, + #{createTime}, + #{updateTime}, + + + + + update APPLY_LIST_INFO + + app_name = #{appName}, + app_desc = #{appDesc}, + picture = #{picture}, + order_num = #{orderNum}, + is_delete = #{isDelete}, + created = #{created}, + modified = #{modified}, + create_time = #{createTime}, + update_time = #{updateTime}, + + where id = #{id} + + + + delete from APPLY_LIST_INFO where id = #{id} + + + + delete from APPLY_LIST_INFO where id in + + #{id} + + + \ No newline at end of file diff --git a/sf-common/src/main/java/com/sf/common/exception/BusinessException.java b/sf-common/src/main/java/com/sf/common/exception/BusinessException.java new file mode 100644 index 0000000..26ba14a --- /dev/null +++ b/sf-common/src/main/java/com/sf/common/exception/BusinessException.java @@ -0,0 +1,77 @@ +package com.sf.common.exception; + + +import com.sf.common.enums.ErrorCodeTypeEnum; + +/** + * @author : yswjme@163.com + * @Title : BusinessException.java + * @Package : com.zsmarter.ai.word.exception + * @Descript : 业务运行时异常 + * @date : 2020-06-29 04:59:44 + * @vsersion : V1.0 + */ +public class BusinessException extends RuntimeException { + + private static final long serialVersionUID = 4693786499059513760L; + + private ErrorCodeTypeEnum errorCodeTypeEnum; + + private final String errorDescription; + + private String errorCode; + + public BusinessException(String errorDescription) { + super(errorDescription); + this.errorDescription = errorDescription; + } + + public BusinessException(String errorDescription, Throwable t) { + super(errorDescription, t); + this.errorDescription = errorDescription; + } + + public BusinessException(String code, String errorDescription) { + super(errorDescription); + this.errorDescription = errorDescription; + this.errorCode = code; + } + + public BusinessException(String code, String errorDescription, Throwable t) { + super(errorDescription, t); + this.errorDescription = errorDescription; + this.errorCode = code; + } + + public BusinessException(ErrorCodeTypeEnum errorCodeTypeEnum, String code, String errorDescription) { + super(errorDescription); + this.errorDescription = errorDescription; + this.errorCode = code; + this.errorCodeTypeEnum = errorCodeTypeEnum; + } + + public BusinessException(ErrorCodeTypeEnum errorCodeTypeEnum, String code, String errorDescription, Throwable t) { + super(errorDescription, t); + this.errorDescription = errorDescription; + this.errorCode = code; + this.errorCodeTypeEnum = errorCodeTypeEnum; + } + + public String getErrorDescription() { + return this.errorDescription; + } + + public String getErrorCode() { + return errorCode; + } + + public String getErrorTitle() { + return "业务校验失败!"; + } + + public ErrorCodeTypeEnum getErrorCodeTypeEnum() { + return errorCodeTypeEnum; + } + + +} diff --git a/sf-common/src/main/java/com/sf/common/utils/SnowflakeIdWorker.java b/sf-common/src/main/java/com/sf/common/utils/SnowflakeIdWorker.java new file mode 100644 index 0000000..31257ae --- /dev/null +++ b/sf-common/src/main/java/com/sf/common/utils/SnowflakeIdWorker.java @@ -0,0 +1,152 @@ +package com.sf.common.utils; + + +import org.springframework.stereotype.Component; + +/** + * Tiwtter.SnowFlake的结构如下(每部分用-分开):
+ * 0 - 0000000000 0000000000 0000000000 0000000000 0 - 00000 - 00000 - 000000000000
+ * 1位标识,由于long基本类型在Java中是带符号的,最高位是符号位,正数是0,负数是1,所以id一般是正数,最高位是0
+ * 41位时间截(毫秒级),注意,41位时间截不是存储当前时间的时间截,而是存储时间截的差值(当前时间截 - 开始时间截) + * 得到的值),这里的的开始时间截,一般是我们的id生成器开始使用的时间,由我们程序来指定的(如下下面程序IdWorker类的startTime属性)。41位的时间截,可以使用69年,年T = (1L << 41) / (1000L * 60 * 60 * 24 * 365) = 69
+ * 10位的数据机器位,可以部署在1024个节点,包括5位datacenterId和5位workerId
+ * 12位序列,毫秒内的计数,12位的计数顺序号支持每个节点每毫秒(同一机器,同一时间截)产生4096个ID序号
+ * 加起来刚好64位,为一个Long型。
+ * SnowFlake的优点是,整体上按照时间自增排序,并且整个分布式系统内不会产生ID碰撞(由数据中心ID和机器ID作区分),并且效率较高,经测试,SnowFlake每秒能够产生26万ID左右。 + * @author yswjme@163.com + * @date : + * + */ +@Component +public class SnowflakeIdWorker { + + /** 开始时间截 (2018-01-01) ,不可修改 */ + private final long twepoch = 1420041600000L; + + /** 机器id所占的位数 */ + private final long workerIdBits = 5L; + + /** 数据标识id所占的位数 */ + private final long datacenterIdBits = 5L; + + /** 支持的最大机器id,结果是31 (这个移位算法可以很快的计算出几位二进制数所能表示的最大十进制数) */ + private final long maxWorkerId = -1L ^ (-1L << workerIdBits); + + /** 支持的最大数据标识id,结果是31 */ + private final long maxDatacenterId = -1L ^ (-1L << datacenterIdBits); + + /** 序列在id中占的位数 */ + private final long sequenceBits = 12L; + + /** 机器ID向左移12位 */ + private final long workerIdShift = sequenceBits; + + /** 数据标识id向左移17位(12+5) */ + private final long datacenterIdShift = sequenceBits + workerIdBits; + + /** 时间截向左移22位(5+5+12) */ + private final long timestampLeftShift = sequenceBits + workerIdBits + datacenterIdBits; + + /** 生成序列的掩码,这里为4095 (0b111111111111=0xfff=4095) */ + private final long sequenceMask = -1L ^ (-1L << sequenceBits); + + /** 工作机器ID(0~31) */ + private long workerId; + + /** 数据中心ID(0~31) */ + private long datacenterId; + + /** 毫秒内序列(0~4095) */ + private long sequence = 0L; + + /** 上次生成ID的时间截 */ + private long lastTimestamp = -1L; + + /** + * 构造函数 + * + * @param workerId 工作ID (0~31) + * @param datacenterId 数据中心ID (0~31) + */ + public SnowflakeIdWorker(long workerId, long datacenterId) { + if (workerId > maxWorkerId || workerId < 0) { + throw new IllegalArgumentException(String.format( + "worker Id can't be greater than %d or less than 0", + maxWorkerId)); + } + if (datacenterId > maxDatacenterId || datacenterId < 0) { + throw new IllegalArgumentException(String.format( + "datacenter Id can't be greater than %d or less than 0", + maxDatacenterId)); + } + this.workerId = workerId; + this.datacenterId = datacenterId; + } + + public SnowflakeIdWorker() { + }; + + /** + * 获得下一个ID (该方法是线程安全的) + * + * @return SnowflakeId + */ + public synchronized long nextId() { + long timestamp = timeGen(); + + // 如果当前时间小于上一次ID生成的时间戳,说明系统时钟回退过这个时候应当抛出异常 + if (timestamp < lastTimestamp) { + throw new RuntimeException( + String.format( + "Clock moved backwards. Refusing to generate id for %d milliseconds", + lastTimestamp - timestamp)); + } + + // 如果是同一时间生成的,则进行毫秒内序列 + if (lastTimestamp == timestamp) { + sequence = (sequence + 1) & sequenceMask; + // 毫秒内序列溢出 + if (sequence == 0) { + // 阻塞到下一个毫秒,获得新的时间戳 + timestamp = tilNextMillis(lastTimestamp); + } + }else {// 时间戳改变,毫秒内序列重置 + sequence = 0L; + } + + // 上次生成ID的时间截 + lastTimestamp = timestamp; + + // 移位并通过或运算拼到一起组成64位的ID + return ((timestamp - twepoch) << timestampLeftShift) // + | (datacenterId << datacenterIdShift) // + | (workerId << workerIdShift) // + | sequence; + } + + /** + * 阻塞到下一个毫秒,直到获得新的时间戳 + * + * @param lastTimestamp + * 上次生成ID的时间截 + * @return 当前时间戳 + */ + protected long tilNextMillis(long lastTimestamp) { + long timestamp = timeGen(); + while (timestamp <= lastTimestamp) { + timestamp = timeGen(); + } + return timestamp; + } + + /** + * 返回以毫秒为单位的当前时间 + * + * @return 当前时间(毫秒) + */ + protected long timeGen() { + return System.currentTimeMillis(); + } + + +} diff --git a/sf-order/pom.xml b/sf-order/pom.xml new file mode 100644 index 0000000..08b9c37 --- /dev/null +++ b/sf-order/pom.xml @@ -0,0 +1,34 @@ + + + + smarterFramework + com.smarterFramework + 1.0.0 + + 4.0.0 + + sf-order + + + order订单模块 + + + + + + + com.smarterFramework + sf-common + + + io.swagger.core.v3 + swagger-annotations + 2.1.2 + compile + + + + + \ No newline at end of file diff --git a/sf-order/src/main/java/com/sf/order/domain/OrderInfo.java b/sf-order/src/main/java/com/sf/order/domain/OrderInfo.java new file mode 100644 index 0000000..6e165a8 --- /dev/null +++ b/sf-order/src/main/java/com/sf/order/domain/OrderInfo.java @@ -0,0 +1,367 @@ +package com.sf.order.domain; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.sf.common.annotation.Excel; +import com.sf.common.core.domain.BaseEntity; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; + +import java.util.Date; + +/** + * 订单基础信息对象 ORDER_INFO + * + * @author ztzh + * @date 2024-04-09 + */ +public class OrderInfo extends BaseEntity { + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + private Long id; + + /** + * 订单编号 + */ + @Excel(name = "订单编号") + private Long orderNo; + + /** + * 订单状态: + * 0:待支付 + * 1:已付款 + * 2:支付超时系统结束 + * 3:已完成 + */ + @Excel(name = "订单状态: 0:待支付 1:已付款 2:支付超时系统结束 3:已完成 ") + private Long orderStatus; + + /** + * 支付方式:0-点券 1-现金 + */ + @Excel(name = "支付方式:0-点券 1-现金") + private Long payType; + + /** + * 支付渠道(支付方式为现金时) + * 0:微信 + * 1:支付宝 + */ + @Excel(name = "支付渠道(支付方式为现金时) 0:微信 1:支付宝") + private Long payChannel; + + /** + * 订单金额 + */ + @Excel(name = "订单金额") + private Long orderAmt; + + /** + * 运费 + */ + @Excel(name = "运费") + private Long freightAmt; + + /** + * 总金额 + */ + @Excel(name = "总金额") + private Long payAmt; + + /** + * 实际支付金额 + */ + @Excel(name = "实际支付金额") + private Long reallyAmt; + + /** + * 收件方式 + * :0-自提 + * 1-快递 2-配送 + */ + @Excel(name = "收件方式:0-自提 1-快递 2-配送") + private Long receiveType; + + /** + * 商品Id + */ + @Excel(name = "商品Id") + private Long goodsId; + + /** + * 商户Id + */ + @Excel(name = "商户Id") + private Long businessId; + + /** + * 收货地址配置Id + */ + @Excel(name = "收货地址配置Id") + private Long receiveAddrId; + + /** + * 支付时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "支付时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date payTime; + + /** + * 订单创建人 + */ + @Excel(name = "订单创建人") + private Long createUserId; + + /** + * 最后一次更新操作人 + */ + @Excel(name = "最后一次更新操作人") + private Long updateUserId; + + /** + * 逻辑删除标识 + * 0:未删除 + * 1:已删除 + */ + @Excel(name = "逻辑删除标识 0:未删除 1:已删除") + private Long isDelete; + + /** + * 快递单号 + */ + @Excel(name = "快递单号") + private String trackNo; + + /** + * 订单类型0:自动1:手动 + */ + @Excel(name = "订单类型0:自动1:手动") + private Long orderType; + + /** + * 平台外部订单号 + */ + @Excel(name = "平台外部订单号") + private Long outOrderNo; + + /** + * 平台支付返回值 + */ + @Excel(name = "平台支付返回值") + private String payData; + + /** + * 减免金额(优惠券抵扣) + */ + @Excel(name = "减免金额(优惠券抵扣)") + private Long reductionAmout; + + public void setId(Long id) { + this.id = id; + } + + public Long getId() { + return id; + } + + public void setOrderNo(Long orderNo) { + this.orderNo = orderNo; + } + + public Long getOrderNo() { + return orderNo; + } + + public void setOrderStatus(Long orderStatus) { + this.orderStatus = orderStatus; + } + + public Long getOrderStatus() { + return orderStatus; + } + + public void setPayType(Long payType) { + this.payType = payType; + } + + public Long getPayType() { + return payType; + } + + public void setPayChannel(Long payChannel) { + this.payChannel = payChannel; + } + + public Long getPayChannel() { + return payChannel; + } + + public void setOrderAmt(Long orderAmt) { + this.orderAmt = orderAmt; + } + + public Long getOrderAmt() { + return orderAmt; + } + + public void setFreightAmt(Long freightAmt) { + this.freightAmt = freightAmt; + } + + public Long getFreightAmt() { + return freightAmt; + } + + public void setPayAmt(Long payAmt) { + this.payAmt = payAmt; + } + + public Long getPayAmt() { + return payAmt; + } + + public void setReallyAmt(Long reallyAmt) { + this.reallyAmt = reallyAmt; + } + + public Long getReallyAmt() { + return reallyAmt; + } + + public void setReceiveType(Long receiveType) { + this.receiveType = receiveType; + } + + public Long getReceiveType() { + return receiveType; + } + + public void setGoodsId(Long goodsId) { + this.goodsId = goodsId; + } + + public Long getGoodsId() { + return goodsId; + } + + public void setBusinessId(Long businessId) { + this.businessId = businessId; + } + + public Long getBusinessId() { + return businessId; + } + + public void setReceiveAddrId(Long receiveAddrId) { + this.receiveAddrId = receiveAddrId; + } + + public Long getReceiveAddrId() { + return receiveAddrId; + } + + public void setPayTime(Date payTime) { + this.payTime = payTime; + } + + public Date getPayTime() { + return payTime; + } + + public void setCreateUserId(Long createUserId) { + this.createUserId = createUserId; + } + + public Long getCreateUserId() { + return createUserId; + } + + public void setUpdateUserId(Long updateUserId) { + this.updateUserId = updateUserId; + } + + public Long getUpdateUserId() { + return updateUserId; + } + + public void setIsDelete(Long isDelete) { + this.isDelete = isDelete; + } + + public Long getIsDelete() { + return isDelete; + } + + public void setTrackNo(String trackNo) { + this.trackNo = trackNo; + } + + public String getTrackNo() { + return trackNo; + } + + public void setOrderType(Long orderType) { + this.orderType = orderType; + } + + public Long getOrderType() { + return orderType; + } + + public void setOutOrderNo(Long outOrderNo) { + this.outOrderNo = outOrderNo; + } + + public Long getOutOrderNo() { + return outOrderNo; + } + + public void setPayData(String payData) { + this.payData = payData; + } + + public String getPayData() { + return payData; + } + + public void setReductionAmout(Long reductionAmout) { + this.reductionAmout = reductionAmout; + } + + public Long getReductionAmout() { + return reductionAmout; + } + + @Override + public String toString() { + return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE) + .append("id", getId()) + .append("orderNo", getOrderNo()) + .append("orderStatus", getOrderStatus()) + .append("payType", getPayType()) + .append("payChannel", getPayChannel()) + .append("orderAmt", getOrderAmt()) + .append("freightAmt", getFreightAmt()) + .append("payAmt", getPayAmt()) + .append("reallyAmt", getReallyAmt()) + .append("receiveType", getReceiveType()) + .append("goodsId", getGoodsId()) + .append("businessId", getBusinessId()) + .append("receiveAddrId", getReceiveAddrId()) + .append("createTime", getCreateTime()) + .append("payTime", getPayTime()) + .append("createUserId", getCreateUserId()) + .append("updateUserId", getUpdateUserId()) + .append("isDelete", getIsDelete()) + .append("updateTime", getUpdateTime()) + .append("trackNo", getTrackNo()) + .append("orderType", getOrderType()) + .append("outOrderNo", getOutOrderNo()) + .append("payData", getPayData()) + .append("reductionAmout", getReductionAmout()) + .toString(); + } +} diff --git a/sf-order/src/main/java/com/sf/order/domain/dto/OrderCreateDto.java b/sf-order/src/main/java/com/sf/order/domain/dto/OrderCreateDto.java new file mode 100644 index 0000000..0359751 --- /dev/null +++ b/sf-order/src/main/java/com/sf/order/domain/dto/OrderCreateDto.java @@ -0,0 +1,59 @@ +package com.sf.order.domain.dto; + +import io.swagger.v3.oas.annotations.media.Schema; + +import javax.validation.constraints.NotNull; + +/** + * @author : ztzh + * @since : 2023/7/27 + */ +@Schema(description = "下单") +public class OrderCreateDto { + + @Schema(description = "商品id") + @NotNull(message = "商品id不能为空") + private Long goodsId; + + @Schema(description = "数量") + @NotNull(message = "数量不能唯恐") + private Long count; + + @Schema(description = "金额") + @NotNull(message = "金额不能为空") + private Long amount; + + @Schema(description = "用户id") + @NotNull(message = "用户id不能空") + private Long userId; + + public Long getGoodsId() { + return goodsId; + } + + public void setGoodsId(Long goodsId) { + this.goodsId = goodsId; + } + public Long getCount() { + return count; + } + + public void setCount(Long count) { + this.count = count; + } + + public Long getAmount() { + return amount; + } + + public void setAmount(Long amount) { + this.amount = amount; + } + public Long getUserId() { + return userId; + } + + public void setUserId(Long userId) { + this.userId = userId; + } +} diff --git a/sf-order/src/main/java/com/sf/order/domain/req/OrderListreqVo.java b/sf-order/src/main/java/com/sf/order/domain/req/OrderListreqVo.java new file mode 100644 index 0000000..3cbbbd8 --- /dev/null +++ b/sf-order/src/main/java/com/sf/order/domain/req/OrderListreqVo.java @@ -0,0 +1,22 @@ +package com.sf.order.domain.req; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +public class OrderListreqVo { + /** + * 主键id + */ + private Long userId; + + /** + * 订单类型 + */ + private Long orderStatus; + + private Integer pageSize; + + private Integer pageNo; + +} diff --git a/sf-order/src/main/java/com/sf/order/domain/res/OrderListResVo.java b/sf-order/src/main/java/com/sf/order/domain/res/OrderListResVo.java new file mode 100644 index 0000000..502a641 --- /dev/null +++ b/sf-order/src/main/java/com/sf/order/domain/res/OrderListResVo.java @@ -0,0 +1,53 @@ +package com.sf.order.domain.res; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.time.LocalDateTime; + +/** + * 活动信息详情 + * + */ +@Data +@Schema(name = "OrderListResVo", description = "订单列表") +public class OrderListResVo { + /** + * 主键id + */ + private Long id; + + /** + * 订单编号 + */ + private String orderNo; + + /** + * 订单状态: + * 0:待支付 + * 1:已付款 + * 2:支付超时系统结束 + * 3:已完成 + */ + private Long orderStatus; + + /** + * 订单金额 + */ + private Long orderAmt; + + /** + * 商品标题 + */ + private String productTitle; + + /** + * 商品规格 + */ + private Integer goodsSpec; + /** + * 商品数量 + */ + private Integer goodsCount = 1; + +} diff --git a/sf-order/src/main/java/com/sf/order/mapper/OrderInfoMapper.java b/sf-order/src/main/java/com/sf/order/mapper/OrderInfoMapper.java new file mode 100644 index 0000000..b4f9f31 --- /dev/null +++ b/sf-order/src/main/java/com/sf/order/mapper/OrderInfoMapper.java @@ -0,0 +1,67 @@ +package com.sf.order.mapper; + +import com.sf.order.domain.OrderInfo; +import com.sf.order.domain.req.OrderListreqVo; +import com.sf.order.domain.res.OrderListResVo; + +import java.util.List; + + +/** + * 订单基础信息Mapper接口 + * + * @author ztzh + * @date 2024-04-09 + */ +public interface OrderInfoMapper { + /** + * 查询订单基础信息 + * + * @param id 订单基础信息主键 + * @return 订单基础信息 + */ + public OrderInfo selectOrderInfoById(Long id); + + /** + * 查询订单基础信息列表 + * + * @param orderInfo 订单基础信息 + * @return 订单基础信息集合 + */ + public List selectOrderInfoList(OrderInfo orderInfo); + + + List queryList(OrderListreqVo vo); + + /** + * 新增订单基础信息 + * + * @param orderInfo 订单基础信息 + * @return 结果 + */ + public int insertOrderInfo(OrderInfo orderInfo); + + /** + * 修改订单基础信息 + * + * @param orderInfo 订单基础信息 + * @return 结果 + */ + public int updateOrderInfo(OrderInfo orderInfo); + + /** + * 删除订单基础信息 + * + * @param id 订单基础信息主键 + * @return 结果 + */ + public int deleteOrderInfoById(Long id); + + /** + * 批量删除订单基础信息 + * + * @param ids 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteOrderInfoByIds(Long[] ids); +} diff --git a/sf-order/src/main/java/com/sf/order/service/IOrderInfoService.java b/sf-order/src/main/java/com/sf/order/service/IOrderInfoService.java new file mode 100644 index 0000000..c63358f --- /dev/null +++ b/sf-order/src/main/java/com/sf/order/service/IOrderInfoService.java @@ -0,0 +1,73 @@ +package com.sf.order.service; + + +import com.sf.order.domain.OrderInfo; +import com.sf.order.domain.dto.OrderCreateDto; +import com.sf.order.domain.req.OrderListreqVo; +import com.sf.order.domain.res.OrderListResVo; + +import java.util.List; + +/** + * 订单基础信息Service接口 + * + * @author ztzh + * @date 2024-04-09 + */ +public interface IOrderInfoService +{ + /** + * 查询订单基础信息 + * + * @param id 订单基础信息主键 + * @return 订单基础信息 + */ + public OrderInfo selectOrderInfoById(Long id); + + /** + * 查询订单基础信息列表 + * + * @param orderInfo 订单基础信息 + * @return 订单基础信息集合 + */ + public List selectOrderInfoList(OrderInfo orderInfo); + + /** + * 查询订单基础信息列表 + */ + List queryList(OrderListreqVo vo); + + /** + * 新增订单基础信息 + * + * @param orderInfo 订单基础信息 + * @return 结果 + */ + public int createOrder(OrderCreateDto orderInfo); + + /** + * 修改订单基础信息 + * + * @param orderInfo 订单基础信息 + * @return 结果 + */ + public int updateOrderInfo(OrderInfo orderInfo); + + /** + * 批量删除订单基础信息 + * + * @param ids 需要删除的订单基础信息主键集合 + * @return 结果 + */ + public int deleteOrderInfoByIds(Long[] ids); + + /** + * 删除订单基础信息信息 + * + * @param id 订单基础信息主键 + * @return 结果 + */ + public int deleteOrderInfoById(Long id); + + void orderPay(Long orderId); +} diff --git a/sf-order/src/main/java/com/sf/order/service/impl/OrderInfoServiceImpl.java b/sf-order/src/main/java/com/sf/order/service/impl/OrderInfoServiceImpl.java new file mode 100644 index 0000000..315b818 --- /dev/null +++ b/sf-order/src/main/java/com/sf/order/service/impl/OrderInfoServiceImpl.java @@ -0,0 +1,137 @@ +package com.sf.order.service.impl; + +import java.util.List; + +import com.sf.common.exception.BusinessException; +import com.sf.common.utils.DateUtils; +import com.sf.common.utils.SnowflakeIdWorker; +import com.sf.order.domain.OrderInfo; +import com.sf.order.domain.dto.OrderCreateDto; +import com.sf.order.domain.req.OrderListreqVo; +import com.sf.order.domain.res.OrderListResVo; +import com.sf.order.mapper.OrderInfoMapper; +import com.sf.order.service.IOrderInfoService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; + +/** + * 订单基础信息Service业务层处理 + * + * @author ztzh + * @date 2024-04-09 + */ +@Service +public class OrderInfoServiceImpl implements IOrderInfoService +{ + @Resource + private OrderInfoMapper orderInfoMapper; + @Resource + private SnowflakeIdWorker snowflakeIdWorker; + + /** + * 查询订单基础信息 + * + * @param id 订单基础信息主键 + * @return 订单基础信息 + */ + @Override + public OrderInfo selectOrderInfoById(Long id) + { + return orderInfoMapper.selectOrderInfoById(id); + } + + /** + * 查询订单基础信息列表 + * + * @param orderInfo 订单基础信息 + * @return 订单基础信息 + */ + @Override + public List selectOrderInfoList(OrderInfo orderInfo) + { + return orderInfoMapper.selectOrderInfoList(orderInfo); + } + public List queryList(OrderListreqVo vo) + { + return orderInfoMapper.queryList(vo); + } + + /** + * 新增订单基础信息 + * + * @param orderCreateDto 订单基础信息 + * @return 结果 + */ + @Override + public int createOrder(OrderCreateDto orderCreateDto) + { + OrderInfo orderInfo = new OrderInfo(); + orderInfo.setOrderNo(snowflakeIdWorker.nextId()); + orderInfo.setPayType(0L); + orderInfo.setReceiveType(0L); + orderInfo.setOrderStatus(0l); + orderInfo.setCreateUserId(orderCreateDto.getUserId()); + orderInfo.setUpdateUserId(orderCreateDto.getUserId()); + orderInfo.setGoodsId(orderCreateDto.getGoodsId()); + orderInfo.setOrderAmt(orderCreateDto.getAmount()); + orderInfo.setPayAmt(orderCreateDto.getAmount()); + orderInfo.setCreateTime(DateUtils.getNowDate()); + orderInfo.setUpdateTime(DateUtils.getNowDate()); + return orderInfoMapper.insertOrderInfo(orderInfo); + } + + /** + * 修改订单基础信息 + * + * @param orderInfo 订单基础信息 + * @return 结果 + */ + @Override + public int updateOrderInfo(OrderInfo orderInfo) + { + orderInfo.setUpdateTime(DateUtils.getNowDate()); + return orderInfoMapper.updateOrderInfo(orderInfo); + } + @Override + public void orderPay(Long orderId) { + OrderInfo updateOrder = this.selectOrderInfoById(orderId); + if (updateOrder == null) { + throw new BusinessException("订单缺失!"); + } +// if (!OrderInfoConstant.ORDER_WAITING_FOR_PAYMENT.equals(orderInfo.getOrderStatus())) { +// throw new BusinessException("订单状态异常!"); +// } + updateOrder.setOrderStatus(1L); + updateOrder.setPayTime(DateUtils.getNowDate()); + // 修改订单状态 + if (1>this.updateOrderInfo(updateOrder)) { + throw new BusinessException("支付异常,请联系管理员!"); + } + } + + /** + * 批量删除订单基础信息 + * + * @param ids 需要删除的订单基础信息主键 + * @return 结果 + */ + @Override + public int deleteOrderInfoByIds(Long[] ids) + { + return orderInfoMapper.deleteOrderInfoByIds(ids); + } + + /** + * 删除订单基础信息信息 + * + * @param id 订单基础信息主键 + * @return 结果 + */ + @Override + public int deleteOrderInfoById(Long id) + { + return orderInfoMapper.deleteOrderInfoById(id); + } + +} diff --git a/sf-order/src/main/resources/mapper/order/OrderInfoMapper.xml b/sf-order/src/main/resources/mapper/order/OrderInfoMapper.xml new file mode 100644 index 0000000..811f46a --- /dev/null +++ b/sf-order/src/main/resources/mapper/order/OrderInfoMapper.xml @@ -0,0 +1,172 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select id, order_no, order_status, pay_type, pay_channel, order_amt, freight_amt, pay_amt, really_amt, receive_type, goods_id, business_id, receive_addr_id, create_time, pay_time, create_user_id, update_user_id, is_delete, update_time, track_no, order_type, out_order_no, pay_data, reduction_amout from ORDER_INFO + + + select id, order_no, order_status, pay_type, productTitle, order_amt, freight_amt, pay_amt, really_amt, receive_type, goods_id, business_id, receive_addr_id, create_time, pay_time, create_user_id, update_user_id, is_delete, update_time, track_no, order_type, out_order_no, pay_data, reduction_amout from ORDER_INFO + + + + + + + + + insert into ORDER_INFO + + id, + order_no, + order_status, + pay_type, + pay_channel, + order_amt, + freight_amt, + pay_amt, + really_amt, + receive_type, + goods_id, + business_id, + receive_addr_id, + create_time, + pay_time, + create_user_id, + update_user_id, + is_delete, + update_time, + track_no, + order_type, + out_order_no, + pay_data, + reduction_amout, + + + #{id}, + #{orderNo}, + #{orderStatus}, + #{payType}, + #{payChannel}, + #{orderAmt}, + #{freightAmt}, + #{payAmt}, + #{reallyAmt}, + #{receiveType}, + #{goodsId}, + #{businessId}, + #{receiveAddrId}, + #{createTime}, + #{payTime}, + #{createUserId}, + #{updateUserId}, + #{isDelete}, + #{updateTime}, + #{trackNo}, + #{orderType}, + #{outOrderNo}, + #{payData}, + #{reductionAmout}, + + + + + update ORDER_INFO + + order_no = #{orderNo}, + order_status = #{orderStatus}, + pay_type = #{payType}, + pay_channel = #{payChannel}, + order_amt = #{orderAmt}, + freight_amt = #{freightAmt}, + pay_amt = #{payAmt}, + really_amt = #{reallyAmt}, + receive_type = #{receiveType}, + goods_id = #{goodsId}, + business_id = #{businessId}, + receive_addr_id = #{receiveAddrId}, + create_time = #{createTime}, + pay_time = #{payTime}, + create_user_id = #{createUserId}, + update_user_id = #{updateUserId}, + is_delete = #{isDelete}, + update_time = #{updateTime}, + track_no = #{trackNo}, + order_type = #{orderType}, + out_order_no = #{outOrderNo}, + pay_data = #{payData}, + reduction_amout = #{reductionAmout}, + + where id = #{id} + + + + delete from ORDER_INFO where id = #{id} + + + + delete from ORDER_INFO where id in + + #{id} + + + \ No newline at end of file diff --git a/sf-ui/src/api/deploy/INFO.js b/sf-ui/src/api/deploy/INFO.js new file mode 100644 index 0000000..1a71d94 --- /dev/null +++ b/sf-ui/src/api/deploy/INFO.js @@ -0,0 +1,44 @@ +import request from '@/utils/request' + +// 查询安装包管理(新)列表 +export function listINFO(query) { + return request({ + url: '/deploy/INFO/list', + method: 'get', + params: query + }) +} + +// 查询安装包管理(新)详细 +export function getINFO(id) { + return request({ + url: '/deploy/INFO/' + id, + method: 'get' + }) +} + +// 新增安装包管理(新) +export function addINFO(data) { + return request({ + url: '/deploy/INFO', + method: 'post', + data: data + }) +} + +// 修改安装包管理(新) +export function updateINFO(data) { + return request({ + url: '/deploy/INFO', + method: 'put', + data: data + }) +} + +// 删除安装包管理(新) +export function delINFO(id) { + return request({ + url: '/deploy/INFO/' + id, + method: 'delete' + }) +} diff --git a/sf-ui/src/api/goods/goods.js b/sf-ui/src/api/goods/goods.js new file mode 100644 index 0000000..68f58bc --- /dev/null +++ b/sf-ui/src/api/goods/goods.js @@ -0,0 +1,44 @@ +import request from '@/utils/request' + +// 查询商品信息列表 +export function listGoods(query) { + return request({ + url: '/goods/goods/list', + method: 'get', + params: query + }) +} + +// 查询商品信息详细 +export function getGoods(id) { + return request({ + url: '/goods/goods/' + id, + method: 'get' + }) +} + +// 新增商品信息 +export function addGoods(data) { + return request({ + url: '/goods/goods', + method: 'post', + data: data + }) +} + +// 修改商品信息 +export function updateGoods(data) { + return request({ + url: '/goods/goods', + method: 'put', + data: data + }) +} + +// 删除商品信息 +export function delGoods(id) { + return request({ + url: '/goods/goods/' + id, + method: 'delete' + }) +} diff --git a/sf-ui/src/views/deploy/INFO/add.vue b/sf-ui/src/views/deploy/INFO/add.vue new file mode 100644 index 0000000..c9bc57b --- /dev/null +++ b/sf-ui/src/views/deploy/INFO/add.vue @@ -0,0 +1,199 @@ + + + diff --git a/sf-ui/src/views/deploy/INFO/index.vue b/sf-ui/src/views/deploy/INFO/index.vue new file mode 100644 index 0000000..797a3b0 --- /dev/null +++ b/sf-ui/src/views/deploy/INFO/index.vue @@ -0,0 +1,332 @@ + + diff --git a/sf-ui/src/views/goods/goods/index.vue b/sf-ui/src/views/goods/goods/index.vue new file mode 100644 index 0000000..819c794 --- /dev/null +++ b/sf-ui/src/views/goods/goods/index.vue @@ -0,0 +1,348 @@ + + +