Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
Y
yudao-cloud
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
hblj
yudao-cloud
Commits
3a27ae5d
提交
3a27ae5d
authored
4月 20, 2019
作者:
YunaiV
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
后端:创建订单时,创建支付交易记录
上级
57858277
隐藏空白字符变更
内嵌
并排
正在显示
8 个修改的文件
包含
126 行增加
和
29 行删除
+126
-29
pom.xml
common/common-framework/pom.xml
+4
-3
package.json
mobile-web/package.json
+2
-1
index.vue
mobile-web/src/page/pay/index.vue
+54
-0
UsersOrderController.java
...er/application/controller/users/UsersOrderController.java
+3
-2
PayAppId.java
...ain/java/cn/iocoder/mall/order/api/constant/PayAppId.java
+1
-1
OrderServiceImpl.java
...a/cn/iocoder/mall/order/biz/service/OrderServiceImpl.java
+32
-17
PayTransactionCreateDTO.java
.../cn/iocoder/mall/pay/api/dto/PayTransactionCreateDTO.java
+5
-5
pom.xml
pom.xml
+25
-0
没有找到文件。
common/common-framework/pom.xml
浏览文件 @
3a27ae5d
...
@@ -45,10 +45,12 @@
...
@@ -45,10 +45,12 @@
<version>
2.9.7
</version>
<version>
2.9.7
</version>
</dependency>
</dependency>
<dependency>
<dependency>
<groupId>
org.hibernate
.validator
</groupId>
<groupId>
org.hibernate
</groupId>
<artifactId>
hibernate-validator
</artifactId>
<artifactId>
hibernate-validator
</artifactId>
<version>
6.0.15.Final
</version>
<!-- <version>5.4.3.Final</version>-->
<version>
6.0.16.Final
</version>
</dependency>
</dependency>
<!--<dependency>-->
<!--<dependency>-->
<!--<groupId>com.baomidou</groupId>-->
<!--<groupId>com.baomidou</groupId>-->
<!--<artifactId>mybatis-plus-support</artifactId>-->
<!--<artifactId>mybatis-plus-support</artifactId>-->
...
@@ -84,5 +86,4 @@
...
@@ -84,5 +86,4 @@
</dependencies>
</dependencies>
</project>
</project>
mobile-web/package.json
浏览文件 @
3a27ae5d
...
@@ -14,7 +14,8 @@
...
@@ -14,7 +14,8 @@
"vant"
:
"^1.3.1"
,
"vant"
:
"^1.3.1"
,
"vue"
:
"^2.5.17"
,
"vue"
:
"^2.5.17"
,
"vue-router"
:
"^3.0.1"
,
"vue-router"
:
"^3.0.1"
,
"vuex"
:
"^3.1.0"
"vuex"
:
"^3.1.0"
,
"pingpp-js"
:
"^2.2.13"
},
},
"devDependencies"
:
{
"devDependencies"
:
{
"@vue/cli-plugin-babel"
:
"^3.4.1"
,
"@vue/cli-plugin-babel"
:
"^3.4.1"
,
...
...
mobile-web/src/page/pay/index.vue
0 → 100644
浏览文件 @
3a27ae5d
<
template
>
<div>
<van-cell-group>
<van-cell
title=
"优惠劵编号"
:value=
"couponTemplate.id"
/>
<van-cell
title=
"优惠劵名"
:value=
"couponTemplate.title"
/>
</van-cell-group>
<van-button
slot=
"button"
size=
"small"
type=
"primary"
@
click=
"onFetchClick"
>
领取优惠劵
</van-button>
</div>
</
template
>
<
script
>
import
{
getCouponTemplate
,
doAddCouponCard
}
from
'../../api/promotion'
;
import
{
Dialog
}
from
'vant'
;
import
{
setLoginToken
}
from
'../../utils/cache'
;
export
default
{
data
()
{
return
{
couponTemplate
:
{
}
}
},
mounted
()
{
let
id
=
this
.
$route
.
query
.
id
;
let
response
=
getCouponTemplate
(
id
);
response
.
then
(
data
=>
{
this
.
couponTemplate
=
data
;
});
},
methods
:
{
onFetchClick
:
function
()
{
let
that
=
this
;
let
id
=
this
.
$route
.
query
.
id
;
let
response
=
doAddCouponCard
(
id
);
response
.
then
(
data
=>
{
Dialog
.
alert
({
title
:
'系统提示'
,
message
:
'领取成功'
,
beforeClose
:
function
(
action
,
done
)
{
// 关闭弹窗
done
();
// 跳转到我的优惠劵
that
.
$router
.
push
(
'/user/coupon'
);
}
});
});
}
}
}
</
script
>
order/order-application/src/main/java/cn/iocoder/mall/order/application/controller/users/UsersOrderController.java
浏览文件 @
3a27ae5d
...
@@ -57,10 +57,11 @@ public class UsersOrderController {
...
@@ -57,10 +57,11 @@ public class UsersOrderController {
@PostMapping
(
"create_order"
)
@PostMapping
(
"create_order"
)
@ApiOperation
(
"创建订单"
)
@ApiOperation
(
"创建订单"
)
public
CommonResult
<
OrderCreateBO
>
createOrder
(
@RequestBody
@Validated
OrderCreatePO
orderCreatePO
)
{
public
CommonResult
<
OrderCreateBO
>
createOrder
(
@RequestBody
@Validated
OrderCreatePO
orderCreatePO
,
HttpServletRequest
request
)
{
Integer
userId
=
UserSecurityContextHolder
.
getContext
().
getUserId
();
Integer
userId
=
UserSecurityContextHolder
.
getContext
().
getUserId
();
OrderCreateDTO
orderCreateDTO
=
OrderConvertAPP
.
INSTANCE
.
convert
(
orderCreatePO
);
OrderCreateDTO
orderCreateDTO
=
OrderConvertAPP
.
INSTANCE
.
convert
(
orderCreatePO
);
orderCreateDTO
.
setUserId
(
userId
);
orderCreateDTO
.
setUserId
(
userId
)
.
setIp
(
HttpUtil
.
getIp
(
request
))
;
return
orderService
.
createOrder
(
orderCreateDTO
);
return
orderService
.
createOrder
(
orderCreateDTO
);
}
}
...
...
order/order-service-api/src/main/java/cn/iocoder/mall/order/api/constant/PayAppId.java
浏览文件 @
3a27ae5d
...
@@ -11,6 +11,6 @@ public class PayAppId {
...
@@ -11,6 +11,6 @@ public class PayAppId {
/**
/**
* 电商
* 电商
*/
*/
public
static
final
String
APP_ID_
1024
=
"1024
"
;
public
static
final
String
APP_ID_
SHOP_ORDER
=
"POd4RC6a
"
;
}
}
order/order-service-impl/src/main/java/cn/iocoder/mall/order/biz/service/OrderServiceImpl.java
浏览文件 @
3a27ae5d
package
cn
.
iocoder
.
mall
.
order
.
biz
.
service
;
package
cn
.
iocoder
.
mall
.
order
.
biz
.
service
;
import
cn.iocoder.common.framework.constant.DeletedStatusEnum
;
import
cn.iocoder.common.framework.constant.DeletedStatusEnum
;
import
cn.iocoder.common.framework.util.DateUtil
;
import
cn.iocoder.common.framework.util.ServiceExceptionUtil
;
import
cn.iocoder.common.framework.util.ServiceExceptionUtil
;
import
cn.iocoder.common.framework.vo.CommonResult
;
import
cn.iocoder.common.framework.vo.CommonResult
;
import
cn.iocoder.mall.order.api.OrderService
;
import
cn.iocoder.mall.order.api.OrderService
;
...
@@ -8,6 +9,7 @@ import cn.iocoder.mall.order.api.bo.*;
...
@@ -8,6 +9,7 @@ import cn.iocoder.mall.order.api.bo.*;
import
cn.iocoder.mall.order.api.constant.OrderErrorCodeEnum
;
import
cn.iocoder.mall.order.api.constant.OrderErrorCodeEnum
;
import
cn.iocoder.mall.order.api.constant.OrderHasReturnExchangeEnum
;
import
cn.iocoder.mall.order.api.constant.OrderHasReturnExchangeEnum
;
import
cn.iocoder.mall.order.api.constant.OrderStatusEnum
;
import
cn.iocoder.mall.order.api.constant.OrderStatusEnum
;
import
cn.iocoder.mall.order.api.constant.PayAppId
;
import
cn.iocoder.mall.order.api.dto.*
;
import
cn.iocoder.mall.order.api.dto.*
;
import
cn.iocoder.mall.order.biz.constants.OrderDeliveryTypeEnum
;
import
cn.iocoder.mall.order.biz.constants.OrderDeliveryTypeEnum
;
import
cn.iocoder.mall.order.biz.constants.OrderRecipientTypeEnum
;
import
cn.iocoder.mall.order.biz.constants.OrderRecipientTypeEnum
;
...
@@ -15,6 +17,8 @@ import cn.iocoder.mall.order.biz.convert.*;
...
@@ -15,6 +17,8 @@ import cn.iocoder.mall.order.biz.convert.*;
import
cn.iocoder.mall.order.biz.dao.*
;
import
cn.iocoder.mall.order.biz.dao.*
;
import
cn.iocoder.mall.order.biz.dataobject.*
;
import
cn.iocoder.mall.order.biz.dataobject.*
;
import
cn.iocoder.mall.pay.api.PayTransactionService
;
import
cn.iocoder.mall.pay.api.PayTransactionService
;
import
cn.iocoder.mall.pay.api.bo.PayTransactionBO
;
import
cn.iocoder.mall.pay.api.dto.PayTransactionCreateDTO
;
import
cn.iocoder.mall.product.api.ProductSpuService
;
import
cn.iocoder.mall.product.api.ProductSpuService
;
import
cn.iocoder.mall.product.api.bo.ProductSkuDetailBO
;
import
cn.iocoder.mall.product.api.bo.ProductSkuDetailBO
;
import
cn.iocoder.mall.user.api.UserAddressService
;
import
cn.iocoder.mall.user.api.UserAddressService
;
...
@@ -41,9 +45,9 @@ import java.util.stream.Collectors;
...
@@ -41,9 +45,9 @@ import java.util.stream.Collectors;
public
class
OrderServiceImpl
implements
OrderService
{
public
class
OrderServiceImpl
implements
OrderService
{
/**
/**
* 支付过期时间 1
5
分钟
* 支付过期时间 1
20
分钟
*/
*/
public
static
final
int
PAY_EXPIRE_TIME
=
1
5
;
public
static
final
int
PAY_EXPIRE_TIME
=
1
20
;
@Autowired
@Autowired
private
OrderMapper
orderMapper
;
private
OrderMapper
orderMapper
;
...
@@ -64,7 +68,7 @@ public class OrderServiceImpl implements OrderService {
...
@@ -64,7 +68,7 @@ public class OrderServiceImpl implements OrderService {
private
CartServiceImpl
cartService
;
private
CartServiceImpl
cartService
;
@Reference
@Reference
private
UserAddressService
userAddressService
;
private
UserAddressService
userAddressService
;
@Reference
@Reference
(
validation
=
"true"
)
private
PayTransactionService
payTransactionService
;
private
PayTransactionService
payTransactionService
;
@Override
@Override
...
@@ -187,7 +191,7 @@ public class OrderServiceImpl implements OrderService {
...
@@ -187,7 +191,7 @@ public class OrderServiceImpl implements OrderService {
}
}
@Override
@Override
@Transactional
@Transactional
// TODO 芋艿,先不考虑分布式事务的问题
public
CommonResult
<
OrderCreateBO
>
createOrder
(
OrderCreateDTO
orderCreateDTO
)
{
public
CommonResult
<
OrderCreateBO
>
createOrder
(
OrderCreateDTO
orderCreateDTO
)
{
Integer
userId
=
orderCreateDTO
.
getUserId
();
Integer
userId
=
orderCreateDTO
.
getUserId
();
List
<
OrderCreateItemDTO
>
orderItemDTOList
=
orderCreateDTO
.
getOrderItems
();
List
<
OrderCreateItemDTO
>
orderItemDTOList
=
orderCreateDTO
.
getOrderItems
();
...
@@ -245,6 +249,9 @@ public class OrderServiceImpl implements OrderService {
...
@@ -245,6 +249,9 @@ public class OrderServiceImpl implements OrderService {
.
setPresentTotal
(
priceItem
.
getPresentTotal
());
.
setPresentTotal
(
priceItem
.
getPresentTotal
());
}
}
// TODO 芋艿,标记优惠劵使用
// TODO 芋艿,扣除库存
// order
// order
// TODO: 2019-04-11 Sin 订单号需要生成规则
// TODO: 2019-04-11 Sin 订单号需要生成规则
...
@@ -310,19 +317,10 @@ public class OrderServiceImpl implements OrderService {
...
@@ -310,19 +317,10 @@ public class OrderServiceImpl implements OrderService {
orderItemMapper
.
insert
(
orderItemDOList
);
orderItemMapper
.
insert
(
orderItemDOList
);
// 创建预订单
// 创建预订单
// TODO sin 支付订单 orderSubject 暂时取第一个子订单商品信息
CommonResult
<
PayTransactionBO
>
createPayTransactionResult
=
createPayTransaction
(
orderDO
,
orderItemDOList
,
orderCreateDTO
.
getIp
());
// String orderSubject = orderItemDOList.get(0).getSkuName();
if
(
calcOrderPriceResult
.
isError
())
{
// Date expireTime = DateUtil.addDate(Calendar.MINUTE, PAY_EXPIRE_TIME);
return
CommonResult
.
error
(
calcOrderPriceResult
);
// CommonResult commonResult = payTransactionService.createTransaction(
}
// new PayTransactionCreateDTO()
// .setCreateIp(orderCreateDTO.getIp())
// .setAppId(PayAppId.APP_ID_1024)
// .setExpireTime(expireTime)
// .setPrice(orderDO.getPayAmount())
// .setOrderSubject(orderSubject)
// .setOrderMemo(orderDO.getRemark())
// .setOrderDescription("")
// );
// if (commonResult.isError()) {
// if (commonResult.isError()) {
// //手动开启事务回滚
// //手动开启事务回滚
...
@@ -352,6 +350,23 @@ public class OrderServiceImpl implements OrderService {
...
@@ -352,6 +350,23 @@ public class OrderServiceImpl implements OrderService {
return
cartService
.
calcOrderPrice
(
calcOrderPriceDTO
);
return
cartService
.
calcOrderPrice
(
calcOrderPriceDTO
);
}
}
private
CommonResult
<
PayTransactionBO
>
createPayTransaction
(
OrderDO
order
,
List
<
OrderItemDO
>
orderItems
,
String
ip
)
{
// TODO sin 支付订单 orderSubject 暂时取第一个子订单商品信息
String
orderSubject
=
orderItems
.
get
(
0
).
getSkuName
();
Date
expireTime
=
DateUtil
.
addDate
(
Calendar
.
MINUTE
,
PAY_EXPIRE_TIME
);
return
payTransactionService
.
createTransaction
(
new
PayTransactionCreateDTO
()
.
setCreateIp
(
ip
)
.
setAppId
(
PayAppId
.
APP_ID_SHOP_ORDER
)
.
setOrderId
(
order
.
getId
().
toString
())
.
setExpireTime
(
expireTime
)
.
setPrice
(
order
.
getPresentPrice
())
.
setOrderSubject
(
orderSubject
)
.
setOrderMemo
(
"测试备注"
)
// TODO 芋艿,后面补充
.
setOrderDescription
(
"测试描述"
)
// TODO 芋艿,后面补充
);
}
@Override
@Override
public
CommonResult
updateOrderItem
(
OrderItemUpdateDTO
orderUpdateDTO
)
{
public
CommonResult
updateOrderItem
(
OrderItemUpdateDTO
orderUpdateDTO
)
{
OrderItemDO
orderItemDO
=
OrderItemConvert
.
INSTANCE
.
convert
(
orderUpdateDTO
);
OrderItemDO
orderItemDO
=
OrderItemConvert
.
INSTANCE
.
convert
(
orderUpdateDTO
);
...
...
pay/pay-service-api/src/main/java/cn/iocoder/mall/pay/api/dto/PayTransactionCreateDTO.java
浏览文件 @
3a27ae5d
...
@@ -2,11 +2,11 @@ package cn.iocoder.mall.pay.api.dto;
...
@@ -2,11 +2,11 @@ package cn.iocoder.mall.pay.api.dto;
import
lombok.Data
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
import
lombok.experimental.Accessors
;
import
org.hibernate.validator.constraints.Length
;
import
org.hibernate.validator.constraints.NotEmpty
;
import
javax.validation.constraints.DecimalMin
;
import
javax.validation.constraints.DecimalMin
;
import
javax.validation.constraints.NotEmpty
;
import
javax.validation.constraints.NotNull
;
import
javax.validation.constraints.NotNull
;
import
javax.validation.constraints.Size
;
import
java.io.Serializable
;
import
java.io.Serializable
;
import
java.util.Date
;
import
java.util.Date
;
...
@@ -36,18 +36,18 @@ public class PayTransactionCreateDTO implements Serializable {
...
@@ -36,18 +36,18 @@ public class PayTransactionCreateDTO implements Serializable {
* 订单商品名
* 订单商品名
*/
*/
@NotEmpty
(
message
=
"商品名不能为空"
)
@NotEmpty
(
message
=
"商品名不能为空"
)
@
Size
(
max
=
32
,
message
=
"商品名不能超过32"
)
@
Length
(
max
=
32
,
message
=
"商品名不能超过32"
)
private
String
orderSubject
;
private
String
orderSubject
;
/**
/**
* 订单商品描述
* 订单商品描述
*/
*/
@NotEmpty
(
message
=
"商品描述不能为空"
)
@NotEmpty
(
message
=
"商品描述不能为空"
)
@
Size
(
max
=
128
,
message
=
"商品描述长度不能超过128"
)
@
Length
(
max
=
128
,
message
=
"商品描述长度不能超过128"
)
private
String
orderDescription
;
private
String
orderDescription
;
/**
/**
* 订单备注
* 订单备注
*/
*/
@
Size
(
max
=
256
,
message
=
"商品描述长度不能超过256"
)
@
Length
(
max
=
256
,
message
=
"商品描述长度不能超过256"
)
private
String
orderMemo
;
private
String
orderMemo
;
/**
/**
* 支付金额,单位:分。
* 支付金额,单位:分。
...
...
pom.xml
浏览文件 @
3a27ae5d
...
@@ -26,6 +26,7 @@
...
@@ -26,6 +26,7 @@
<packaging>
pom
</packaging>
<packaging>
pom
</packaging>
<properties>
<properties>
<springboot.version>
2.1.3.RELEASE
</springboot.version>
<com.alibab.dubbo.version>
2.6.5
</com.alibab.dubbo.version>
<com.alibab.dubbo.version>
2.6.5
</com.alibab.dubbo.version>
<mysql-connector-java.version>
5.1.47
</mysql-connector-java.version>
<mysql-connector-java.version>
5.1.47
</mysql-connector-java.version>
<dubbo-spring-boot-starter.version>
0.2.1.RELEASE
</dubbo-spring-boot-starter.version>
<dubbo-spring-boot-starter.version>
0.2.1.RELEASE
</dubbo-spring-boot-starter.version>
...
@@ -118,6 +119,30 @@
...
@@ -118,6 +119,30 @@
<groupId>
org.apache.rocketmq
</groupId>
<groupId>
org.apache.rocketmq
</groupId>
<artifactId>
rocketmq-spring-boot-starter
</artifactId>
<artifactId>
rocketmq-spring-boot-starter
</artifactId>
<version>
${rocketmq-spring-boot-starter.version}
</version>
<version>
${rocketmq-spring-boot-starter.version}
</version>
<!-- <exclusions>-->
<!-- <exclusion>-->
<!-- <artifactId>hibernate-validator</artifactId>-->
<!-- <groupId>org.hibernate.validator</groupId>-->
<!-- </exclusion>-->
<!-- </exclusions>-->
</dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter
</artifactId>
<version>
${springboot.version}
</version>
</dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-web
</artifactId>
<version>
${springboot.version}
</version>
<!-- <exclusions>-->
<!-- <exclusion>-->
<!-- <artifactId>hibernate-validator</artifactId>-->
<!-- <groupId>org.hibernate.validator</groupId>-->
<!-- </exclusion>-->
<!-- </exclusions>-->
</dependency>
</dependency>
</dependencies>
</dependencies>
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论