Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Administrator
mall4cloud-new
Commits
7abfefba
Commit
7abfefba
authored
Dec 21, 2023
by
shengnan hu
Browse files
init
parents
Pipeline
#281
passed with stage
in 1 minute and 55 seconds
Changes
678
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
1367 additions
and
0 deletions
+1367
-0
mall4cloud-order/target/classes/com/mall4j/cloud/order/vo/OrderShopVO.class
...arget/classes/com/mall4j/cloud/order/vo/OrderShopVO.class
+0
-0
mall4cloud-order/target/classes/com/mall4j/cloud/order/vo/OrderVO.class
...er/target/classes/com/mall4j/cloud/order/vo/OrderVO.class
+0
-0
mall4cloud-order/target/classes/com/mall4j/cloud/order/vo/SubmitOrderPayInfoVO.class
...sses/com/mall4j/cloud/order/vo/SubmitOrderPayInfoVO.class
+0
-0
mall4cloud-order/target/classes/mapper/OrderAddrMapper.xml
mall4cloud-order/target/classes/mapper/OrderAddrMapper.xml
+77
-0
mall4cloud-order/target/classes/mapper/OrderItemMapper.xml
mall4cloud-order/target/classes/mapper/OrderItemMapper.xml
+127
-0
mall4cloud-order/target/classes/mapper/OrderMapper.xml
mall4cloud-order/target/classes/mapper/OrderMapper.xml
+262
-0
mall4cloud-order/target/classes/mapper/OrderPayInfoMapper.xml
...4cloud-order/target/classes/mapper/OrderPayInfoMapper.xml
+59
-0
mall4cloud-payment/pom.xml
mall4cloud-payment/pom.xml
+70
-0
mall4cloud-payment/src/main/java/com/mall4j/cloud/payment/PaymentApplication.java
...ain/java/com/mall4j/cloud/payment/PaymentApplication.java
+19
-0
mall4cloud-payment/src/main/java/com/mall4j/cloud/payment/bo/PayInfoBO.java
.../src/main/java/com/mall4j/cloud/payment/bo/PayInfoBO.java
+98
-0
mall4cloud-payment/src/main/java/com/mall4j/cloud/payment/bo/PayInfoResultBO.java
...ain/java/com/mall4j/cloud/payment/bo/PayInfoResultBO.java
+99
-0
mall4cloud-payment/src/main/java/com/mall4j/cloud/payment/config/RocketMqConfig.java
.../java/com/mall4j/cloud/payment/config/RocketMqConfig.java
+30
-0
mall4cloud-payment/src/main/java/com/mall4j/cloud/payment/constant/BackType.java
...main/java/com/mall4j/cloud/payment/constant/BackType.java
+43
-0
mall4cloud-payment/src/main/java/com/mall4j/cloud/payment/constant/PayStatus.java
...ain/java/com/mall4j/cloud/payment/constant/PayStatus.java
+39
-0
mall4cloud-payment/src/main/java/com/mall4j/cloud/payment/controller/PayController.java
...va/com/mall4j/cloud/payment/controller/PayController.java
+61
-0
mall4cloud-payment/src/main/java/com/mall4j/cloud/payment/controller/PayNoticeController.java
.../mall4j/cloud/payment/controller/PayNoticeController.java
+46
-0
mall4cloud-payment/src/main/java/com/mall4j/cloud/payment/dto/PayInfoDTO.java
...rc/main/java/com/mall4j/cloud/payment/dto/PayInfoDTO.java
+47
-0
mall4cloud-payment/src/main/java/com/mall4j/cloud/payment/mapper/PayInfoMapper.java
...n/java/com/mall4j/cloud/payment/mapper/PayInfoMapper.java
+58
-0
mall4cloud-payment/src/main/java/com/mall4j/cloud/payment/model/PayInfo.java
...src/main/java/com/mall4j/cloud/payment/model/PayInfo.java
+177
-0
mall4cloud-payment/src/main/java/com/mall4j/cloud/payment/service/PayInfoService.java
...java/com/mall4j/cloud/payment/service/PayInfoService.java
+55
-0
No files found.
mall4cloud-order/target/classes/com/mall4j/cloud/order/vo/OrderShopVO.class
0 → 100644
View file @
7abfefba
File added
mall4cloud-order/target/classes/com/mall4j/cloud/order/vo/OrderVO.class
0 → 100644
View file @
7abfefba
File added
mall4cloud-order/target/classes/com/mall4j/cloud/order/vo/SubmitOrderPayInfoVO.class
0 → 100644
View file @
7abfefba
File added
mall4cloud-order/target/classes/mapper/OrderAddrMapper.xml
0 → 100644
View file @
7abfefba
<?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.mall4j.cloud.order.mapper.OrderAddrMapper"
>
<resultMap
id=
"orderAddrMap"
type=
"com.mall4j.cloud.order.model.OrderAddr"
>
<id
column=
"order_addr_id"
property=
"orderAddrId"
/>
<result
column=
"create_time"
property=
"createTime"
/>
<result
column=
"update_time"
property=
"updateTime"
/>
<result
column=
"user_id"
property=
"userId"
/>
<result
column=
"consignee"
property=
"consignee"
/>
<result
column=
"province_id"
property=
"provinceId"
/>
<result
column=
"province"
property=
"province"
/>
<result
column=
"city_id"
property=
"cityId"
/>
<result
column=
"city"
property=
"city"
/>
<result
column=
"area_id"
property=
"areaId"
/>
<result
column=
"area"
property=
"area"
/>
<result
column=
"addr"
property=
"addr"
/>
<result
column=
"post_code"
property=
"postCode"
/>
<result
column=
"mobile"
property=
"mobile"
/>
</resultMap>
<sql
id=
"Vo_Column_List"
>
`order_addr_id`,`create_time`,`update_time`,`user_id`,`consignee`,`province_id`,`province`,`city_id`,`city`,`area_id`,`area`,`addr`,`post_code`,`mobile`
</sql>
<select
id=
"list"
resultType=
"com.mall4j.cloud.order.model.OrderAddr"
>
select
<include
refid=
"Vo_Column_List"
/>
from order_addr order by order_addr_id desc
</select>
<select
id=
"getByOrderAddrId"
resultType=
"com.mall4j.cloud.order.model.OrderAddr"
>
select
<include
refid=
"Vo_Column_List"
/>
from order_addr where order_addr_id = #{orderAddrId}
</select>
<insert
id=
"save"
useGeneratedKeys=
"true"
keyProperty=
"orderAddr.orderAddrId"
>
insert into order_addr (`user_id`,`consignee`,`province_id`,`province`,`city_id`,`city`,`area_id`,`area`,`addr`,`post_code`,`mobile`)
values (#{orderAddr.userId},#{orderAddr.consignee},#{orderAddr.provinceId},#{orderAddr.province},#{orderAddr.cityId},#{orderAddr.city},#{orderAddr.areaId},#{orderAddr.area},#{orderAddr.addr},#{orderAddr.postCode},#{orderAddr.mobile});
</insert>
<update
id=
"update"
>
update order_addr
<set>
<if
test=
"orderAddr.userId != null"
>
`user_id` = #{orderAddr.userId},
</if>
<if
test=
"orderAddr.consignee != null"
>
`consignee` = #{orderAddr.consignee},
</if>
<if
test=
"orderAddr.provinceId != null"
>
`province_id` = #{orderAddr.provinceId},
</if>
<if
test=
"orderAddr.province != null"
>
`province` = #{orderAddr.province},
</if>
<if
test=
"orderAddr.cityId != null"
>
`city_id` = #{orderAddr.cityId},
</if>
<if
test=
"orderAddr.city != null"
>
`city` = #{orderAddr.city},
</if>
<if
test=
"orderAddr.areaId != null"
>
`area_id` = #{orderAddr.areaId},
</if>
<if
test=
"orderAddr.area != null"
>
`area` = #{orderAddr.area},
</if>
<if
test=
"orderAddr.addr != null"
>
`addr` = #{orderAddr.addr},
</if>
<if
test=
"orderAddr.postCode != null"
>
`post_code` = #{orderAddr.postCode},
</if>
<if
test=
"orderAddr.mobile != null"
>
`mobile` = #{orderAddr.mobile},
</if>
</set>
where order_addr_id = #{orderAddr.orderAddrId}
</update>
<delete
id=
"deleteById"
>
delete from order_addr where order_addr_id = #{orderAddrId}
</delete>
</mapper>
mall4cloud-order/target/classes/mapper/OrderItemMapper.xml
0 → 100644
View file @
7abfefba
<?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.mall4j.cloud.order.mapper.OrderItemMapper"
>
<resultMap
id=
"orderItemMap"
type=
"com.mall4j.cloud.order.model.OrderItem"
>
<id
column=
"order_item_id"
property=
"orderItemId"
/>
<result
column=
"create_time"
property=
"createTime"
/>
<result
column=
"update_time"
property=
"updateTime"
/>
<result
column=
"shop_id"
property=
"shopId"
/>
<result
column=
"order_id"
property=
"orderId"
/>
<result
column=
"spu_id"
property=
"spuId"
/>
<result
column=
"sku_id"
property=
"skuId"
/>
<result
column=
"user_id"
property=
"userId"
/>
<result
column=
"count"
property=
"count"
/>
<result
column=
"spu_name"
property=
"spuName"
/>
<result
column=
"sku_name"
property=
"skuName"
/>
<result
column=
"pic"
property=
"pic"
/>
<result
column=
"delivery_type"
property=
"deliveryType"
/>
<result
column=
"shop_cart_time"
property=
"shopCartTime"
/>
<result
column=
"price"
property=
"price"
/>
<result
column=
"spu_total_amount"
property=
"spuTotalAmount"
/>
</resultMap>
<sql
id=
"Vo_Column_List"
>
`order_item_id`
,
`create_time`,
`update_time`,
`shop_id`,
`order_id`,
`spu_id`,
`sku_id`,
`user_id`,
`count`,
`spu_name`,
`sku_name`,
`pic`,
`delivery_type`,
`shop_cart_time`,
`price`,
`spu_total_amount`
</sql>
<insert
id=
"save"
>
insert into order_item (`shop_id`, `order_id`, `spu_id`, `sku_id`, `user_id`, `count`,
`spu_name`, `sku_name`, `pic`, `delivery_type`,
`shop_cart_time`, `price`, `spu_total_amount`)
values (#{orderItem.shopId}, #{orderItem.orderId}, #{orderItem.spuId}, #{orderItem.skuId}, #{orderItem.userId},
#{orderItem.count}, #{orderItem.spuName}, #{orderItem.skuName}, #{orderItem.pic},
#{orderItem.deliveryType}, #{orderItem.shopCartTime}, #{orderItem.price}, #{orderItem.spuTotalAmount});
</insert>
<update
id=
"update"
>
update order_item
<set>
<if
test=
"orderItem.shopId != null"
>
`shop_id` = #{orderItem.shopId},
</if>
<if
test=
"orderItem.orderId != null"
>
`order_id` = #{orderItem.orderId},
</if>
<if
test=
"orderItem.spuId != null"
>
`spu_id` = #{orderItem.spuId},
</if>
<if
test=
"orderItem.skuId != null"
>
`sku_id` = #{orderItem.skuId},
</if>
<if
test=
"orderItem.userId != null"
>
`user_id` = #{orderItem.userId},
</if>
<if
test=
"orderItem.count != null"
>
`count` = #{orderItem.count},
</if>
<if
test=
"orderItem.spuName != null"
>
`spu_name` = #{orderItem.spuName},
</if>
<if
test=
"orderItem.skuName != null"
>
`sku_name` = #{orderItem.skuName},
</if>
<if
test=
"orderItem.pic != null"
>
`pic` = #{orderItem.pic},
</if>
<if
test=
"orderItem.deliveryType != null"
>
`delivery_type` = #{orderItem.deliveryType},
</if>
<if
test=
"orderItem.shopCartTime != null"
>
`shop_cart_time` = #{orderItem.shopCartTime},
</if>
<if
test=
"orderItem.price != null"
>
`price` = #{orderItem.price},
</if>
<if
test=
"orderItem.spuTotalAmount != null"
>
`spu_total_amount` = #{orderItem.spuTotalAmount}
</if>
</set>
where order_item_id = #{orderItem.orderItemId}
</update>
<delete
id=
"deleteById"
>
delete
from order_item
where order_item_id = #{orderItemId}
</delete>
<insert
id=
"saveBatch"
>
insert into order_item (`shop_id`, `order_id`, `spu_id`, `sku_id`, `user_id`, `count`, `spu_name`,
`sku_name`, `pic`,`delivery_type`, `shop_cart_time`,
`price`,`spu_total_amount`)
values
<foreach
collection=
"orderItems"
item=
"orderItem"
separator=
","
>
(#{orderItem.shopId}, #{orderItem.orderId}, #{orderItem.spuId}, #{orderItem.skuId}, #{orderItem.userId},
#{orderItem.count}, #{orderItem.spuName},#{orderItem.skuName}, #{orderItem.pic},
#{orderItem.deliveryType}, #{orderItem.shopCartTime}, #{orderItem.price},#{orderItem.spuTotalAmount})
</foreach>
</insert>
<select
id=
"listOrderItemsByOrderId"
resultMap=
"orderItemMap"
>
select toi.*
from order_item toi
where toi.order_id = #{orderId}
</select>
<select
id=
"getSpuNameListByOrderIds"
resultType=
"java.lang.String"
>
select spu_name from order_item where order_id in
<foreach
collection=
"orderIdList"
item=
"orderId"
separator=
","
close=
")"
open=
"("
>
#{orderId}
</foreach>
</select>
<select
id=
"countByOrderId"
resultType=
"java.lang.Integer"
>
SELECT COUNT(*)
FROM order_item
WHERE order_id = #{orderId}
</select>
</mapper>
mall4cloud-order/target/classes/mapper/OrderMapper.xml
0 → 100644
View file @
7abfefba
<?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.mall4j.cloud.order.mapper.OrderMapper"
>
<resultMap
id=
"orderMap"
type=
"com.mall4j.cloud.order.model.Order"
>
<id
column=
"order_id"
property=
"orderId"
/>
<result
column=
"create_time"
property=
"createTime"
/>
<result
column=
"update_time"
property=
"updateTime"
/>
<result
column=
"shop_id"
property=
"shopId"
/>
<result
column=
"user_id"
property=
"userId"
/>
<result
column=
"order_addr_id"
property=
"orderAddrId"
/>
<result
column=
"shop_name"
property=
"shopName"
/>
<result
column=
"total"
property=
"total"
/>
<result
column=
"status"
property=
"status"
/>
<result
column=
"delivery_type"
property=
"deliveryType"
/>
<result
column=
"close_type"
property=
"closeType"
/>
<result
column=
"all_count"
property=
"allCount"
/>
<result
column=
"pay_time"
property=
"payTime"
/>
<result
column=
"delivery_time"
property=
"deliveryTime"
/>
<result
column=
"finally_time"
property=
"finallyTime"
/>
<result
column=
"cancel_time"
property=
"cancelTime"
/>
<result
column=
"is_payed"
property=
"isPayed"
/>
<result
column=
"delete_status"
property=
"deleteStatus"
/>
</resultMap>
<resultMap
type=
"com.mall4j.cloud.order.model.Order"
id=
"orderAndOrderItem"
extends=
"orderMap"
>
<collection
property=
"orderItems"
columnPrefix=
"oi_"
ofType=
"com.mall4j.cloud.order.model.OrderItem"
>
<id
column=
"order_item_id"
jdbcType=
"BIGINT"
property=
"orderItemId"
/>
<result
column=
"shop_id"
property=
"shopId"
/>
<result
column=
"order_id"
property=
"orderId"
/>
<result
column=
"spu_id"
property=
"spuId"
/>
<result
column=
"sku_id"
property=
"skuId"
/>
<result
column=
"user_id"
property=
"userId"
/>
<result
column=
"count"
property=
"count"
/>
<result
column=
"spu_name"
property=
"spuName"
/>
<result
column=
"sku_name"
property=
"skuName"
/>
<result
column=
"pic"
property=
"pic"
/>
<result
column=
"delivery_type"
property=
"deliveryType"
/>
<result
column=
"shop_cart_time"
property=
"shopCartTime"
/>
<result
column=
"price"
property=
"price"
/>
<result
column=
"spu_total_amount"
property=
"spuTotalAmount"
/>
</collection>
</resultMap>
<resultMap
type=
"com.mall4j.cloud.api.order.bo.EsOrderBO"
id=
"esOrderAndOrderItemAndUserAddrMap"
extends=
"orderMap"
>
<result
column=
"mobile"
jdbcType=
"VARCHAR"
property=
"mobile"
/>
<result
column=
"consignee"
jdbcType=
"VARCHAR"
property=
"consignee"
/>
<collection
property=
"orderItems"
columnPrefix=
"oi_"
ofType=
"com.mall4j.cloud.order.model.OrderItem"
>
<id
column=
"order_item_id"
jdbcType=
"BIGINT"
property=
"orderItemId"
/>
<result
column=
"shop_id"
property=
"shopId"
/>
<result
column=
"order_id"
property=
"orderId"
/>
<result
column=
"spu_id"
property=
"spuId"
/>
<result
column=
"sku_id"
property=
"skuId"
/>
<result
column=
"user_id"
property=
"userId"
/>
<result
column=
"count"
property=
"count"
/>
<result
column=
"spu_name"
property=
"spuName"
/>
<result
column=
"sku_name"
property=
"skuName"
/>
<result
column=
"pic"
property=
"pic"
/>
<result
column=
"delivery_type"
property=
"deliveryType"
/>
<result
column=
"shop_cart_time"
property=
"shopCartTime"
/>
<result
column=
"price"
property=
"price"
/>
<result
column=
"spu_total_amount"
property=
"spuTotalAmount"
/>
</collection>
</resultMap>
<sql
id=
"Vo_Column_List"
>
`order_id`,
`create_time`,
`update_time`,
`shop_id`,
`user_id`,
`order_addr_id`,
`shop_name`,
`total`,
`status`,
`delivery_type`,
`close_type`,
`all_count`,
`pay_time`,
`delivery_time`,
`finally_time`,
`cancel_time`,
`is_payed`,
`delete_status`
</sql>
<update
id=
"update"
>
update `order`
<set>
<if
test=
"order.shopId != null"
>
`shop_id` = #{order.shopId},
</if>
<if
test=
"order.shopName != null"
>
`shop_name` = #{order.shopName},
</if>
<if
test=
"order.userId != null"
>
`user_id` = #{order.userId},
</if>
<if
test=
"order.orderAddrId != null"
>
`order_addr_id` = #{order.orderAddrId},
</if>
<if
test=
"order.total != null"
>
`total` = #{order.total},
</if>
<if
test=
"order.status != null"
>
`status` = #{order.status},
</if>
<if
test=
"order.deliveryType != null"
>
`delivery_type` = #{order.deliveryType},
</if>
<if
test=
"order.closeType != null"
>
`close_type` = #{order.closeType},
</if>
<if
test=
"order.allCount != null"
>
`all_count` = #{order.allCount},
</if>
<if
test=
"order.payTime != null"
>
`pay_time` = #{order.payTime},
</if>
<if
test=
"order.deliveryTime != null"
>
`delivery_time` = #{order.deliveryTime},
</if>
<if
test=
"order.finallyTime != null"
>
`finally_time` = #{order.finallyTime},
</if>
<if
test=
"order.cancelTime != null"
>
`cancel_time` = #{order.cancelTime},
</if>
<if
test=
"order.isPayed != null"
>
`is_payed` = #{order.isPayed},
</if>
<if
test=
"order.deleteStatus != null"
>
`delete_status` = #{order.deleteStatus}
</if>
</set>
where order_id = #{order.orderId}
</update>
<delete
id=
"deleteById"
>
delete from `order` where order_id = #{orderId}
</delete>
<insert
id=
"saveBatch"
>
insert into `order` (`order_id`, `shop_id`, `shop_name`, `user_id`, `order_addr_id`, `total`, `status`, `delivery_type`,`close_type`,
`all_count`, `pay_time`, `delivery_time`, `finally_time`, `cancel_time`, `is_payed`, `delete_status`)
values
<foreach
collection=
"orders"
item=
"order"
separator=
","
>
(#{order.orderId}, #{order.shopId}, #{order.shopName}, #{order.userId}, #{order.orderAddrId}, #{order.total}, #{order.status}, #{order.deliveryType},
#{order.closeType}, #{order.allCount}, #{order.payTime}, #{order.deliveryTime}, #{order.finallyTime},
#{order.cancelTime}, #{order.isPayed}, #{order.deleteStatus})
</foreach>
</insert>
<select
id=
"getOrdersStatus"
resultType=
"com.mall4j.cloud.api.order.bo.OrderStatusBO"
>
select `status`, `order_id` from `order` where order_id in
<foreach
collection=
"orderIds"
open=
"("
item=
"orderId"
close=
")"
separator=
","
>
#{orderId}
</foreach>
</select>
<select
id=
"getOrdersActualAmount"
resultType=
"com.mall4j.cloud.api.order.vo.OrderAmountVO"
>
select SUM(total) as payAmount from `order` where order_id in
<foreach
collection=
"orderIds"
open=
"("
item=
"orderId"
close=
")"
separator=
","
>
#{orderId}
</foreach>
</select>
<update
id=
"updateByToPaySuccess"
>
update `order` set `status` = 2,is_payed =1,update_time=NOW(),pay_time=NOW()
where order_id in
<foreach
collection=
"orderIds"
item=
"orderId"
separator=
","
open=
"("
close=
")"
>
#{orderId}
</foreach>
</update>
<select
id=
"getOrdersSimpleAmountInfo"
resultType=
"com.mall4j.cloud.api.order.bo.OrderSimpleAmountInfoBO"
>
select `shop_id`, `order_id`, actual_total, platform_amount,`status`,close_type
from `order`
where order_id in
<foreach
collection=
"orderIds"
open=
"("
item=
"orderId"
close=
")"
separator=
","
>
#{orderId}
</foreach>
</select>
<update
id=
"cancelOrders"
>
update `order` set `status`=6,cancel_time = NOW(),update_time=NOW() where is_payed = 0 and order_id in
<foreach
collection=
"orderIds"
item=
"orderId"
open=
"("
close=
")"
separator=
","
>
#{orderId}
</foreach>
</update>
<select
id=
"getOrderByOrderIdAndUserId"
resultMap=
"orderMap"
>
select o.* from `order` o where o.order_id = #{orderId} and o.user_id = #{userId}
</select>
<update
id=
"receiptOrder"
>
update `order`
set `status` = 5,
finally_time = NOW(),
update_time = NOW()
where order_id = #{orderId} and `status` = 3
</update>
<update
id=
"deleteOrder"
>
UPDATE `order` SET `delete_status` = 2 where order_id = #{orderId}
</update>
<select
id=
"getOrderByOrderIdAndShopId"
resultMap=
"orderMap"
>
select o.* from `order` o where o.order_id = #{orderId} and o.shop_id = #{shopId}
</select>
<select
id=
"getOrderAndOrderItemData"
resultMap=
"orderAndOrderItem"
>
SELECT o.user_id,
o.*,
oi.`order_item_id` oi_order_item_id ,
oi.`shop_id` oi_shop_id,
oi.`order_id` oi_order_id,
oi.`spu_id` oi_spu_id,
oi.`sku_id` oi_sku_id,
oi.`user_id` oi_user_id,
oi.`count` oi_count,
oi.`spu_name` oi_spu_name,
oi.`sku_name` oi_sku_name,
oi.`pic` oi_pic,
oi.`delivery_type` oi_delivery_type,
oi.`shop_cart_time` oi_shop_cart_time,
oi.`price` oi_price,
oi.`spu_total_amount` oi_spu_total_amount
from `order` o
join order_item oi on o.order_id = oi.order_id
where o.order_id = #{orderId}
<if
test=
"shopId != null"
>
and o.shop_id = #{shopId}
</if>
</select>
<select
id=
"getSubmitOrderPayAmountInfo"
resultType=
"com.mall4j.cloud.order.bo.SubmitOrderPayAmountInfoBO"
>
select sum(total) as totalFee, max(create_time) as createTime from `order` where order_id in
<foreach
collection=
"orderIdList"
item=
"orderId"
separator=
","
close=
")"
open=
"("
>
#{orderId}
</foreach>
</select>
<select
id=
"getEsOrder"
resultMap=
"esOrderAndOrderItemAndUserAddrMap"
>
SELECT o.user_id,
o.*,
oi.`order_item_id` oi_order_item_id,
oi.`shop_id` oi_shop_id,
oi.`order_id` oi_order_id,
oi.`spu_id` oi_spu_id,
oi.`sku_id` oi_sku_id,
oi.`user_id` oi_user_id,
oi.`count` oi_count,
oi.`spu_name` oi_spu_name,
oi.`sku_name` oi_sku_name,
oi.`pic` oi_pic,
oi.`delivery_type` oi_delivery_type,
oi.`shop_cart_time` oi_shop_cart_time,
oi.`price` oi_price,
oi.`spu_total_amount` oi_spu_total_amount,
oa.consignee,
oa.mobile
FROM `order` AS o
JOIN order_item oi ON o.order_id = oi.order_id
left JOIN order_addr oa on o.order_addr_id = oa.order_addr_id
where o.order_id = #{orderId}
</select>
<select
id=
"countNumberOfStatus"
resultType=
"com.mall4j.cloud.order.vo.OrderCountVO"
>
SELECT COUNT(o.order_id) as all_count,
COUNT(CASE WHEN o.status = 1 THEN o.order_id ELSE NULL END) AS unPay,
COUNT(CASE WHEN o.status = 2 THEN o.order_id ELSE NULL END) AS payed,
COUNT(CASE WHEN o.status = 3 THEN o.order_id ELSE NULL END) AS consignment,
COUNT(CASE WHEN o.status = 5 THEN o.order_id ELSE NULL END) AS success
FROM `order` o WHERE o.user_id = #{userId} AND o.delete_status = 0
</select>
</mapper>
mall4cloud-order/target/classes/mapper/OrderPayInfoMapper.xml
0 → 100644
View file @
7abfefba
<?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.mall4j.cloud.order.mapper.OrderPayInfoMapper"
>
<resultMap
id=
"orderPayInfoMap"
type=
"com.mall4j.cloud.order.model.OrderPayInfo"
>
<id
column=
"pay_id"
property=
"payId"
/>
<result
column=
"create_time"
property=
"createTime"
/>
<result
column=
"update_time"
property=
"updateTime"
/>
<result
column=
"user_id"
property=
"userId"
/>
<result
column=
"biz_pay_no"
property=
"bizPayNo"
/>
<result
column=
"sys_type"
property=
"sysType"
/>
<result
column=
"pay_status"
property=
"payStatus"
/>
<result
column=
"pay_amount"
property=
"payAmount"
/>
<result
column=
"version"
property=
"version"
/>
<result
column=
"callback_content"
property=
"callbackContent"
/>
<result
column=
"callback_time"
property=
"callbackTime"
/>
<result
column=
"confirm_time"
property=
"confirmTime"
/>
</resultMap>
<insert
id=
"save"
>
insert into order_pay_info (`user_id`,`biz_pay_no`,`sys_type`,`pay_type`,`pay_status`,`pay_score`,`pay_amount`,`version`,`callback_content`,`callback_time`,`confirm_time`)
values (#{orderPayInfo.userId},#{orderPayInfo.bizPayNo},#{orderPayInfo.sysType},#{orderPayInfo.payType},#{orderPayInfo.payStatus},#{orderPayInfo.payScore},#{orderPayInfo.payAmount},#{orderPayInfo.version},#{orderPayInfo.callbackContent},#{orderPayInfo.callbackTime},#{orderPayInfo.confirmTime});
</insert>
<update
id=
"update"
>
update order_pay_info
<set>
<if
test=
"orderPayInfo.userId != null"
>
`user_id` = #{orderPayInfo.userId},
</if>
<if
test=
"orderPayInfo.bizPayNo != null"
>
`biz_pay_no` = #{orderPayInfo.bizPayNo},
</if>
<if
test=
"orderPayInfo.sysType != null"
>
`sys_type` = #{orderPayInfo.sysType},
</if>
<if
test=
"orderPayInfo.payStatus != null"
>
`pay_status` = #{orderPayInfo.payStatus},
</if>
<if
test=
"orderPayInfo.payAmount != null"
>
`pay_amount` = #{orderPayInfo.payAmount},
</if>
<if
test=
"orderPayInfo.version != null"
>
`version` = #{orderPayInfo.version},
</if>
<if
test=
"orderPayInfo.callbackContent != null"
>
`callback_content` = #{orderPayInfo.callbackContent},
</if>
<if
test=
"orderPayInfo.callbackTime != null"
>
`callback_time` = #{orderPayInfo.callbackTime},
</if>
<if
test=
"orderPayInfo.confirmTime != null"
>
`confirm_time` = #{orderPayInfo.confirmTime},
</if>
</set>
where pay_id = #{orderPayInfo.payId}
</update>
<delete
id=
"deleteById"
>
delete from order_pay_info where pay_id = #{payId}
</delete>
</mapper>
mall4cloud-payment/pom.xml
0 → 100644
View file @
7abfefba
<?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"
>
<parent>
<artifactId>
mall4cloud
</artifactId>
<groupId>
com.mall4j.cloud
</groupId>
<version>
1.0-SNAPSHOT
</version>
</parent>
<modelVersion>
4.0.0
</modelVersion>
<artifactId>
mall4cloud-payment
</artifactId>
<description>
mall4cloud 支付服务
</description>
<packaging>
jar
</packaging>
<dependencies>
<!--注册中心客户端-->
<dependency>
<groupId>
com.alibaba.cloud
</groupId>
<artifactId>
spring-cloud-starter-alibaba-nacos-discovery
</artifactId>
</dependency>
<dependency>
<groupId>
org.springframework.cloud
</groupId>
<artifactId>
spring-cloud-starter-loadbalancer
</artifactId>
</dependency>
<dependency>
<groupId>
com.alibaba.cloud
</groupId>
<artifactId>
spring-cloud-starter-alibaba-nacos-config
</artifactId>
</dependency>
<dependency>
<groupId>
com.mall4j.cloud
</groupId>
<artifactId>
mall4cloud-common-database
</artifactId>
<version>
${project.version}
</version>
</dependency>
<dependency>
<groupId>
com.mall4j.cloud
</groupId>
<artifactId>
mall4cloud-common-rocketmq
</artifactId>
<version>
${project.version}
</version>
</dependency>
<dependency>
<groupId>
com.mall4j.cloud
</groupId>
<artifactId>
mall4cloud-common-security
</artifactId>
<version>
${project.version}
</version>
</dependency>
<dependency>
<groupId>
com.mall4j.cloud
</groupId>
<artifactId>
mall4cloud-api-leaf
</artifactId>
<version>
${project.version}
</version>
</dependency>
<dependency>
<groupId>
com.mall4j.cloud
</groupId>
<artifactId>
mall4cloud-api-order
</artifactId>
<version>
${project.version}
</version>
</dependency>
<dependency>
<groupId>
com.mall4j.cloud
</groupId>
<artifactId>
mall4cloud-api-platform
</artifactId>
<version>
${project.version}
</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-maven-plugin
</artifactId>
</plugin>
</plugins>
</build>
</project>
mall4cloud-payment/src/main/java/com/mall4j/cloud/payment/PaymentApplication.java
0 → 100644
View file @
7abfefba
package
com.mall4j.cloud.payment
;
import
org.springframework.boot.SpringApplication
;
import
org.springframework.boot.autoconfigure.SpringBootApplication
;
import
org.springframework.cloud.openfeign.EnableFeignClients
;
/**
* @author FrozenWatermelon
* @date 2020/09/22
*/
@SpringBootApplication
(
scanBasePackages
=
{
"com.mall4j.cloud"
})
@EnableFeignClients
(
basePackages
=
{
"com.mall4j.cloud.api.**.feign"
})
public
class
PaymentApplication
{
public
static
void
main
(
String
[]
args
)
{
SpringApplication
.
run
(
PaymentApplication
.
class
,
args
);
}
}
mall4cloud-payment/src/main/java/com/mall4j/cloud/payment/bo/PayInfoBO.java
0 → 100644
View file @
7abfefba
package
com.mall4j.cloud.payment.bo
;
/**
* @author FrozenWatermelon
* @date 2020/12/25
*/
public
class
PayInfoBO
{
/**
* 支付信息,如商品名称
*/
private
String
body
;
/**
* 支付单号
*/
private
Long
payId
;
/**
* 付款金额
*/
private
Long
payAmount
;
/**
* api回调域名
*/
private
String
apiNoticeUrl
;
/**
* 支付完成会跳地址
*/
private
String
returnUrl
;
/**
* 第三方用户id
*/
private
String
bizUserId
;
public
String
getBody
()
{
return
body
;
}
public
void
setBody
(
String
body
)
{
this
.
body
=
body
;
}
public
Long
getPayId
()
{
return
payId
;
}
public
void
setPayId
(
Long
payId
)
{
this
.
payId
=
payId
;
}
public
Long
getPayAmount
()
{
return
payAmount
;
}
public
void
setPayAmount
(
Long
payAmount
)
{
this
.
payAmount
=
payAmount
;
}
public
String
getApiNoticeUrl
()
{
return
apiNoticeUrl
;
}
public
void
setApiNoticeUrl
(
String
apiNoticeUrl
)
{
this
.
apiNoticeUrl
=
apiNoticeUrl
;
}
public
String
getReturnUrl
()
{
return
returnUrl
;
}
public
void
setReturnUrl
(
String
returnUrl
)
{
this
.
returnUrl
=
returnUrl
;
}
public
String
getBizUserId
()
{
return
bizUserId
;
}
public
void
setBizUserId
(
String
bizUserId
)
{
this
.
bizUserId
=
bizUserId
;
}
@Override
public
String
toString
()
{
return
"PayInfoBO{"
+
"body='"
+
body
+
'\''
+
", payId='"
+
payId
+
'\''
+
", payAmount="
+
payAmount
+
", apiNoticeUrl='"
+
apiNoticeUrl
+
'\''
+
", returnUrl='"
+
returnUrl
+
'\''
+
", bizUserId='"
+
bizUserId
+
'\''
+
'}'
;
}
}
mall4cloud-payment/src/main/java/com/mall4j/cloud/payment/bo/PayInfoResultBO.java
0 → 100644
View file @
7abfefba
package
com.mall4j.cloud.payment.bo
;
/**
* 支付后返回的一些基础数据
* @author FrozenWatermelon
* @date 2020/12/25
*/
public
class
PayInfoResultBO
{
/**
* 商城支付单号
*/
private
Long
payId
;
/**
* 第三方订单流水号
*/
private
String
bizPayNo
;
/**
* 是否支付成功
*/
private
Integer
isPaySuccess
;
/**
* 支付成功的标记
*/
private
String
successString
;
/**
* 支付金额
*/
private
Long
payAmount
;
/**
* 回调内容
*/
private
String
callbackContent
;
public
Long
getPayId
()
{
return
payId
;
}
public
void
setPayId
(
Long
payId
)
{
this
.
payId
=
payId
;
}
public
String
getBizPayNo
()
{
return
bizPayNo
;
}
public
void
setBizPayNo
(
String
bizPayNo
)
{
this
.
bizPayNo
=
bizPayNo
;
}
public
Integer
getIsPaySuccess
()
{
return
isPaySuccess
;
}
public
void
setIsPaySuccess
(
Integer
isPaySuccess
)
{
this
.
isPaySuccess
=
isPaySuccess
;
}
public
String
getSuccessString
()
{
return
successString
;
}
public
void
setSuccessString
(
String
successString
)
{
this
.
successString
=
successString
;
}
public
Long
getPayAmount
()
{
return
payAmount
;
}
public
void
setPayAmount
(
Long
payAmount
)
{
this
.
payAmount
=
payAmount
;
}
public
String
getCallbackContent
()
{
return
callbackContent
;
}
public
void
setCallbackContent
(
String
callbackContent
)
{
this
.
callbackContent
=
callbackContent
;
}
@Override
public
String
toString
()
{
return
"PayInfoResultBO{"
+
"payId="
+
payId
+
", bizPayNo='"
+
bizPayNo
+
'\''
+
", isPaySuccess="
+
isPaySuccess
+
", successString='"
+
successString
+
'\''
+
", payAmount="
+
payAmount
+
", callbackContent='"
+
callbackContent
+
'\''
+
'}'
;
}
}
mall4cloud-payment/src/main/java/com/mall4j/cloud/payment/config/RocketMqConfig.java
0 → 100644
View file @
7abfefba
package
com.mall4j.cloud.payment.config
;
import
com.mall4j.cloud.common.rocketmq.config.RocketMqAdapter
;
import
com.mall4j.cloud.common.rocketmq.config.RocketMqConstant
;
import
org.apache.rocketmq.spring.core.RocketMQTemplate
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.cloud.context.config.annotation.RefreshScope
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.context.annotation.Lazy
;
/**
* @author FrozenWatermelon
* @date 2021/3/30
*/
@RefreshScope
@Configuration
public
class
RocketMqConfig
{
@Autowired
private
RocketMqAdapter
rocketMqAdapter
;
@Lazy
@Bean
(
destroyMethod
=
"destroy"
)
public
RocketMQTemplate
orderNotifyTemplate
()
{
return
rocketMqAdapter
.
getTemplateByTopicName
(
RocketMqConstant
.
ORDER_NOTIFY_TOPIC
);
}
}
mall4cloud-payment/src/main/java/com/mall4j/cloud/payment/constant/BackType.java
0 → 100644
View file @
7abfefba
package
com.mall4j.cloud.payment.constant
;
/**
* 支付回调类型
* @author FrozenWatermelon
*/
public
enum
BackType
{
/**
* api
*/
API
(
0
),
/**
* 商家端
*/
SHOP
(
1
),
/**
* 平台端
*/
PLATFORM
(
2
)
;
private
Integer
num
;
public
Integer
value
()
{
return
num
;
}
BackType
(
Integer
num
)
{
this
.
num
=
num
;
}
public
static
BackType
instance
(
Integer
value
)
{
BackType
[]
enums
=
values
();
for
(
BackType
statusEnum
:
enums
)
{
if
(
statusEnum
.
value
().
equals
(
value
))
{
return
statusEnum
;
}
}
return
null
;
}
}
mall4cloud-payment/src/main/java/com/mall4j/cloud/payment/constant/PayStatus.java
0 → 100644
View file @
7abfefba
package
com.mall4j.cloud.payment.constant
;
/**
* 支付状态
* @author FrozenWatermelon
*/
public
enum
PayStatus
{
/**
* 未支付
*/
UNPAY
(
0
),
/**
* 已支付
*/
PAYED
(
1
)
;
private
Integer
num
;
public
Integer
value
()
{
return
num
;
}
PayStatus
(
Integer
num
)
{
this
.
num
=
num
;
}
public
static
PayStatus
instance
(
Integer
value
)
{
PayStatus
[]
enums
=
values
();
for
(
PayStatus
statusEnum
:
enums
)
{
if
(
statusEnum
.
value
().
equals
(
value
))
{
return
statusEnum
;
}
}
return
null
;
}
}
mall4cloud-payment/src/main/java/com/mall4j/cloud/payment/controller/PayController.java
0 → 100644
View file @
7abfefba
package
com.mall4j.cloud.payment.controller
;
import
com.mall4j.cloud.api.auth.bo.UserInfoInTokenBO
;
import
com.mall4j.cloud.common.response.ServerResponseEntity
;
import
com.mall4j.cloud.common.security.AuthUserContext
;
import
com.mall4j.cloud.common.util.BooleanUtil
;
import
com.mall4j.cloud.payment.bo.PayInfoBO
;
import
com.mall4j.cloud.payment.dto.PayInfoDTO
;
import
com.mall4j.cloud.payment.service.PayInfoService
;
import
io.swagger.v3.oas.annotations.tags.Tag
;
import
io.swagger.v3.oas.annotations.Operation
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.web.bind.annotation.*
;
import
jakarta.servlet.http.HttpServletRequest
;
import
jakarta.validation.Valid
;
/**
* @author FrozenWatermelon
*/
@RestController
@RequestMapping
(
"/pay"
)
@Tag
(
name
=
"订单接口"
)
public
class
PayController
{
@Autowired
private
PayInfoService
payInfoService
;
@Autowired
private
PayNoticeController
payNoticeController
;
/**
* 支付接口
*/
@PostMapping
(
"/order"
)
@Operation
(
summary
=
"根据订单号进行支付"
,
description
=
"根据订单号进行支付"
)
public
ServerResponseEntity
<?>
pay
(
HttpServletRequest
request
,
@Valid
@RequestBody
PayInfoDTO
payParam
)
{
// 这里的地址是网关通过转发过来的时候,获取到当前服务器的地址,测试环境要用测试环境的uri
String
gatewayUri
=
"http://192.168.1.17:8126/mall4cloud_payment"
;
UserInfoInTokenBO
userInfoInTokenBO
=
AuthUserContext
.
get
();
Long
userId
=
userInfoInTokenBO
.
getUserId
();
PayInfoBO
payInfo
=
payInfoService
.
pay
(
userId
,
payParam
);
payInfo
.
setBizUserId
(
userInfoInTokenBO
.
getBizUserId
());
// 回调地址
payInfo
.
setApiNoticeUrl
(
gatewayUri
+
"/notice/pay/order"
);
payInfo
.
setReturnUrl
(
payParam
.
getReturnUrl
());
payNoticeController
.
submit
(
payInfo
.
getPayId
());
return
ServerResponseEntity
.
success
(
payInfo
.
getPayId
());
}
@GetMapping
(
"/isPay/{orderIds}"
)
@Operation
(
summary
=
"根据订单号查询该订单是否已经支付"
,
description
=
"根据订单号查询该订单是否已经支付"
)
public
ResponseEntity
<
Boolean
>
isPay
(
@PathVariable
String
orderIds
)
{
Long
userId
=
AuthUserContext
.
get
().
getUserId
();
payInfoService
.
getPayStatusByOrderIds
(
orderIds
);
Integer
isPay
=
payInfoService
.
isPay
(
orderIds
,
userId
);
return
ResponseEntity
.
ok
(
BooleanUtil
.
isTrue
(
isPay
));
}
}
mall4cloud-payment/src/main/java/com/mall4j/cloud/payment/controller/PayNoticeController.java
0 → 100644
View file @
7abfefba
package
com.mall4j.cloud.payment.controller
;
import
cn.hutool.core.util.StrUtil
;
import
com.mall4j.cloud.payment.bo.PayInfoResultBO
;
import
com.mall4j.cloud.payment.model.PayInfo
;
import
com.mall4j.cloud.payment.service.PayInfoService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
io.swagger.v3.oas.annotations.Hidden
;
import
java.util.ArrayList
;
import
java.util.List
;
/**
* @author FrozenWatermelon
*/
@Hidden
@RestController
@RequestMapping
(
"/notice/pay"
)
public
class
PayNoticeController
{
@Autowired
private
PayInfoService
payInfoService
;
/**
* 支付异步回调
*/
@RequestMapping
(
"/order"
)
public
ResponseEntity
<
String
>
submit
(
Long
payId
)
{
PayInfo
payInfo
=
payInfoService
.
getByPayId
(
payId
);
String
[]
orderIdStrArr
=
payInfo
.
getOrderIds
().
split
(
StrUtil
.
COMMA
);
List
<
Long
>
orderIdList
=
new
ArrayList
<>();
for
(
String
s
:
orderIdStrArr
)
{
orderIdList
.
add
(
Long
.
valueOf
(
s
));
}
PayInfoResultBO
payInfoResult
=
new
PayInfoResultBO
();
payInfoResult
.
setPayId
(
payId
);
payInfoResult
.
setBizPayNo
(
payInfo
.
getBizPayNo
());
payInfoResult
.
setCallbackContent
(
payInfo
.
getCallbackContent
());
// 支付成功
payInfoService
.
paySuccess
(
payInfoResult
,
orderIdList
);
return
ResponseEntity
.
ok
(
""
);
}
}
mall4cloud-payment/src/main/java/com/mall4j/cloud/payment/dto/PayInfoDTO.java
0 → 100644
View file @
7abfefba
package
com.mall4j.cloud.payment.dto
;
import
io.swagger.v3.oas.annotations.media.Schema
;
import
jakarta.validation.constraints.NotEmpty
;
import
java.util.List
;
/**
* 订单支付记录DTO
*
* @author FrozenWatermelon
* @date 2020-12-25 09:50:59
*/
public
class
PayInfoDTO
{
@NotEmpty
(
message
=
"订单号不能为空"
)
@Schema
(
description
=
"订单号"
,
requiredMode
=
Schema
.
RequiredMode
.
REQUIRED
)
private
List
<
Long
>
orderIds
;
@Schema
(
description
=
"支付完成回跳地址"
,
requiredMode
=
Schema
.
RequiredMode
.
REQUIRED
)
private
String
returnUrl
;
public
List
<
Long
>
getOrderIds
()
{
return
orderIds
;
}
public
void
setOrderIds
(
List
<
Long
>
orderIds
)
{
this
.
orderIds
=
orderIds
;
}
public
String
getReturnUrl
()
{
return
returnUrl
;
}
public
void
setReturnUrl
(
String
returnUrl
)
{
this
.
returnUrl
=
returnUrl
;
}
@Override
public
String
toString
()
{
return
"PayInfoDTO{"
+
"orderIds="
+
orderIds
+
", returnUrl='"
+
returnUrl
+
'\''
+
'}'
;
}
}
mall4cloud-payment/src/main/java/com/mall4j/cloud/payment/mapper/PayInfoMapper.java
0 → 100644
View file @
7abfefba
package
com.mall4j.cloud.payment.mapper
;
import
com.mall4j.cloud.payment.model.PayInfo
;
import
org.apache.ibatis.annotations.Param
;
/**
* 订单支付记录
*
* @author FrozenWatermelon
* @date 2020-12-25 09:50:59
*/
public
interface
PayInfoMapper
{
/**
* 根据订单支付记录id获取订单支付记录
*
* @param payId 订单支付记录id
* @return 订单支付记录
*/
PayInfo
getByPayId
(
@Param
(
"payId"
)
Long
payId
);
/**
* 保存订单支付记录
*
* @param payInfo 订单支付记录
*/
void
save
(
@Param
(
"payInfo"
)
PayInfo
payInfo
);
/**
* 更新订单支付记录
*
* @param payInfo 订单支付记录
*/
void
update
(
@Param
(
"payInfo"
)
PayInfo
payInfo
);
/**
* 根据订单支付记录id删除订单支付记录
*
* @param payId
*/
void
deleteById
(
@Param
(
"payId"
)
Long
payId
);
/**
* 根据支付订单号获取订单支付状态
*
* @param orderIds 订单号ids
* @return 支付状态
*/
Integer
getPayStatusByOrderIds
(
@Param
(
"orderIds"
)
String
orderIds
);
/**
* 查询订单是否已经支付
* @param orderIds 订单id
* @param userId 用户id
* @return 是否已经支付
*/
Integer
isPay
(
@Param
(
"orderIds"
)
String
orderIds
,
@Param
(
"userId"
)
Long
userId
);
}
mall4cloud-payment/src/main/java/com/mall4j/cloud/payment/model/PayInfo.java
0 → 100644
View file @
7abfefba
package
com.mall4j.cloud.payment.model
;
import
java.io.Serializable
;
import
java.util.Date
;
import
com.mall4j.cloud.common.model.BaseModel
;
/**
* 订单支付记录
*
* @author FrozenWatermelon
* @date 2020-12-25 09:50:59
*/
public
class
PayInfo
extends
BaseModel
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
public
static
final
String
DISTRIBUTED_ID_KEY
=
"mall4cloud-pay"
;
/**
* 支付单号
*/
private
Long
payId
;
/**
* 用户id
*/
private
Long
userId
;
/**
* 外部订单流水号
*/
private
String
bizPayNo
;
/**
* 本次支付关联的多个订单号
*/
private
String
orderIds
;
/**
* 系统类型 见SysTypeEnum
*/
private
Integer
sysType
;
/**
* 支付状态
*/
private
Integer
payStatus
;
/**
* 支付金额
*/
private
Long
payAmount
;
/**
* 版本号
*/
private
Integer
version
;
/**
* 回调内容
*/
private
String
callbackContent
;
/**
* 回调时间
*/
private
Date
callbackTime
;
/**
* 确认时间
*/
private
Date
confirmTime
;
public
Long
getPayId
()
{
return
payId
;
}
public
void
setPayId
(
Long
payId
)
{
this
.
payId
=
payId
;
}
public
Long
getUserId
()
{
return
userId
;
}
public
void
setUserId
(
Long
userId
)
{
this
.
userId
=
userId
;
}
public
String
getBizPayNo
()
{
return
bizPayNo
;
}
public
void
setBizPayNo
(
String
bizPayNo
)
{
this
.
bizPayNo
=
bizPayNo
;
}
public
Integer
getSysType
()
{
return
sysType
;
}
public
void
setSysType
(
Integer
sysType
)
{
this
.
sysType
=
sysType
;
}
public
Integer
getPayStatus
()
{
return
payStatus
;
}
public
void
setPayStatus
(
Integer
payStatus
)
{
this
.
payStatus
=
payStatus
;
}
public
Long
getPayAmount
()
{
return
payAmount
;
}
public
void
setPayAmount
(
Long
payAmount
)
{
this
.
payAmount
=
payAmount
;
}
public
Integer
getVersion
()
{
return
version
;
}
public
void
setVersion
(
Integer
version
)
{
this
.
version
=
version
;
}
public
String
getCallbackContent
()
{
return
callbackContent
;
}
public
void
setCallbackContent
(
String
callbackContent
)
{
this
.
callbackContent
=
callbackContent
;
}
public
Date
getCallbackTime
()
{
return
callbackTime
;
}
public
void
setCallbackTime
(
Date
callbackTime
)
{
this
.
callbackTime
=
callbackTime
;
}
public
Date
getConfirmTime
()
{
return
confirmTime
;
}
public
void
setConfirmTime
(
Date
confirmTime
)
{
this
.
confirmTime
=
confirmTime
;
}
public
String
getOrderIds
()
{
return
orderIds
;
}
public
void
setOrderIds
(
String
orderIds
)
{
this
.
orderIds
=
orderIds
;
}
@Override
public
String
toString
()
{
return
"PayInfo{"
+
"payId="
+
payId
+
", userId="
+
userId
+
", bizPayNo='"
+
bizPayNo
+
'\''
+
", orderIds='"
+
orderIds
+
'\''
+
", sysType="
+
sysType
+
", payStatus="
+
payStatus
+
", payAmount="
+
payAmount
+
", version="
+
version
+
", callbackContent='"
+
callbackContent
+
'\''
+
", callbackTime="
+
callbackTime
+
", confirmTime="
+
confirmTime
+
'}'
;
}
}
mall4cloud-payment/src/main/java/com/mall4j/cloud/payment/service/PayInfoService.java
0 → 100644
View file @
7abfefba
package
com.mall4j.cloud.payment.service
;
import
com.mall4j.cloud.payment.bo.PayInfoBO
;
import
com.mall4j.cloud.payment.bo.PayInfoResultBO
;
import
com.mall4j.cloud.payment.dto.PayInfoDTO
;
import
com.mall4j.cloud.payment.model.PayInfo
;
import
java.util.List
;
/**
* 订单支付记录
*
* @author FrozenWatermelon
* @date 2020-12-25 09:50:59
*/
public
interface
PayInfoService
{
/**
* 创建支付订单,返回给前端,前端唤起应用进行支付
* @param userId 用户id
* @param payParam 支付参数
* @return 前端唤起支付需要的参数
*/
PayInfoBO
pay
(
Long
userId
,
PayInfoDTO
payParam
);
/**
* 根据订单支付记录id获取订单支付记录
*
* @param payId 订单支付记录id
* @return 订单支付记录
*/
PayInfo
getByPayId
(
Long
payId
);
/**
* 标记为支付成功
* @param payInfoResult 支付信息
* @param orderIds 订单ids
*/
void
paySuccess
(
PayInfoResultBO
payInfoResult
,
List
<
Long
>
orderIds
);
/**
* 根据支付订单号获取订单支付状态
* @param orderIds 订单号ids
* @return 支付状态
*/
Integer
getPayStatusByOrderIds
(
String
orderIds
);
/**
* 查询订单是否已经支付
* @param orderIds 订单id
* @param userId 用户id
* @return 是否已经支付
*/
Integer
isPay
(
String
orderIds
,
Long
userId
);
}
Prev
1
…
29
30
31
32
33
34
Next
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment