Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
O
oms
概览
概览
详情
活动
周期分析
版本库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
iuav
oms
Commits
c7a6a354
提交
c7a6a354
authored
9月 22, 2023
作者:
xiaowang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
租赁订单下单
上级
de8e5ad1
隐藏空白字符变更
内嵌
并排
正在显示
19 个修改的文件
包含
1687 行增加
和
40 行删除
+1687
-40
CodeUtil.java
src/main/java/com/mmc/oms/common/util/CodeUtil.java
+13
-0
LeaseOrderController.java
...va/com/mmc/oms/controller/lease/LeaseOrderController.java
+39
-0
LeaseOrderDao.java
src/main/java/com/mmc/oms/dao/lease/LeaseOrderDao.java
+17
-0
LeaseOrderDO.java
src/main/java/com/mmc/oms/entity/lease/LeaseOrderDO.java
+163
-0
LeaseOrderExpressDO.java
...in/java/com/mmc/oms/entity/lease/LeaseOrderExpressDO.java
+70
-0
LeaseOrderStatus.java
src/main/java/com/mmc/oms/enums/LeaseOrderStatus.java
+38
-0
LeaseTermInfo.java
src/main/java/com/mmc/oms/enums/LeaseTermInfo.java
+35
-0
PmsAppApi.java
src/main/java/com/mmc/oms/feign/PmsAppApi.java
+8
-1
PmsAppApiHystrix.java
...main/java/com/mmc/oms/feign/hystrix/PmsAppApiHystrix.java
+8
-2
LeaseOrderDTO.java
src/main/java/com/mmc/oms/model/dto/lease/LeaseOrderDTO.java
+95
-0
AddLeaseOrderVO.java
...main/java/com/mmc/oms/model/vo/lease/AddLeaseOrderVO.java
+60
-0
LeaseGoodsVO.java
src/main/java/com/mmc/oms/model/vo/lease/LeaseGoodsVO.java
+134
-0
LeasePriceStockVO.java
...in/java/com/mmc/oms/model/vo/lease/LeasePriceStockVO.java
+63
-0
LeaseOrderService.java
...ain/java/com/mmc/oms/service/lease/LeaseOrderService.java
+16
-0
LeaseOrderServiceImpl.java
...com/mmc/oms/service/lease/impl/LeaseOrderServiceImpl.java
+241
-0
UavOrderService.java
src/main/java/com/mmc/oms/service/uav/UavOrderService.java
+4
-4
UavOrderServiceImpl.java
...ava/com/mmc/oms/service/uav/impl/UavOrderServiceImpl.java
+34
-33
TDateUtil.java
src/main/java/com/mmc/oms/util/TDateUtil.java
+611
-0
LeaseOrderDao.xml
src/main/resources/mapper/lease/LeaseOrderDao.xml
+38
-0
没有找到文件。
src/main/java/com/mmc/oms/common/util/CodeUtil.java
浏览文件 @
c7a6a354
package
com
.
mmc
.
oms
.
common
.
util
;
import
java.text.SimpleDateFormat
;
import
java.util.Date
;
import
java.util.Random
;
import
java.util.concurrent.atomic.AtomicInteger
;
/**
* @Author small
...
...
@@ -243,4 +246,14 @@ public class CodeUtil {
return
"AC"
+
CodeUtil
.
getRandomNum
(
5
);
}
private
static
final
SimpleDateFormat
sdf
=
new
SimpleDateFormat
(
"yyyyMMddHHmmss"
);
private
static
final
AtomicInteger
counter
=
new
AtomicInteger
(
0
);
public
static
String
generateOrderId
()
{
Date
now
=
new
Date
();
String
dateString
=
sdf
.
format
(
now
);
int
count
=
counter
.
incrementAndGet
();
return
"ORD"
+
dateString
+
String
.
format
(
"%04d"
,
count
);
}
}
src/main/java/com/mmc/oms/controller/lease/LeaseOrderController.java
0 → 100644
浏览文件 @
c7a6a354
package
com
.
mmc
.
oms
.
controller
.
lease
;
import
com.mmc.oms.common.result.ResultBody
;
import
com.mmc.oms.controller.BaseController
;
import
com.mmc.oms.model.dto.lease.LeaseOrderDTO
;
import
com.mmc.oms.model.vo.lease.AddLeaseOrderVO
;
import
com.mmc.oms.service.lease.LeaseOrderService
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
io.swagger.annotations.ApiResponse
;
import
io.swagger.annotations.ApiResponses
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
javax.annotation.Resource
;
import
javax.servlet.http.HttpServletRequest
;
/**
* @author: lw
* @Date: 2023/9/21 16:29
*/
@Api
(
tags
=
{
"最新版--租赁订单接口"
})
@RestController
@RequestMapping
(
"/lease/order/"
)
public
class
LeaseOrderController
extends
BaseController
{
@Resource
private
LeaseOrderService
leaseOrderService
;
@ApiOperation
(
value
=
"提交订单"
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
LeaseOrderDTO
.
class
)})
@PostMapping
(
"addLeaseOrder"
)
public
ResultBody
<
LeaseOrderDTO
>
addLeaseOrder
(
@RequestBody
AddLeaseOrderVO
param
,
HttpServletRequest
request
)
{
return
leaseOrderService
.
addLeaseOrder
(
param
,
this
.
getCurrentAccount
(
request
));
}
}
src/main/java/com/mmc/oms/dao/lease/LeaseOrderDao.java
0 → 100644
浏览文件 @
c7a6a354
package
com
.
mmc
.
oms
.
dao
.
lease
;
import
com.mmc.oms.entity.lease.LeaseOrderDO
;
import
com.mmc.oms.entity.lease.LeaseOrderExpressDO
;
import
org.apache.ibatis.annotations.Mapper
;
/**
* @Author LW
* @date 2023/9/21 16:48
* 概要:
*/
@Mapper
public
interface
LeaseOrderDao
{
void
addOrder
(
LeaseOrderDO
leaseOrderDO
);
void
addAddress
(
LeaseOrderExpressDO
leaseOrderExpressDO
);
}
src/main/java/com/mmc/oms/entity/lease/LeaseOrderDO.java
0 → 100644
浏览文件 @
c7a6a354
package
com
.
mmc
.
oms
.
entity
.
lease
;
import
com.mmc.oms.model.dto.lease.LeaseOrderDTO
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.io.Serializable
;
import
java.math.BigDecimal
;
import
java.util.Date
;
/**
* (LeaseOrderDO)实体类
*
* @author makejava
* @since 2023-09-21 16:59:10
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public
class
LeaseOrderDO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
-
58305538180098964L
;
private
Integer
id
;
/**
* 订单编号
*/
private
String
orderNo
;
/**
* 订单状态
*/
private
Integer
statusCode
;
/**
* 下单用户id
*/
private
Integer
userAccountId
;
/**
* 租赁商品id
*/
private
Integer
leaseGoodsId
;
/**
* 商家企业名称
*/
private
String
companyName
;
/**
* 商家id
*/
private
Integer
thirdBackUserAccountId
;
/**
* 商品标题
*/
private
String
orderName
;
/**
* sku图片/商品图片
*/
private
String
skuImg
;
/**
* 订单总金额
*/
private
BigDecimal
orderTotalAmount
;
/**
* 抵扣佣金金额
*/
private
BigDecimal
salaryAmount
;
/**
* 抵扣云享金金额
*/
private
BigDecimal
shareAmount
;
/**
* 其他渠道应支付金额
*/
private
BigDecimal
otherAmount
;
/**
* 支付方式,wechatpay微信,alipay支付宝,offline线下
*/
private
String
payType
;
/**
* 用户收货地址id
*/
private
Integer
userAddressId
;
/**
* 买家备注信息
*/
private
String
userRemark
;
/**
* 商家备注信息
*/
private
String
sellerRemark
;
/**
* 支付时间
*/
private
Date
payTime
;
/**
* 确认收货时间(成交时间)
*/
private
Date
confirmReceiptTime
;
/**
* 修改版本
*/
private
Integer
version
;
/**
* 评价状态
*/
private
Integer
remarkStatus
;
/**
* 订单分成比例(平台收取)
*/
private
Integer
proportion
;
/**
* 用户删除(0用户不可看,1用户可看)
* (假删除,后台还能看到)
*/
private
Integer
showUserPort
;
/**
* 生成订单时间(下单时间)
*/
private
Date
createTime
;
/**
* 最近修改时间
*/
private
Date
updateTime
;
/**
* 单价 元/天
*/
private
BigDecimal
unitPrice
;
/**
* 购买的商品数量
*/
private
Integer
wareNum
;
/**
* 押金
*/
private
BigDecimal
deposit
;
/**
* 租约开始日
*/
private
Date
startDate
;
/**
* 租约结束日
*/
private
Date
endDate
;
/**
* 关闭原因
*/
private
String
shutReason
;
/**
* sku
*/
private
String
sku
;
/**
* 发货时间
*/
private
Date
sendWareTime
;
public
LeaseOrderDTO
buildLeaseOrderDTO
()
{
return
LeaseOrderDTO
.
builder
().
id
(
id
).
orderNo
(
orderNo
).
statusCode
(
statusCode
).
userAccountId
(
userAccountId
)
.
thirdBackUserAccountId
(
thirdBackUserAccountId
).
companyName
(
companyName
).
orderTotalAmount
(
orderTotalAmount
)
.
salaryAmount
(
salaryAmount
).
shareAmount
(
shareAmount
).
otherAmount
(
otherAmount
).
payType
(
payType
).
payTime
(
payTime
)
.
startDate
(
startDate
).
endDate
(
endDate
).
userRemark
(
userRemark
).
sellerRemark
(
sellerRemark
).
createTime
(
createTime
)
.
confirmReceiptTime
(
confirmReceiptTime
).
remarkStatus
(
remarkStatus
).
sku
(
sku
).
skuImg
(
skuImg
).
build
();
}
}
src/main/java/com/mmc/oms/entity/lease/LeaseOrderExpressDO.java
0 → 100644
浏览文件 @
c7a6a354
package
com
.
mmc
.
oms
.
entity
.
lease
;
import
com.mmc.oms.entity.mall.UserAddressDO
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.io.Serializable
;
import
java.util.Date
;
/**
* (LeaseOrderExpressDO)实体类
*
* @author makejava
* @since 2023-09-22 15:02:22
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public
class
LeaseOrderExpressDO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
-
24578000103219438L
;
private
Integer
id
;
private
Integer
leaseOrderId
;
private
String
sendExpNo
;
private
String
sendExpCode
;
/**
* 收货人姓名
*/
private
String
takeName
;
/**
* 收货人电话
*/
private
String
takePhone
;
/**
* 收货地区
*/
private
String
takeRegion
;
/**
* 收货详细地址
*/
private
String
takeAddress
;
/**
* 发货时间
*/
private
Date
sendTime
;
/**
* 是否已签收
*/
private
Integer
isReceive
;
/**
* 收货人签收时间
*/
private
Date
receiveTime
;
private
Date
updateTime
;
private
Date
createTime
;
public
LeaseOrderExpressDO
(
UserAddressDO
userAddressDO
)
{
this
.
takeName
=
userAddressDO
.
getTakeName
();
this
.
takePhone
=
userAddressDO
.
getTakePhone
();
this
.
takeRegion
=
userAddressDO
.
getTakeRegion
();
this
.
takeAddress
=
userAddressDO
.
getTakeAddress
();
}
}
src/main/java/com/mmc/oms/enums/LeaseOrderStatus.java
0 → 100644
浏览文件 @
c7a6a354
package
com
.
mmc
.
oms
.
enums
;
/**
* @author: zj
* @Date: 2023/9/4 14:36
*/
public
enum
LeaseOrderStatus
{
PLACED_AN_ORDER
(
100
,
"已下单"
,
"待付款"
),
PAID
(
200
,
"已付款"
,
"等发货"
),
SHIPPED
(
300
,
"卖家已发货"
,
"待买家收货"
),
TO_BE_RETURNED
(
400
,
"待归还"
,
"待归还"
),
WAITING_MERCHANT_CONFIRM
(
500
,
"等待商家确认"
,
"等待商家确认"
),
COMPLETE_TRANSACTION
(
600
,
"交易完成"
,
"交易完成"
),
APPLY_REFUND
(
700
,
"申请退款"
,
"退款中"
),
CLOSE
(
999
,
"订单关闭"
,
"订单关闭"
);
public
Integer
getCode
()
{
return
code
;
}
public
String
getDoing
()
{
return
doing
;
}
public
String
getWaiting
()
{
return
waiting
;
}
LeaseOrderStatus
(
Integer
code
,
String
doing
,
String
waiting
)
{
this
.
code
=
code
;
this
.
doing
=
doing
;
this
.
waiting
=
waiting
;
}
private
Integer
code
;
private
String
doing
;
private
String
waiting
;
}
src/main/java/com/mmc/oms/enums/LeaseTermInfo.java
0 → 100644
浏览文件 @
c7a6a354
package
com
.
mmc
.
oms
.
enums
;
/**
* @author: lw
* @Date: 2023/9/4 14:36
*/
public
enum
LeaseTermInfo
{
THREE_DAY
(
1
,
3
,
"三天"
),
SEVEN_DAY
(
2
,
7
,
"七天"
),
THIRTY_DAY
(
3
,
30
,
"三十天"
),
NINETY_DAY
(
4
,
90
,
"九十天"
),
ONE_HUNDRED_AND_EIGHTY_DAY
(
5
,
180
,
"一百八十天"
);
public
Integer
getId
()
{
return
id
;
}
public
Integer
getDays
()
{
return
days
;
}
public
String
getDescription
()
{
return
description
;
}
LeaseTermInfo
(
Integer
id
,
Integer
days
,
String
description
)
{
this
.
id
=
id
;
this
.
days
=
days
;
this
.
description
=
description
;
}
private
Integer
id
;
private
Integer
days
;
private
String
description
;
}
src/main/java/com/mmc/oms/feign/PmsAppApi.java
浏览文件 @
c7a6a354
...
...
@@ -4,8 +4,12 @@ import com.mmc.oms.common.result.ResultBody;
import
com.mmc.oms.feign.hystrix.PmsAppApiHystrix
;
import
com.mmc.oms.model.dto.uav.UavCartDTO
;
import
com.mmc.oms.model.qo.uav.PriceStockQO
;
import
com.mmc.oms.model.vo.lease.LeaseGoodsVO
;
import
org.springframework.cloud.openfeign.FeignClient
;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
java.util.List
;
...
...
@@ -20,4 +24,7 @@ public interface PmsAppApi {
@PostMapping
(
"app/goods/listPriceStock"
)
List
<
UavCartDTO
>
listPriceStock
(
@RequestBody
List
<
PriceStockQO
>
priceStockQOS
);
@GetMapping
(
"app/lease/leaseGoodsDetails"
)
ResultBody
<
LeaseGoodsVO
>
leaseGoodsDetails
(
@RequestParam
Integer
id
);
}
src/main/java/com/mmc/oms/feign/hystrix/PmsAppApiHystrix.java
浏览文件 @
c7a6a354
...
...
@@ -5,8 +5,8 @@ import com.mmc.oms.common.result.ResultBody;
import
com.mmc.oms.feign.PmsAppApi
;
import
com.mmc.oms.model.dto.uav.UavCartDTO
;
import
com.mmc.oms.model.qo.uav.PriceStockQO
;
import
com.mmc.oms.model.vo.lease.LeaseGoodsVO
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
java.util.List
;
...
...
@@ -18,7 +18,7 @@ import java.util.List;
public
class
PmsAppApiHystrix
implements
PmsAppApi
{
@Override
public
ResultBody
feignLeaseGoodsInfoByAddressId
(
Integer
id
)
{
log
.
info
(
"熔断:PmsAppApiHystrix.feignLeaseGoodsInfoByAddressId==error==>param:{}"
,
id
);
log
.
info
(
"熔断:PmsAppApiHystrix.feignLeaseGoodsInfoByAddressId==error==>param:{}"
,
id
);
return
null
;
}
...
...
@@ -27,4 +27,10 @@ public class PmsAppApiHystrix implements PmsAppApi {
log
.
info
(
"熔断:PmsAppApiHystrix.listPriceStock==error==>param:{}"
,
JSONObject
.
toJSONString
(
priceStockQOS
));
return
null
;
}
@Override
public
ResultBody
<
LeaseGoodsVO
>
leaseGoodsDetails
(
Integer
id
)
{
log
.
info
(
"熔断:PmsAppApiHystrix.leaseGoodsDetails==error==>param:{}"
,
id
);
return
null
;
}
}
src/main/java/com/mmc/oms/model/dto/lease/LeaseOrderDTO.java
0 → 100644
浏览文件 @
c7a6a354
package
com
.
mmc
.
oms
.
model
.
dto
.
lease
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
com.mmc.oms.model.dto.kdn.KdnExpDTO
;
import
com.mmc.oms.model.dto.uav.UavOrderExpressDTO
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.io.Serializable
;
import
java.math.BigDecimal
;
import
java.util.Date
;
/**
* @author: lw
* @Date: 2023/9/4 14:50
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ApiModel
(
description
=
"最新版-订单"
)
public
class
LeaseOrderDTO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
7548192478556457453L
;
@ApiModelProperty
(
"id"
)
private
Integer
id
;
@ApiModelProperty
(
"订单编号"
)
private
String
orderNo
;
@ApiModelProperty
(
"订单状态"
)
private
Integer
statusCode
;
@ApiModelProperty
(
"买家id"
)
private
Integer
userAccountId
;
@ApiModelProperty
(
"买家手机号"
)
private
String
phoneNum
;
@ApiModelProperty
(
"买家姓名"
)
private
String
userName
;
@ApiModelProperty
(
"买家昵称"
)
private
String
nickname
;
@ApiModelProperty
(
"卖家id"
)
private
Integer
thirdBackUserAccountId
;
@ApiModelProperty
(
"卖家企业名称"
)
private
String
companyName
;
@ApiModelProperty
(
"订单实付总额"
)
private
BigDecimal
orderTotalAmount
;
@ApiModelProperty
(
"订单需付金额"
)
private
BigDecimal
needPayAmount
;
@ApiModelProperty
(
"抵扣佣金余额"
)
private
BigDecimal
salaryAmount
;
@ApiModelProperty
(
"抵扣云享金余额"
)
private
BigDecimal
shareAmount
;
@ApiModelProperty
(
"其他方式支付额度"
)
private
BigDecimal
otherAmount
;
@ApiModelProperty
(
"wechatpay微信,alipay支付宝,offline线下"
)
private
String
payType
;
@JsonFormat
(
pattern
=
"yyyy-MM-dd"
,
timezone
=
"GMT+8"
)
@ApiModelProperty
(
"租赁开始时间"
)
private
Date
startDate
;
@JsonFormat
(
pattern
=
"yyyy-MM-dd"
,
timezone
=
"GMT+8"
)
@ApiModelProperty
(
"租赁结束时间"
)
private
Date
endDate
;
@ApiModelProperty
(
"买家备注"
)
private
String
userRemark
;
@ApiModelProperty
(
"卖家备注"
)
private
String
sellerRemark
;
@ApiModelProperty
(
"下单时间"
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Date
createTime
;
@ApiModelProperty
(
"支付时间"
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Date
payTime
;
@ApiModelProperty
(
"确认收货时间"
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Date
confirmReceiptTime
;
@ApiModelProperty
(
value
=
"修改版本"
,
hidden
=
true
)
private
Integer
version
;
@ApiModelProperty
(
"评价状态"
)
private
Integer
remarkStatus
;
@ApiModelProperty
(
"最近修改时间"
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Date
updateTime
;
@ApiModelProperty
(
"用户收货地址信息"
)
private
UavOrderExpressDTO
uavOrderExpressDTO
;
@ApiModelProperty
(
"快递信息"
)
private
KdnExpDTO
kdnExpDTO
;
@ApiModelProperty
(
"订单规格列表"
)
private
String
sku
;
@ApiModelProperty
(
"sku图片"
)
private
String
skuImg
;
@ApiModelProperty
(
"运费"
)
private
String
modeOfDeliveryInfo
;
}
src/main/java/com/mmc/oms/model/vo/lease/AddLeaseOrderVO.java
0 → 100644
浏览文件 @
c7a6a354
package
com
.
mmc
.
oms
.
model
.
vo
.
lease
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.io.Serializable
;
import
java.math.BigDecimal
;
import
java.util.Date
;
/**
* @author: lw
* @Date: 2023/9/21 16:01
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public
class
AddLeaseOrderVO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
2749055915508197141L
;
@ApiModelProperty
(
"商家id"
)
private
Integer
thirdBackUserAccountId
;
@ApiModelProperty
(
"卖家企业名称"
)
private
String
companyName
;
@ApiModelProperty
(
"租赁商品id"
)
private
Integer
leaseGoodsId
;
@ApiModelProperty
(
"收货地址id"
)
private
Integer
userAddressId
;
@ApiModelProperty
(
value
=
"订单实付总额"
,
hidden
=
true
)
private
BigDecimal
orderTotalAmount
;
@ApiModelProperty
(
value
=
"抵扣钱包余额"
,
hidden
=
true
)
private
BigDecimal
walletAmount
;
@ApiModelProperty
(
value
=
"抵扣云享金余额"
,
hidden
=
true
)
private
BigDecimal
shareAmount
;
@ApiModelProperty
(
value
=
"其他方式支付额度"
,
hidden
=
true
)
private
BigDecimal
otherAmount
;
@ApiModelProperty
(
value
=
"租期"
,
hidden
=
true
)
private
Integer
leaseTerm
;
@ApiModelProperty
(
"用户备注"
)
private
String
userRemark
;
@JsonFormat
(
pattern
=
"yyyy-MM-dd"
,
timezone
=
"GMT+8"
)
@ApiModelProperty
(
"租赁开始时间"
)
private
Date
startDate
;
@JsonFormat
(
pattern
=
"yyyy-MM-dd"
,
timezone
=
"GMT+8"
)
@ApiModelProperty
(
"租赁结束时间"
)
private
Date
endDate
;
@ApiModelProperty
(
"购买数量"
)
private
Integer
wareNum
;
@ApiModelProperty
(
value
=
"单价"
,
hidden
=
true
)
private
BigDecimal
unitPrice
;
@ApiModelProperty
(
value
=
"押金"
,
hidden
=
true
)
private
BigDecimal
deposit
;
@ApiModelProperty
(
"sku"
)
private
String
sku
;
@ApiModelProperty
(
"是否抵扣云享金,0否,1是"
)
private
Integer
deductShareAmount
;
@ApiModelProperty
(
"是否抵扣余额,0否,1是"
)
private
Integer
deductSalaryAmount
;
}
src/main/java/com/mmc/oms/model/vo/lease/LeaseGoodsVO.java
0 → 100644
浏览文件 @
c7a6a354
package
com
.
mmc
.
oms
.
model
.
vo
.
lease
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
com.mmc.oms.common.publicinterface.Create
;
import
com.mmc.oms.common.publicinterface.Update
;
import
com.mmc.oms.model.vo.uav.GoodsResourcesVO
;
import
com.mmc.oms.model.vo.uav.SpecAttrVO
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
javax.validation.constraints.NotEmpty
;
import
javax.validation.constraints.NotNull
;
import
java.io.Serializable
;
import
java.math.BigDecimal
;
import
java.util.Date
;
import
java.util.List
;
/**
* @Author LW
* @date 2023/7/24 17:44
* 概要:
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public
class
LeaseGoodsVO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
-
3147170430919703826L
;
@ApiModelProperty
(
value
=
"id"
,
example
=
"1"
)
@NotNull
(
message
=
"id不能为空"
,
groups
=
{
Update
.
class
})
private
Integer
id
;
@ApiModelProperty
(
value
=
"商品标题"
,
example
=
"商品标题"
,
required
=
true
)
@NotEmpty
(
message
=
"商品标题不能为空"
,
groups
=
{
Update
.
class
,
Create
.
class
})
private
String
tradeName
;
@ApiModelProperty
(
value
=
"商品卖点"
,
example
=
"商品卖点"
)
private
String
sellingPoint
;
@ApiModelProperty
(
value
=
"商品成新"
,
example
=
"1"
,
required
=
true
)
private
Integer
level
;
@ApiModelProperty
(
value
=
"商品状态 :0下架 1上架"
,
example
=
"1"
,
required
=
true
)
@NotNull
(
message
=
"商品状态不能为空"
,
groups
=
{
Update
.
class
,
Create
.
class
})
private
Integer
shelfStatus
;
@ApiModelProperty
(
value
=
"商品类型id"
,
example
=
"1"
,
required
=
true
)
@NotNull
(
message
=
"商品类型id不能为空"
,
groups
=
{
Update
.
class
,
Create
.
class
})
private
Integer
productTypeId
;
@ApiModelProperty
(
value
=
"品牌id"
,
example
=
"2"
,
required
=
true
)
@NotNull
(
message
=
"品牌id不能为空"
,
groups
=
{
Update
.
class
,
Create
.
class
})
private
Integer
brandInfoId
;
@ApiModelProperty
(
value
=
"型号id"
,
example
=
"2"
,
required
=
true
)
@NotNull
(
message
=
"型号id不能为空"
,
groups
=
{
Update
.
class
,
Create
.
class
})
private
Integer
deviceModeId
;
@ApiModelProperty
(
value
=
"商品参数"
,
example
=
"示例:[{\"起飞重量\":\"595g\"}]"
)
private
String
productParam
;
@ApiModelProperty
(
value
=
"商品资源:图片or视频及其他"
)
@NotEmpty
(
message
=
"图片不能为空"
)
private
List
<
GoodsResourcesVO
>
resourcesList
;
@ApiModelProperty
(
value
=
"规格"
)
@NotEmpty
(
message
=
"规格不能为空"
,
groups
=
{
Update
.
class
,
Create
.
class
})
private
List
<
SpecAttrVO
>
specAttrList
;
@ApiModelProperty
(
value
=
"价格库存排列组合表信息"
)
private
List
<
LeasePriceStockVO
>
priceStock
;
@ApiModelProperty
(
value
=
"商品详情 富文本"
)
private
String
productDetails
;
@ApiModelProperty
(
value
=
"最短租期"
)
private
Integer
minLeaseTerm
;
@ApiModelProperty
(
value
=
"最长租期"
)
private
Integer
maxLeaseTerm
;
@ApiModelProperty
(
value
=
"发货地址"
)
private
Integer
shipAddress
;
@ApiModelProperty
(
value
=
"归还地址"
)
private
Integer
returnAddress
;
@ApiModelProperty
(
value
=
"寄出物流"
)
private
String
logisticsCompany
;
@ApiModelProperty
(
value
=
"配送方式"
)
private
Integer
modeOfDelivery
;
@ApiModelProperty
(
value
=
"展示最低价"
,
example
=
"1"
)
private
BigDecimal
showPrice
;
@ApiModelProperty
(
value
=
"创建时间 用作列表回显"
,
hidden
=
true
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Date
createTime
;
@ApiModelProperty
(
value
=
"店铺id 小程序用"
,
hidden
=
true
)
private
Integer
userAccountId
;
@ApiModelProperty
(
value
=
"押金范围"
,
hidden
=
true
)
private
String
cashPledgeRange
;
@ApiModelProperty
(
value
=
"租金范围"
,
hidden
=
true
)
private
String
rentalRange
;
@ApiModelProperty
(
value
=
"库存"
,
hidden
=
true
)
private
Integer
stock
;
@ApiModelProperty
(
value
=
"市code编码"
)
private
String
districtCode
;
@ApiModelProperty
(
value
=
"类型名称"
,
hidden
=
true
)
private
String
productTypeName
;
@ApiModelProperty
(
value
=
"品牌名称"
,
hidden
=
true
)
private
String
brandName
;
@ApiModelProperty
(
value
=
"型号名称"
,
hidden
=
true
)
private
String
deviceModeName
;
@ApiModelProperty
(
value
=
"配送方式信息"
,
hidden
=
true
)
private
String
modeOfDeliveryInfo
;
@ApiModelProperty
(
value
=
"企业名称"
,
hidden
=
true
)
private
String
companyName
;
}
src/main/java/com/mmc/oms/model/vo/lease/LeasePriceStockVO.java
0 → 100644
浏览文件 @
c7a6a354
package
com
.
mmc
.
oms
.
model
.
vo
.
lease
;
import
com.mmc.oms.common.publicinterface.Create
;
import
com.mmc.oms.common.publicinterface.Update
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
javax.validation.constraints.Max
;
import
javax.validation.constraints.NotEmpty
;
import
java.io.Serializable
;
import
java.math.BigDecimal
;
/**
* @Author LW
* @date 2023/8/8 10:48
* 概要:
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public
class
LeasePriceStockVO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1011141620995647903L
;
@ApiModelProperty
(
value
=
"id"
,
example
=
"1"
)
private
Integer
id
;
@ApiModelProperty
(
value
=
"商品规格"
,
example
=
"示例:{\"颜色\":\"蓝色\",\"尺寸\":\"1寸\",\"大小\":\"小\"} 或 [\"颜色\":\"蓝色\",\"尺寸\":\"1寸\",\"大小\":\"小\"] 或 你怎么方便怎么来"
)
@NotEmpty
(
message
=
"商品规格不能为空"
,
groups
=
{
Update
.
class
,
Create
.
class
})
private
String
productSpec
;
@ApiModelProperty
(
value
=
"押金"
,
example
=
"1"
)
private
BigDecimal
cashPledge
;
@ApiModelProperty
(
value
=
"3天租金"
,
example
=
"1"
)
private
BigDecimal
threeDaysRental
;
@ApiModelProperty
(
value
=
"7天租金"
,
example
=
"1"
)
private
BigDecimal
sevenDaysRental
;
@ApiModelProperty
(
value
=
"30天租金"
,
example
=
"1"
)
private
BigDecimal
thirtyDaysRental
;
@ApiModelProperty
(
value
=
"90天租金"
,
example
=
"1"
)
private
BigDecimal
ninetyDaysRental
;
@ApiModelProperty
(
value
=
"180天租金"
,
example
=
"1"
)
private
BigDecimal
maxDaysRental
;
@ApiModelProperty
(
value
=
"sku图片"
,
example
=
"https://pad-video-x.oss-cn-shenzhen.aliyuncs.com/file/35bbd044-7cd7-4c85-ba27-69776e03dbb2.jpg"
)
private
String
skuImage
;
@ApiModelProperty
(
value
=
"库存"
,
example
=
"10"
)
@Max
(
message
=
"最大不能超过9999"
,
groups
=
{
Update
.
class
,
Create
.
class
},
value
=
9999
)
private
Integer
stock
;
@ApiModelProperty
(
value
=
"是否缺货 0:否 1:是"
)
private
Integer
stockOut
;
}
src/main/java/com/mmc/oms/service/lease/LeaseOrderService.java
0 → 100644
浏览文件 @
c7a6a354
package
com
.
mmc
.
oms
.
service
.
lease
;
import
com.mmc.oms.common.result.ResultBody
;
import
com.mmc.oms.model.dto.lease.LeaseOrderDTO
;
import
com.mmc.oms.model.dto.user.BaseAccountDTO
;
import
com.mmc.oms.model.vo.lease.AddLeaseOrderVO
;
/**
* @Author LW
* @date 2023/9/21 16:38
* 概要:
*/
public
interface
LeaseOrderService
{
ResultBody
<
LeaseOrderDTO
>
addLeaseOrder
(
AddLeaseOrderVO
param
,
BaseAccountDTO
currentAccount
);
}
src/main/java/com/mmc/oms/service/lease/impl/LeaseOrderServiceImpl.java
0 → 100644
浏览文件 @
c7a6a354
package
com
.
mmc
.
oms
.
service
.
lease
.
impl
;
import
com.mmc.oms.common.ResultEnum
;
import
com.mmc.oms.common.result.ResultBody
;
import
com.mmc.oms.common.util.CodeUtil
;
import
com.mmc.oms.dao.UserAddressDao
;
import
com.mmc.oms.dao.lease.LeaseOrderDao
;
import
com.mmc.oms.entity.lease.LeaseOrderDO
;
import
com.mmc.oms.entity.lease.LeaseOrderExpressDO
;
import
com.mmc.oms.entity.mall.UserAddressDO
;
import
com.mmc.oms.enums.LeaseOrderStatus
;
import
com.mmc.oms.enums.LeaseTermInfo
;
import
com.mmc.oms.feign.PmsAppApi
;
import
com.mmc.oms.feign.UserAppApi
;
import
com.mmc.oms.model.dto.lease.LeaseOrderDTO
;
import
com.mmc.oms.model.dto.uav.PayWalletDTO
;
import
com.mmc.oms.model.dto.user.BaseAccountDTO
;
import
com.mmc.oms.model.vo.lease.AddLeaseOrderVO
;
import
com.mmc.oms.model.vo.lease.LeaseGoodsVO
;
import
com.mmc.oms.model.vo.lease.LeasePriceStockVO
;
import
com.mmc.oms.model.vo.uav.GoodsResourcesVO
;
import
com.mmc.oms.service.lease.LeaseOrderService
;
import
com.mmc.oms.service.uav.UavOrderService
;
import
com.mmc.oms.util.TDateUtil
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang.StringUtils
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.transaction.interceptor.TransactionAspectSupport
;
import
javax.annotation.Resource
;
import
java.math.BigDecimal
;
import
java.util.Date
;
/**
* @Author LW
* @date 2023/9/21 16:46
* 概要:
*/
@Service
@Slf4j
public
class
LeaseOrderServiceImpl
implements
LeaseOrderService
{
@Resource
private
PmsAppApi
pmsAppApi
;
@Resource
private
UavOrderService
uavOrderService
;
@Resource
private
LeaseOrderDao
leaseOrderDao
;
@Resource
private
UserAddressDao
userAddressDao
;
@Resource
private
UserAppApi
userAppApi
;
@Override
@Transactional
public
ResultBody
addLeaseOrder
(
AddLeaseOrderVO
param
,
BaseAccountDTO
currentAccount
)
{
log
.
info
(
"user:{},addOrder param:{}"
,
currentAccount
.
getUserAccountId
(),
param
);
if
(
StringUtils
.
isEmpty
(
param
.
getSku
()))
{
return
ResultBody
.
error
(
"至少选择一个规格!"
);
}
if
(
param
.
getWareNum
()
<=
0
)
{
return
ResultBody
.
error
(
"购买数量不得少于1"
);
}
LeaseGoodsVO
leaseGoodsVO
=
null
;
LeasePriceStockVO
priceStock
=
null
;
try
{
leaseGoodsVO
=
pmsAppApi
.
leaseGoodsDetails
(
param
.
getLeaseGoodsId
()).
getResult
();
// 检验商品是否在卖
if
(
leaseGoodsVO
==
null
||
!
leaseGoodsVO
.
getShelfStatus
().
equals
(
1
))
{
return
ResultBody
.
error
(
"商品已下架"
);
}
// 判断租赁时间是否超出当前商品的最长租期或小于最短租期
int
distanceDays
=
TDateUtil
.
distanceDays
(
param
.
getStartDate
(),
param
.
getEndDate
());
param
.
setLeaseTerm
(
distanceDays
);
// 获取租赁商品的最低租期
Integer
minLeaseTerm
=
getLeaseTerm
(
leaseGoodsVO
.
getMinLeaseTerm
());
// 获取租赁商品的最大租期
Integer
maxLeaseTerm
=
getLeaseTerm
(
leaseGoodsVO
.
getMaxLeaseTerm
());
if
(
distanceDays
<
minLeaseTerm
||
distanceDays
>
maxLeaseTerm
)
{
return
ResultBody
.
error
(
"商品信息发生变更,刷新后重试!"
);
}
// 判断该租期在那个价格区间
Integer
priceSection
=
getPriceSection
(
distanceDays
);
// 找到对应的规格
boolean
flag
=
false
;
for
(
LeasePriceStockVO
priceStockVO
:
leaseGoodsVO
.
getPriceStock
())
{
if
(
param
.
getSku
().
equals
(
priceStockVO
.
getProductSpec
()))
{
priceStock
=
priceStockVO
;
// 获取最新的规格单价
param
.
setUnitPrice
(
getUnitPrice
(
priceSection
,
priceStockVO
));
param
.
setDeposit
(
priceStockVO
.
getCashPledge
());
flag
=
true
;
break
;
}
}
if
(!
flag
)
{
return
ResultBody
.
error
(
"选择规格不存在"
);
}
}
catch
(
Exception
e
)
{
TransactionAspectSupport
.
currentTransactionStatus
().
setRollbackOnly
();
return
ResultBody
.
error
(
e
.
getMessage
());
}
String
orderNo
=
CodeUtil
.
generateOrderId
();
// 计算订单总金额
BigDecimal
orderTotalAmount
=
param
.
getUnitPrice
().
multiply
(
BigDecimal
.
valueOf
(
param
.
getLeaseTerm
()))
.
multiply
(
BigDecimal
.
valueOf
(
param
.
getWareNum
())).
add
(
param
.
getDeposit
().
multiply
(
BigDecimal
.
valueOf
(
param
.
getWareNum
())));
BigDecimal
otherAmount
=
BigDecimal
.
ZERO
;
otherAmount
=
otherAmount
.
add
(
orderTotalAmount
);
// 判断云享金或余额是否够抵扣
// 校验云享金、钱包余额是否足够抵扣
BigDecimal
shareAmount
=
BigDecimal
.
ZERO
;
BigDecimal
salaryAmount
=
BigDecimal
.
ZERO
;
Integer
statusCode
=
null
;
// 获取用户钱包信息
ResultBody
<
PayWalletDTO
>
payResInfo
=
userAppApi
.
getCurrentUserPayWalletInfo
(
currentAccount
.
getToken
());
if
(!
payResInfo
.
getCode
().
equals
(
ResultEnum
.
SUCCESS
.
getResultCode
())
||
payResInfo
.
getResult
()
==
null
)
{
return
payResInfo
;
}
PayWalletDTO
payWalletDTO
=
payResInfo
.
getResult
();
if
(
param
.
getDeductShareAmount
().
equals
(
1
))
{
if
(
otherAmount
.
compareTo
(
payWalletDTO
.
getCashAmt
())
>=
0
)
{
// 抵扣云享金小于等于订单总额时,直接使用云享金
shareAmount
=
payWalletDTO
.
getCashAmt
();
}
else
{
// 余额超过订单金额时,订单总额使用余额支付
shareAmount
=
otherAmount
;
}
}
otherAmount
=
otherAmount
.
subtract
(
shareAmount
);
// 支付完成
if
(
otherAmount
.
compareTo
(
BigDecimal
.
ZERO
)
==
0
)
{
statusCode
=
LeaseOrderStatus
.
PAID
.
getCode
();
}
else
{
if
(
param
.
getDeductSalaryAmount
().
equals
(
1
))
{
if
(
otherAmount
.
compareTo
(
payWalletDTO
.
getSalaryAmt
())
>=
0
)
{
// 抵扣余额小于等于订单总额时,直接使用余额
salaryAmount
=
payWalletDTO
.
getSalaryAmt
();
}
else
{
// 余额超过订单金额时,订单总额使用余额支付
salaryAmount
=
otherAmount
;
}
}
otherAmount
=
otherAmount
.
subtract
(
salaryAmount
);
if
(
otherAmount
.
compareTo
(
BigDecimal
.
ZERO
)
==
0
)
{
statusCode
=
LeaseOrderStatus
.
PAID
.
getCode
();
}
}
// 抵扣余额
uavOrderService
.
deductWallet
(
shareAmount
,
salaryAmount
,
currentAccount
);
// 获取商品主图
String
url
=
null
;
for
(
GoodsResourcesVO
goodsResourcesVO
:
leaseGoodsVO
.
getResourcesList
())
{
if
(
goodsResourcesVO
.
getType
().
equals
(
0
))
{
url
=
goodsResourcesVO
.
getUrl
();
break
;
}
}
// 添加总订单表
LeaseOrderDO
leaseOrderDO
=
new
LeaseOrderDO
();
leaseOrderDO
.
setOrderNo
(
orderNo
);
leaseOrderDO
.
setOrderTotalAmount
(
orderTotalAmount
);
leaseOrderDO
.
setStatusCode
(
otherAmount
.
compareTo
(
BigDecimal
.
ZERO
)
>
0
?
LeaseOrderStatus
.
PLACED_AN_ORDER
.
getCode
()
:
statusCode
);
leaseOrderDO
.
setUserAccountId
(
currentAccount
.
getUserAccountId
());
leaseOrderDO
.
setLeaseGoodsId
(
param
.
getLeaseGoodsId
());
leaseOrderDO
.
setCompanyName
(
param
.
getCompanyName
());
leaseOrderDO
.
setThirdBackUserAccountId
(
param
.
getThirdBackUserAccountId
());
leaseOrderDO
.
setOrderName
(
leaseGoodsVO
.
getTradeName
());
if
(
priceStock
.
getSkuImage
()
!=
null
)
{
leaseOrderDO
.
setSkuImg
(
priceStock
.
getSkuImage
());
}
else
{
leaseOrderDO
.
setSkuImg
(
url
);
}
leaseOrderDO
.
setSalaryAmount
(
salaryAmount
);
leaseOrderDO
.
setSku
(
param
.
getSku
());
leaseOrderDO
.
setShareAmount
(
shareAmount
);
leaseOrderDO
.
setOtherAmount
(
otherAmount
);
leaseOrderDO
.
setUserAddressId
(
param
.
getUserAddressId
());
leaseOrderDO
.
setUserRemark
(
param
.
getUserRemark
());
leaseOrderDO
.
setUnitPrice
(
param
.
getUnitPrice
());
leaseOrderDO
.
setWareNum
(
param
.
getWareNum
());
leaseOrderDO
.
setDeposit
(
param
.
getDeposit
());
leaseOrderDO
.
setStartDate
(
param
.
getStartDate
());
if
(
null
!=
statusCode
&&
statusCode
.
equals
(
LeaseOrderStatus
.
PAID
.
getCode
()))
{
leaseOrderDO
.
setPayTime
(
new
Date
());
}
leaseOrderDO
.
setEndDate
(
param
.
getEndDate
());
leaseOrderDao
.
addOrder
(
leaseOrderDO
);
// 添加收货地址
UserAddressDO
userAddressDO
=
userAddressDao
.
selectById
(
param
.
getUserAddressId
());
LeaseOrderExpressDO
leaseOrderExpressDO
=
new
LeaseOrderExpressDO
(
userAddressDO
);
leaseOrderExpressDO
.
setLeaseOrderId
(
leaseOrderDO
.
getId
());
leaseOrderDao
.
addAddress
(
leaseOrderExpressDO
);
LeaseOrderDTO
leaseOrderDTO
=
leaseOrderDO
.
buildLeaseOrderDTO
();
leaseOrderDTO
.
setModeOfDeliveryInfo
(
leaseGoodsVO
.
getModeOfDeliveryInfo
());
return
ResultBody
.
success
(
leaseOrderDTO
);
}
private
Integer
getLeaseTerm
(
Integer
leaseTermId
)
{
if
(
leaseTermId
.
equals
(
LeaseTermInfo
.
THREE_DAY
.
getId
()))
{
return
LeaseTermInfo
.
THREE_DAY
.
getDays
();
}
else
if
(
leaseTermId
.
equals
(
LeaseTermInfo
.
SEVEN_DAY
.
getId
()))
{
return
LeaseTermInfo
.
SEVEN_DAY
.
getDays
();
}
else
if
(
leaseTermId
.
equals
(
LeaseTermInfo
.
THIRTY_DAY
.
getId
()))
{
return
LeaseTermInfo
.
THIRTY_DAY
.
getDays
();
}
else
if
(
leaseTermId
.
equals
(
LeaseTermInfo
.
NINETY_DAY
.
getId
()))
{
return
LeaseTermInfo
.
NINETY_DAY
.
getDays
();
}
else
{
return
LeaseTermInfo
.
ONE_HUNDRED_AND_EIGHTY_DAY
.
getDays
();
}
}
private
BigDecimal
getUnitPrice
(
Integer
priceSection
,
LeasePriceStockVO
priceStockVO
)
{
if
(
priceSection
.
equals
(
LeaseTermInfo
.
THREE_DAY
.
getDays
()))
{
return
priceStockVO
.
getThreeDaysRental
();
}
else
if
(
priceSection
.
equals
(
LeaseTermInfo
.
SEVEN_DAY
.
getDays
()))
{
return
priceStockVO
.
getSevenDaysRental
();
}
else
if
(
priceSection
.
equals
(
LeaseTermInfo
.
THIRTY_DAY
.
getDays
()))
{
return
priceStockVO
.
getThirtyDaysRental
();
}
else
if
(
priceSection
.
equals
(
LeaseTermInfo
.
NINETY_DAY
.
getDays
()))
{
return
priceStockVO
.
getNinetyDaysRental
();
}
else
{
return
priceStockVO
.
getMaxDaysRental
();
}
}
private
Integer
getPriceSection
(
int
distanceDays
)
{
if
(
distanceDays
>=
LeaseTermInfo
.
THREE_DAY
.
getDays
()
&&
distanceDays
<
LeaseTermInfo
.
SEVEN_DAY
.
getDays
())
{
return
LeaseTermInfo
.
THREE_DAY
.
getDays
();
}
else
if
(
distanceDays
>=
LeaseTermInfo
.
SEVEN_DAY
.
getDays
()
&&
distanceDays
<
LeaseTermInfo
.
THIRTY_DAY
.
getDays
())
{
return
LeaseTermInfo
.
SEVEN_DAY
.
getDays
();
}
else
if
(
distanceDays
>=
LeaseTermInfo
.
THIRTY_DAY
.
getDays
()
&&
distanceDays
<
LeaseTermInfo
.
NINETY_DAY
.
getDays
())
{
return
LeaseTermInfo
.
THIRTY_DAY
.
getDays
();
}
else
if
(
distanceDays
>=
LeaseTermInfo
.
NINETY_DAY
.
getDays
()
&&
distanceDays
<
LeaseTermInfo
.
ONE_HUNDRED_AND_EIGHTY_DAY
.
getDays
())
{
return
LeaseTermInfo
.
NINETY_DAY
.
getDays
();
}
else
{
return
LeaseTermInfo
.
ONE_HUNDRED_AND_EIGHTY_DAY
.
getDays
();
}
}
}
src/main/java/com/mmc/oms/service/uav/UavOrderService.java
浏览文件 @
c7a6a354
package
com
.
mmc
.
oms
.
service
.
uav
;
import
com.mmc.oms.common.result.ResultBody
;
import
com.mmc.oms.model.dto.ContractInfoDTO
;
import
com.mmc.oms.model.dto.uav.UavCartCompanyDTO
;
import
com.mmc.oms.model.dto.uav.UavOrderDTO
;
import
com.mmc.oms.model.dto.user.BaseAccountDTO
;
import
com.mmc.oms.model.qo.uav.UavOrderQO
;
import
com.mmc.oms.model.vo.uav.*
;
import
com.mmc.oms.model.vo.wallet.TopUpOrderVO
;
import
javax.servlet.http.HttpServletRequest
;
import
java.
util.List
;
import
java.
math.BigDecimal
;
/**
* @author: zj
...
...
@@ -54,4 +51,7 @@ public interface UavOrderService {
ResultBody
removeUavOrder
(
Integer
id
);
ResultBody
addOrderByCart
(
AddUavOrderByCartQO
orderByCartQO
,
BaseAccountDTO
currentAccount
);
ResultBody
deductWallet
(
BigDecimal
allShareAmount
,
BigDecimal
allSalaryAmount
,
BaseAccountDTO
currentAccount
);
}
src/main/java/com/mmc/oms/service/uav/impl/UavOrderServiceImpl.java
浏览文件 @
c7a6a354
...
...
@@ -86,14 +86,14 @@ public class UavOrderServiceImpl implements UavOrderService {
@Transactional
public
ResultBody
addOrder
(
AddUavOrderVO
param
,
BaseAccountDTO
currentAccount
)
{
log
.
info
(
"user:{},addOrder param:{}"
,
currentAccount
.
getUserAccountId
(),
param
);
if
(
CollectionUtils
.
isEmpty
(
param
.
getSkuVOS
())){
if
(
CollectionUtils
.
isEmpty
(
param
.
getSkuVOS
()))
{
return
ResultBody
.
error
(
"至少选择一个规格!"
);
}
MallGoodsVO
mallGoodsVO
=
null
;
try
{
mallGoodsVO
=
pmsClient
.
mallGoodsDetails
(
param
.
getMallGoodsId
());
// 检验商品是否在卖
if
(
mallGoodsVO
==
null
||
!
mallGoodsVO
.
getShelfStatus
().
equals
(
1
)){
if
(
mallGoodsVO
==
null
||
!
mallGoodsVO
.
getShelfStatus
().
equals
(
1
))
{
return
ResultBody
.
error
(
"商品已下架"
);
}
// 找到对应的规格
...
...
@@ -107,11 +107,11 @@ public class UavOrderServiceImpl implements UavOrderService {
break
;
}
}
if
(!
flag
){
if
(!
flag
)
{
return
ResultBody
.
error
(
"选择规格不存在"
);
}
}
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
TransactionAspectSupport
.
currentTransactionStatus
().
setRollbackOnly
();
e
.
printStackTrace
();
}
...
...
@@ -129,31 +129,31 @@ public class UavOrderServiceImpl implements UavOrderService {
BigDecimal
salaryAmount
=
BigDecimal
.
ZERO
;
Integer
statusCode
=
null
;
// 正常订单可以抵扣云享金和余额、意向订单不能扣
if
(
param
.
getOrderType
().
equals
(
UavOrderType
.
PAY
.
getCode
())){
if
(
param
.
getOrderType
().
equals
(
UavOrderType
.
PAY
.
getCode
()))
{
ResultBody
<
PayWalletDTO
>
payResInfo
=
userAppApi
.
getCurrentUserPayWalletInfo
(
currentAccount
.
getToken
());
if
(!
payResInfo
.
getCode
().
equals
(
ResultEnum
.
SUCCESS
.
getResultCode
())
||
payResInfo
.
getResult
()
==
null
){
if
(!
payResInfo
.
getCode
().
equals
(
ResultEnum
.
SUCCESS
.
getResultCode
())
||
payResInfo
.
getResult
()
==
null
)
{
return
payResInfo
;
}
PayWalletDTO
payWalletDTO
=
payResInfo
.
getResult
();
if
(
param
.
getDeductShareAmount
().
equals
(
1
)){
if
(
param
.
getDeductShareAmount
().
equals
(
1
))
{
if
(
otherAmount
.
compareTo
(
payWalletDTO
.
getCashAmt
())
>=
0
)
{
// 抵扣云享金小于等于订单总额时,直接使用云享金
shareAmount
=
payWalletDTO
.
getCashAmt
();
}
else
{
}
else
{
// 余额超过订单金额时,订单总额使用余额支付
shareAmount
=
otherAmount
;
}
}
otherAmount
=
otherAmount
.
subtract
(
shareAmount
);
// 支付完成
if
(
otherAmount
.
compareTo
(
BigDecimal
.
ZERO
)
==
0
)
{
if
(
otherAmount
.
compareTo
(
BigDecimal
.
ZERO
)
==
0
)
{
statusCode
=
UavOrderStatus
.
WAITING_DELIVER_GOODS
.
getCode
();
}
else
{
if
(
param
.
getDeductSalaryAmount
().
equals
(
1
)){
}
else
{
if
(
param
.
getDeductSalaryAmount
().
equals
(
1
))
{
if
(
otherAmount
.
compareTo
(
payWalletDTO
.
getSalaryAmt
())
>=
0
)
{
// 抵扣余额小于等于订单总额时,直接使用余额
salaryAmount
=
payWalletDTO
.
getSalaryAmt
();
}
else
{
}
else
{
// 余额超过订单金额时,订单总额使用余额支付
salaryAmount
=
otherAmount
;
}
...
...
@@ -171,9 +171,9 @@ public class UavOrderServiceImpl implements UavOrderService {
uavOrderDO
.
setOrderNo
(
orderNo
);
uavOrderDO
.
setOrderTotalAmount
(
orderTotalAmount
);
uavOrderDO
.
setOrderType
(
param
.
getOrderType
());
if
(
param
.
getOrderType
().
equals
(
UavOrderType
.
PAY
.
getCode
())){
if
(
param
.
getOrderType
().
equals
(
UavOrderType
.
PAY
.
getCode
()))
{
uavOrderDO
.
setStatusCode
(
otherAmount
.
compareTo
(
BigDecimal
.
ZERO
)
>
0
?
UavOrderStatus
.
PAYING
.
getCode
()
:
statusCode
);
}
else
{
}
else
{
uavOrderDO
.
setStatusCode
(
UavOrderStatus
.
CONFIRM
.
getCode
());
}
uavOrderDO
.
setUserAccountId
(
currentAccount
.
getUserAccountId
());
...
...
@@ -224,7 +224,7 @@ public class UavOrderServiceImpl implements UavOrderService {
List
<
UavOrderPayDTO
>
collect
=
payDOS
.
stream
().
map
(
UavOrderPayDO:
:
buildUavOrderPayDTO
).
collect
(
Collectors
.
toList
());
uavOrderDTO
.
setPayDTOList
(
collect
);
}
List
<
UavOrderSkuDO
>
skuDOS
=
uavOrderDao
.
listUavOrderSkuDO
(
id
);
List
<
UavOrderSkuDO
>
skuDOS
=
uavOrderDao
.
listUavOrderSkuDO
(
id
);
if
(
CollectionUtils
.
isNotEmpty
(
skuDOS
))
{
List
<
UavOrderSkuDTO
>
uavOrderSkuDTOS
=
skuDOS
.
stream
().
map
(
UavOrderSkuDO:
:
buildUavOrderSkuDTO
).
collect
(
Collectors
.
toList
());
uavOrderDTO
.
setSkuDTOList
(
uavOrderSkuDTOS
);
...
...
@@ -282,7 +282,7 @@ public class UavOrderServiceImpl implements UavOrderService {
payUavWalletVO
.
setOrderStatus
(
1400
);
payUavWalletVO
.
setUserAccountId
(
uavOrderDO
.
getUserAccountId
());
ResultBody
resultBody
=
userAppApi
.
feignPayUavWallet
(
payUavWalletVO
,
token
);
if
(!
resultBody
.
getCode
().
equals
(
ResultEnum
.
SUCCESS
.
getResultCode
())){
if
(!
resultBody
.
getCode
().
equals
(
ResultEnum
.
SUCCESS
.
getResultCode
()))
{
return
resultBody
;
}
}
...
...
@@ -306,7 +306,7 @@ public class UavOrderServiceImpl implements UavOrderService {
@Override
public
ResultBody
list
(
UavOrderQO
uavOrderQO
,
BaseAccountDTO
currentAccount
)
{
if
(!
currentAccount
.
getRoleInfo
().
getSuperAdmin
().
equals
(
1
)){
if
(!
currentAccount
.
getRoleInfo
().
getSuperAdmin
().
equals
(
1
))
{
uavOrderQO
.
setThirdBackUserAccountId
(
currentAccount
.
getUserAccountId
());
uavOrderQO
.
setOrderType
(
UavOrderType
.
PAY
.
getCode
());
}
...
...
@@ -461,7 +461,7 @@ public class UavOrderServiceImpl implements UavOrderService {
}
@Transactional
public
void
updateUavOrderStatus
(
Integer
id
,
UavOrderStatus
uavOrderStatus
){
public
void
updateUavOrderStatus
(
Integer
id
,
UavOrderStatus
uavOrderStatus
)
{
uavOrderDao
.
updateUavOrderStatus
(
id
,
uavOrderStatus
.
getNextCode
());
}
...
...
@@ -502,7 +502,7 @@ public class UavOrderServiceImpl implements UavOrderService {
UavOrderPayDO
beforeUavOrderPayDO
=
uavOrderDao
.
getUavOrderPayById
(
uavOrderPayVO
.
getId
());
// 一个订单可能会多次上传付款凭证,因此单独审核
UavOrderDO
uavOrderDO
=
uavOrderDao
.
detail
(
beforeUavOrderPayDO
.
getUavOrderId
());
if
(
uavOrderPayVO
.
getCheckStatus
().
equals
(
1
)){
if
(
uavOrderPayVO
.
getCheckStatus
().
equals
(
1
))
{
// 第一次审核通过,则要把订单状态改为待发货;意向订单还要生成采购订单
if
(
uavOrderDO
.
getStatusCode
().
equals
(
UavOrderStatus
.
FINISH_PAYING
.
getCode
()))
{
this
.
updateUavOrderStatus
(
beforeUavOrderPayDO
.
getUavOrderId
(),
UavOrderStatus
.
FINISH_PAYING
);
...
...
@@ -516,7 +516,7 @@ public class UavOrderServiceImpl implements UavOrderService {
uavPurchaseOrderDO
.
setStatusCode
(
UavOrderStatus
.
CONFIRM
.
getCode
());
uavPODao
.
addPurchaseOrder
(
uavPurchaseOrderDO
);
}
}
else
{
}
else
{
if
(
uavOrderDO
.
getStatusCode
().
equals
(
UavOrderStatus
.
FINISH_PAYING
.
getCode
()))
{
// 第一次未通过,需要走回上一步
this
.
updateUavOrderStatus
(
beforeUavOrderPayDO
.
getUavOrderId
(),
UavOrderStatus
.
SIGN
);
...
...
@@ -569,7 +569,7 @@ public class UavOrderServiceImpl implements UavOrderService {
if
(
uavOrderDO
.
getOrderType
().
equals
(
UavOrderType
.
SIGN
.
getCode
()))
{
ResultBody
<
PayWalletDTO
>
payResInfo
=
userAppApi
.
getPayWalletInfo
(
uavOrderDO
.
getUserAccountId
(),
currentAccount
.
getToken
());
PayWalletDTO
payWalletDTO
=
payResInfo
.
getResult
();
if
(!
payResInfo
.
getCode
().
equals
(
ResultEnum
.
SUCCESS
.
getResultCode
())
||
payWalletDTO
==
null
){
if
(!
payResInfo
.
getCode
().
equals
(
ResultEnum
.
SUCCESS
.
getResultCode
())
||
payWalletDTO
==
null
)
{
return
payResInfo
;
}
// 要扣除的云享金
...
...
@@ -581,11 +581,11 @@ public class UavOrderServiceImpl implements UavOrderService {
// 根据订单总额确认扣除多少云享金
if
(
uavOrderVO
.
getOrderTotalAmount
().
compareTo
(
payWalletDTO
.
getCashAmt
())
>=
0
)
{
shareAmount
=
payWalletDTO
.
getCashAmt
();
}
else
{
}
else
{
shareAmount
=
uavOrderVO
.
getOrderTotalAmount
();
}
// 抵扣
if
(
shareAmount
.
compareTo
(
BigDecimal
.
ZERO
)
>
0
)
{
if
(
shareAmount
.
compareTo
(
BigDecimal
.
ZERO
)
>
0
)
{
PayUavWalletVO
payUavWalletVO
=
new
PayUavWalletVO
();
payUavWalletVO
.
setUserAccountId
(
uavOrderDO
.
getUserAccountId
());
payUavWalletVO
.
setCashAmount
(
shareAmount
);
...
...
@@ -594,7 +594,7 @@ public class UavOrderServiceImpl implements UavOrderService {
payUavWalletVO
.
setOrderStatus
(
100
);
payUavWalletVO
.
setRemark
(
"商城确认订单抵扣"
);
ResultBody
resultBody
=
userAppApi
.
feignPayUavWallet
(
payUavWalletVO
,
currentAccount
.
getToken
());
if
(!
resultBody
.
getCode
().
equals
(
ResultEnum
.
SUCCESS
.
getResultCode
())){
if
(!
resultBody
.
getCode
().
equals
(
ResultEnum
.
SUCCESS
.
getResultCode
()))
{
return
resultBody
;
}
}
...
...
@@ -660,16 +660,16 @@ public class UavOrderServiceImpl implements UavOrderService {
return
ResultBody
.
error
(
"意向订单仅限下单个商家的商品"
);
}
// 正常订单可以抵扣云享金和余额、意向订单不能扣
if
(
orderByCartQO
.
getOrderType
().
equals
(
UavOrderType
.
PAY
.
getCode
())){
if
(
orderByCartQO
.
getOrderType
().
equals
(
UavOrderType
.
PAY
.
getCode
()))
{
}
else
{
}
else
{
}
// 购物车id
List
<
Integer
>
cartIds
=
new
ArrayList
<>();
// 云享金、余额扣除相关
ResultBody
<
PayWalletDTO
>
payResInfo
=
userAppApi
.
getCurrentUserPayWalletInfo
(
currentAccount
.
getToken
());
if
(!
payResInfo
.
getCode
().
equals
(
ResultEnum
.
SUCCESS
.
getResultCode
())
||
payResInfo
.
getResult
()
==
null
){
if
(!
payResInfo
.
getCode
().
equals
(
ResultEnum
.
SUCCESS
.
getResultCode
())
||
payResInfo
.
getResult
()
==
null
)
{
return
payResInfo
;
}
PayWalletDTO
payWalletDTO
=
payResInfo
.
getResult
();
...
...
@@ -705,7 +705,7 @@ public class UavOrderServiceImpl implements UavOrderService {
if
(
companyDTO
.
getDeductShareAmount
().
equals
(
1
)
&&
payWalletDTO
.
getCashAmt
().
compareTo
(
BigDecimal
.
ZERO
)
>
0
)
{
if
(
payWalletDTO
.
getCashAmt
().
compareTo
(
otherAmount
)
>
0
)
{
shareAmount
=
shareAmount
.
add
(
otherAmount
);
}
else
{
}
else
{
shareAmount
=
shareAmount
.
add
(
payWalletDTO
.
getCashAmt
());
}
otherAmount
=
otherAmount
.
subtract
(
shareAmount
);
...
...
@@ -717,7 +717,7 @@ public class UavOrderServiceImpl implements UavOrderService {
&&
otherAmount
.
compareTo
(
BigDecimal
.
ZERO
)
>
0
)
{
if
(
otherAmount
.
compareTo
(
payWalletDTO
.
getSalaryAmt
())
>
0
)
{
salaryAmount
=
salaryAmount
.
add
(
payWalletDTO
.
getSalaryAmt
());
}
else
{
}
else
{
salaryAmount
=
salaryAmount
.
add
(
otherAmount
);
}
otherAmount
=
otherAmount
.
subtract
(
salaryAmount
);
...
...
@@ -726,7 +726,7 @@ public class UavOrderServiceImpl implements UavOrderService {
}
if
(
otherAmount
.
compareTo
(
BigDecimal
.
ZERO
)
==
0
)
{
statusCode
=
UavOrderStatus
.
WAITING_DELIVER_GOODS
.
getCode
();
}
else
{
}
else
{
statusCode
=
UavOrderStatus
.
PAYING
.
getCode
();
}
// 设置订单状态
...
...
@@ -775,7 +775,8 @@ public class UavOrderServiceImpl implements UavOrderService {
return
ResultBody
.
success
();
}
public
ResultBody
deductWallet
(
BigDecimal
allShareAmount
,
BigDecimal
allSalaryAmount
,
BaseAccountDTO
currentAccount
){
@Override
public
ResultBody
deductWallet
(
BigDecimal
allShareAmount
,
BigDecimal
allSalaryAmount
,
BaseAccountDTO
currentAccount
)
{
PayUavWalletVO
payUavWalletVO
=
new
PayUavWalletVO
();
payUavWalletVO
.
setCashAmount
(
allShareAmount
);
payUavWalletVO
.
setSalaryAmount
(
allSalaryAmount
);
...
...
@@ -783,8 +784,8 @@ public class UavOrderServiceImpl implements UavOrderService {
payUavWalletVO
.
setUserAccountId
(
currentAccount
.
getUserAccountId
());
if
(
allShareAmount
.
compareTo
(
BigDecimal
.
ZERO
)
>
0
||
allSalaryAmount
.
compareTo
(
BigDecimal
.
ZERO
)
>
0
)
{
ResultBody
resultBody
=
userAppApi
.
feignPayUavWallet
(
payUavWalletVO
,
currentAccount
.
getToken
());
if
(!
resultBody
.
getCode
().
equals
(
ResultEnum
.
SUCCESS
.
getResultCode
())){
throw
new
RuntimeException
(
"余额抵扣失败!"
);
if
(!
resultBody
.
getCode
().
equals
(
ResultEnum
.
SUCCESS
.
getResultCode
()))
{
ResultBody
.
error
(
"余额抵扣失败!"
);
}
}
return
ResultBody
.
success
();
...
...
src/main/java/com/mmc/oms/util/TDateUtil.java
0 → 100644
浏览文件 @
c7a6a354
package
com
.
mmc
.
oms
.
util
;
import
java.text.ParseException
;
import
java.text.SimpleDateFormat
;
import
java.util.*
;
/**
* @author 作者 geDuo
* @version 创建时间:2021年7月17日 下午5:28:19
* @explain 日期时间工具类
*/
public
class
TDateUtil
{
public
static
final
String
ONE_WEEK
=
"oneweek"
;
public
static
final
String
ONE_MONTH
=
"onemonth"
;
public
static
final
String
THREE_MONTH
=
"threemonth"
;
public
static
final
String
SIX_MONTH
=
"sixmonth"
;
public
static
final
String
ONE_YEAR
=
"oneyear"
;
public
static
String
getCurrentDate
()
{
SimpleDateFormat
df
=
new
SimpleDateFormat
(
"yyyy/MM/dd HH:mm"
);
// 设置日期格式
String
date
=
df
.
format
(
new
Date
());
// new Date()为获取当前系统时间
return
date
;
}
public
static
String
getCurrentDateByType
(
String
format
)
{
SimpleDateFormat
df
=
new
SimpleDateFormat
(
format
);
// 设置日期格式
String
date
=
df
.
format
(
new
Date
());
// new Date()为获取当前系统时间
return
date
;
}
public
static
String
getCurrentDateMidd
()
{
SimpleDateFormat
df
=
new
SimpleDateFormat
(
"yyyy-MM-dd HH:mm:ss"
);
// 设置日期格式
String
date
=
df
.
format
(
new
Date
());
// new Date()为获取当前系统时间
return
date
;
}
public
static
Date
getDate
(
String
str
,
String
format
)
{
Date
date
=
null
;
try
{
SimpleDateFormat
df
=
new
SimpleDateFormat
(
format
);
// 设置日期格式
// String dates=df.format(new Date());// new Date()为获取当前系统时间
date
=
df
.
parse
(
str
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
return
date
;
}
/**
* date类型转字符串
*/
public
static
String
getDateStr
(
Date
date
,
String
type
)
{
SimpleDateFormat
format
=
new
SimpleDateFormat
(
type
);
String
s
=
format
.
format
(
date
);
return
s
;
}
/**
* 根据日期获得随机数
*/
public
static
Integer
getDateRandom
(
Date
date
,
String
format
,
int
count
)
{
String
code
=
""
;
for
(
int
i
=
0
;
i
<
count
;
i
++)
{
code
=
code
+
(
int
)
(
Math
.
random
()
*
9
);
}
code
=
TDateUtil
.
getDateStr
(
date
,
format
)
+
code
;
return
Integer
.
parseInt
(
code
);
}
/**
* 10位数的秒转日期字符
*
* @param mss
* @return
*/
public
static
Date
dateFromSecond
(
long
sceondTime
)
{
return
new
Date
(
sceondTime
*
1000
);
}
/**
* 10位数的秒转日期字符
*
* @param mss
* @return
*/
public
static
String
dateFromSecondStr
(
long
sceondTime
)
{
return
new
SimpleDateFormat
(
"yyyy-MM-dd HH:mm:ss"
).
format
(
new
Date
(
sceondTime
*
1000
));
}
/**
* 秒转时分秒
*
* @param secondTime
* @return
*/
public
static
String
hmsFromSecond
(
Integer
secondTime
)
{
Integer
hour
=
secondTime
/
60
/
60
;
Integer
minutes
=
secondTime
/
60
%
60
;
Integer
remainingSeconds
=
secondTime
%
60
;
return
(
hour
+
"h"
+
minutes
+
"min"
+
remainingSeconds
+
"s"
);
}
public
static
String
hmsFromSecondFormat
(
long
secondTime
)
{
long
day
=
secondTime
/
60
/
60
/
24
;
long
hour
=
secondTime
/
60
/
60
%
24
;
long
minutes
=
secondTime
/
60
%
60
;
long
remainingSeconds
=
secondTime
%
60
;
if
(
day
>
0
)
{
return
(
day
+
"天"
+
hour
+
"小时"
+
minutes
+
"分"
+
remainingSeconds
+
"秒"
);
}
return
(
hour
+
"小时"
+
minutes
+
"分"
+
remainingSeconds
+
"秒"
);
}
/**
* 两个日期的相差秒数
*
* @param maxDate
* @param minDate
* @return
*/
public
static
long
calLastedTime
(
Date
maxDate
,
Date
minDate
)
{
long
a
=
maxDate
.
getTime
();
long
b
=
minDate
.
getTime
();
long
c
=
(
a
-
b
)
/
1000
;
return
c
;
}
/**
* 获取某个月的月底最后一天的时间
*/
public
static
Date
getMonthLatestDay
(
Date
date
)
{
SimpleDateFormat
format
=
new
SimpleDateFormat
(
"yyyy-MM-dd"
);
// 获取当前月最后一天
Calendar
ca
=
Calendar
.
getInstance
();
ca
.
setTime
(
date
);
ca
.
set
(
Calendar
.
DAY_OF_MONTH
,
ca
.
getActualMaximum
(
Calendar
.
DAY_OF_MONTH
));
String
last
=
format
.
format
(
ca
.
getTime
());
Date
dates
=
getDate
(
last
,
"yyyy-MM-dd"
);
return
dates
;
}
/**
* 某个时间 加N天
*/
public
static
Date
nextNumDay
(
Date
d
,
int
num
)
{
SimpleDateFormat
format
=
new
SimpleDateFormat
(
"yyyy-MM-dd"
);
Date
date
=
null
;
try
{
Date
now
=
d
;
Calendar
calendar
=
Calendar
.
getInstance
();
calendar
.
setTime
(
now
);
calendar
.
add
(
Calendar
.
DAY_OF_MONTH
,
num
);
String
last
=
format
.
format
(
calendar
.
getTime
());
date
=
getDate
(
last
,
"yyyy-MM-dd"
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
return
date
;
}
/**
* 某天个时间加 N 小时
*
* @param now
* @param num
* @return
*/
public
static
Date
addHourTime
(
Date
now
,
int
num
)
{
SimpleDateFormat
format
=
new
SimpleDateFormat
(
"yyyy-MM-dd HH:mm:ss"
);
Date
date
=
null
;
try
{
Calendar
calendar
=
Calendar
.
getInstance
();
calendar
.
setTime
(
now
);
calendar
.
add
(
Calendar
.
HOUR
,
num
);
String
last
=
format
.
format
(
calendar
.
getTime
());
date
=
getDate
(
last
,
"yyyy-MM-dd HH:mm:ss"
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
return
date
;
}
/**
* 某个时间加n个月加n天(负数为减)
*/
@SuppressWarnings
(
"static-access"
)
public
static
Date
getMonthNDayN
(
Date
date
,
int
month
,
int
day
)
{
SimpleDateFormat
format
=
new
SimpleDateFormat
(
"yyyy-MM-dd"
);
Date
news
=
null
;
try
{
Calendar
calendar
=
Calendar
.
getInstance
();
calendar
.
setTime
(
date
);
calendar
.
add
(
Calendar
.
MONTH
,
month
);
calendar
.
add
(
calendar
.
DATE
,
day
);
String
last
=
format
.
format
(
calendar
.
getTime
());
news
=
getDate
(
last
,
"yyyy-MM-dd"
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
return
news
;
}
/**
* 时间戳-计算小时
*/
public
static
long
getDistanceTime
(
long
time1
,
long
time2
)
{
long
diff
=
0
;
long
day
=
0
;
long
hour
=
0
;
if
(
time1
<
time2
)
{
diff
=
time2
-
time1
;
}
else
{
diff
=
time1
-
time2
;
}
day
=
diff
/
(
24
*
60
*
60
*
1000
);
hour
=
(
diff
/
(
60
*
60
*
1000
)
-
day
*
24
);
return
hour
;
}
/**
* 两个时间之间相差距离多少天
*
* @param one 时间参数 1:
* @param two 时间参数 2:
* @return 相差天数
*/
public
static
int
distanceDays
(
Date
one
,
Date
two
)
{
int
days
=
0
;
long
time1
=
one
.
getTime
();
long
time2
=
two
.
getTime
();
long
diff
;
if
(
time1
<
time2
)
{
diff
=
time2
-
time1
;
}
else
{
diff
=
time1
-
time2
;
}
days
=
new
Long
(
diff
/
(
1000
*
60
*
60
*
24
)).
intValue
();
return
days
;
}
public
static
Date
nextNumDateTime
(
Date
d
,
int
num
)
{
SimpleDateFormat
format
=
new
SimpleDateFormat
(
"yyyy-MM-dd HH:mm:ss"
);
Date
date
=
null
;
try
{
Date
now
=
d
;
Calendar
calendar
=
Calendar
.
getInstance
();
calendar
.
setTime
(
now
);
calendar
.
add
(
Calendar
.
DAY_OF_MONTH
,
num
);
String
last
=
format
.
format
(
calendar
.
getTime
());
date
=
getDate
(
last
,
"yyyy-MM-dd HH:mm:ss"
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
return
date
;
}
public
static
String
createYearWeek
(
String
startStr
,
String
endStr
)
{
if
(
startStr
==
null
||
""
.
equals
(
startStr
)
||
endStr
==
null
||
""
.
equals
(
endStr
))
{
return
"起止日期不能为空"
;
}
SimpleDateFormat
sdf
=
new
SimpleDateFormat
(
"yyyy-MM-dd"
);
Date
start
=
null
;
Date
end
=
null
;
Date
startDate
;
Date
endDate
;
int
dayOfWeek
;
boolean
goOn
=
true
;
int
no
=
0
;
try
{
start
=
sdf
.
parse
(
startStr
);
end
=
sdf
.
parse
(
endStr
);
}
catch
(
ParseException
e
)
{
SimpleDateFormat
simpleDateFormat
=
new
SimpleDateFormat
(
"yyyyMMdd"
);
try
{
start
=
simpleDateFormat
.
parse
(
startStr
);
end
=
simpleDateFormat
.
parse
(
endStr
);
}
catch
(
ParseException
pe
)
{
pe
.
printStackTrace
();
}
}
if
(
start
.
compareTo
(
end
)
>
-
1
)
{
return
"结束日期必须大于开始日期"
;
}
Calendar
calendar
=
Calendar
.
getInstance
();
calendar
.
setTime
(
start
);
dayOfWeek
=
calendar
.
get
(
Calendar
.
DAY_OF_WEEK
);
List
<
Map
<
String
,
String
>>
weekList
=
new
ArrayList
<>();
if
(
dayOfWeek
>
1
&&
dayOfWeek
<
7
)
{
do
{
startDate
=
start
;
calendar
.
add
(
Calendar
.
DATE
,
(
8
-
dayOfWeek
));
endDate
=
calendar
.
getTime
();
no
+=
1
;
Map
<
String
,
String
>
map
=
new
HashMap
<>();
map
.
put
(
"startOfWeek"
,
sdf
.
format
(
startDate
));
map
.
put
(
"weekNo"
,
no
+
""
);
if
(
endDate
.
compareTo
(
end
)
<
0
)
{
map
.
put
(
"endOfWeek"
,
sdf
.
format
(
endDate
));
weekList
.
add
(
map
);
calendar
.
add
(
Calendar
.
DATE
,
1
);
start
=
calendar
.
getTime
();
dayOfWeek
=
2
;
}
else
{
map
.
put
(
"endOfWeek"
,
sdf
.
format
(
end
));
weekList
.
add
(
map
);
goOn
=
false
;
}
}
while
(
goOn
);
}
else
{
no
+=
1
;
startDate
=
start
;
if
(
dayOfWeek
==
1
)
{
endDate
=
start
;
}
else
{
calendar
.
add
(
Calendar
.
DATE
,
1
);
endDate
=
calendar
.
getTime
();
}
Map
<
String
,
String
>
map
=
new
HashMap
<>();
map
.
put
(
"startOfWeek"
,
sdf
.
format
(
startDate
));
map
.
put
(
"endOfWeek"
,
sdf
.
format
(
endDate
));
map
.
put
(
"weekNo"
,
no
+
""
);
weekList
.
add
(
map
);
calendar
.
add
(
Calendar
.
DATE
,
1
);
start
=
calendar
.
getTime
();
do
{
startDate
=
start
;
calendar
.
add
(
Calendar
.
DATE
,
6
);
endDate
=
calendar
.
getTime
();
no
+=
1
;
map
=
new
HashMap
<>();
map
.
put
(
"startOfWeek"
,
sdf
.
format
(
startDate
));
map
.
put
(
"weekNo"
,
no
+
""
);
if
(
endDate
.
compareTo
(
end
)
<
0
)
{
map
.
put
(
"endOfWeek"
,
sdf
.
format
(
endDate
));
weekList
.
add
(
map
);
calendar
.
add
(
Calendar
.
DATE
,
1
);
start
=
calendar
.
getTime
();
}
else
{
map
.
put
(
"endOfWeek"
,
sdf
.
format
(
end
));
weekList
.
add
(
map
);
goOn
=
false
;
}
}
while
(
goOn
);
}
return
weekList
.
toString
();
}
/**
* 获取起止日期
*
* @param sdf 需要显示的日期格式
* @param date 需要参照的日期
* @param n 最近n周
* @param option 0 开始日期;1 结束日期
* @param k 0 包含本周 1 不包含本周
* @return
*/
public
static
String
getFromToDate
(
SimpleDateFormat
sdf
,
Date
date
,
int
n
,
int
option
,
int
k
)
{
Calendar
calendar
=
Calendar
.
getInstance
();
calendar
.
setTime
(
date
);
int
dayOfWeek
=
calendar
.
get
(
Calendar
.
DAY_OF_WEEK
)
-
1
;
int
offset
=
0
==
option
?
1
-
dayOfWeek
:
7
-
dayOfWeek
;
int
amount
=
0
==
option
?
offset
-
(
n
-
1
+
k
)
*
7
:
offset
-
k
*
7
;
calendar
.
add
(
Calendar
.
DATE
,
amount
);
return
sdf
.
format
(
calendar
.
getTime
());
}
/**
* 根据当前日期获得最近n周的日期区间(包含本周)
*
* @param n
* @param sdf
* @return
*/
public
static
String
getNWeekTimeInterval
(
int
n
,
String
format
)
{
SimpleDateFormat
sdf
=
new
SimpleDateFormat
(
format
);
// 设置日期格式
String
beginDate
=
getFromToDate
(
sdf
,
new
Date
(),
n
,
0
,
0
);
String
endDate
=
getFromToDate
(
sdf
,
new
Date
(),
n
,
1
,
0
);
return
beginDate
+
","
+
endDate
;
}
/**
* 根据当前日期获得最近n周的日期区间(不包含本周)
*
* @param n
* @param sdf
* @return
*/
public
static
String
getNWeekTimeIntervalTwo
(
int
n
,
String
format
)
{
SimpleDateFormat
sdf
=
new
SimpleDateFormat
(
format
);
// 设置日期格式
String
beginDate
=
getFromToDate
(
sdf
,
new
Date
(),
n
,
0
,
1
);
String
endDate
=
getFromToDate
(
sdf
,
new
Date
(),
n
,
1
,
1
);
return
beginDate
+
","
+
endDate
;
}
/**
* 根据当前日期获得本周的日期区间(本周周一和周日日期)
*
* @param sdf
* @return
*/
public
static
String
getThisWeekTimeInterval
(
String
format
)
{
return
getNWeekTimeInterval
(
1
,
format
);
}
/**
* 根据当前日期获得上周的日期区间(上周周一和周日日期)
*
* @param sdf
* @return
*/
public
static
String
getLastWeekTimeInterval
(
String
format
)
{
return
getNWeekTimeIntervalTwo
(
1
,
format
);
}
/**
* 获取某个日期最近一个的星期日
*
* @return
*/
public
static
Date
getLatestWeekend
(
Date
date
)
{
Calendar
cal
=
Calendar
.
getInstance
();
cal
.
setTime
(
date
);
int
w
=
cal
.
get
(
Calendar
.
DAY_OF_WEEK
)
-
1
;
Date
endDate
=
TDateUtil
.
nextNumDay
(
date
,
w
*
-
1
);
return
endDate
;
}
/**
* 获取N周的星期一的日期(正加负减)
*
* @param date
* @return
*/
public
static
Date
getMinMonday
(
Date
date
,
int
weekNum
)
{
Calendar
cal
=
Calendar
.
getInstance
();
cal
.
setTime
(
date
);
int
w
=
cal
.
get
(
Calendar
.
DAY_OF_WEEK
)
-
1
;
Date
endDate
=
TDateUtil
.
nextNumDay
(
date
,
w
*
-
1
);
Date
startDate
=
TDateUtil
.
nextNumDay
(
endDate
,
(
weekNum
*
7
)
+
1
);
return
startDate
;
}
/**
* 获取某个月加几个月后一号的日期
*/
@SuppressWarnings
(
"static-access"
)
public
static
Date
getAddMonThDay
(
Date
date
,
int
i
)
{
SimpleDateFormat
format
=
new
SimpleDateFormat
(
"yyyy-MM-dd"
);
Calendar
calendar
=
Calendar
.
getInstance
();
calendar
.
setTime
(
date
);
calendar
.
add
(
calendar
.
MONTH
,
i
);
calendar
.
set
(
Calendar
.
DAY_OF_MONTH
,
1
);
String
last
=
format
.
format
(
calendar
.
getTime
());
date
=
getDate
(
last
,
"yyyy-MM-dd"
);
return
date
;
}
/**
* 某个月最后一天
*/
public
static
Date
getAnyMonthLastDay
(
Date
date
)
{
SimpleDateFormat
format
=
new
SimpleDateFormat
(
"yyyy-MM-dd"
);
// 获取当前月最后一天
Calendar
ca
=
Calendar
.
getInstance
();
ca
.
setTime
(
date
);
ca
.
set
(
Calendar
.
DAY_OF_MONTH
,
ca
.
getActualMaximum
(
Calendar
.
DAY_OF_MONTH
));
String
last
=
format
.
format
(
ca
.
getTime
());
date
=
getDate
(
last
,
"yyyy-MM-dd"
);
return
date
;
}
public
static
Date
getDate
(
Date
date
,
String
type
)
{
SimpleDateFormat
format
=
new
SimpleDateFormat
(
type
);
String
s
=
format
.
format
(
date
);
return
getDate
(
s
,
type
);
}
/**
* 获取去年今天的日期
*/
public
static
Date
getLastYearTodayDate
()
{
Calendar
instance
=
Calendar
.
getInstance
();
instance
.
add
(
Calendar
.
YEAR
,
-
1
);
SimpleDateFormat
format
=
new
SimpleDateFormat
(
"yyyy-MM-dd"
);
String
s
=
format
.
format
(
instance
.
getTime
());
return
getDate
(
s
,
"yyyy-MM-dd"
);
}
/**
* 获取昨天的日期
*
* @param type
* @return
*/
public
static
String
getYesterdayDateByType
(
String
type
)
{
Calendar
instance
=
Calendar
.
getInstance
();
instance
.
add
(
Calendar
.
DAY_OF_MONTH
,
-
1
);
Date
time
=
instance
.
getTime
();
SimpleDateFormat
format
=
new
SimpleDateFormat
(
type
);
return
format
.
format
(
time
);
}
/**
* 判断两个时间是不是在同一个月
*/
public
static
boolean
isSameMonth
(
Date
date1
,
Date
date2
)
{
Calendar
c
=
Calendar
.
getInstance
();
c
.
setTime
(
date1
);
int
month1
=
c
.
get
(
Calendar
.
MONTH
);
c
.
setTime
(
date2
);
int
month2
=
c
.
get
(
Calendar
.
MONTH
);
if
(
month1
==
month2
)
{
return
true
;
}
return
false
;
}
/**
* 间隔天数
*
* @param startTime
* @param endTime
* @return
*/
public
static
int
isolateDayNum
(
String
startTime
,
String
endTime
)
{
Date
startDate
=
getDate
(
startTime
,
"yyyy-MM-dd"
);
Date
endDate
=
getDate
(
endTime
,
"yyyy-MM-dd"
);
long
differentMillis
=
endDate
.
getTime
()
-
startDate
.
getTime
();
long
dayNum
=
differentMillis
/
(
1000
*
60
*
60
*
24
);
return
(
int
)
dayNum
;
}
/**
* 获取某月最后一天的时间
*
* @param yearMonth
* @return
*/
public
static
String
getLastDateTimeOfMonth
(
String
yearMonth
)
{
SimpleDateFormat
format0
=
new
SimpleDateFormat
(
"yyyy-MM"
);
SimpleDateFormat
format1
=
new
SimpleDateFormat
(
"yyyy-MM-dd HH:mm:ss"
);
Calendar
instance
=
Calendar
.
getInstance
();
try
{
Date
parse
=
format0
.
parse
(
yearMonth
);
instance
.
setTime
(
parse
);
instance
.
set
(
Calendar
.
DAY_OF_MONTH
,
instance
.
getActualMaximum
(
Calendar
.
DAY_OF_MONTH
));
instance
.
set
(
Calendar
.
HOUR_OF_DAY
,
23
);
instance
.
set
(
Calendar
.
MINUTE
,
59
);
instance
.
set
(
Calendar
.
SECOND
,
59
);
String
format
=
format1
.
format
(
instance
.
getTime
());
return
format
;
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
return
null
;
}
public
static
Date
getStrToDate
(
String
str
)
{
SimpleDateFormat
dateFormat
=
new
SimpleDateFormat
(
"yyyy年MM月dd日"
);
Date
date
=
null
;
try
{
if
(
str
==
null
)
{
date
=
null
;
}
else
{
date
=
dateFormat
.
parse
(
str
);
}
}
catch
(
ParseException
e
)
{
e
.
printStackTrace
();
}
return
date
;
}
public
static
int
getStageByDate
(
Date
date
)
{
Calendar
instance
=
Calendar
.
getInstance
();
instance
.
setTime
(
date
);
//当前时间
SimpleDateFormat
dateFormat
=
new
SimpleDateFormat
(
"HH:mm:ss"
);
String
format
=
dateFormat
.
format
(
date
);
try
{
Date
currentTime
=
dateFormat
.
parse
(
format
);
Date
parse1
=
dateFormat
.
parse
(
"05:00:00"
);
Date
parse2
=
dateFormat
.
parse
(
"11:00:00"
);
Date
parse3
=
dateFormat
.
parse
(
"17:00:00"
);
Date
parse4
=
dateFormat
.
parse
(
"00:00:00"
);
//A:05:00-11:00 | B:11:00-17:00 | C:00:00-05:00,17:00-00:00
if
(
currentTime
.
after
(
parse4
)
&&
currentTime
.
before
(
parse1
))
{
return
3
;
}
else
if
(
currentTime
.
after
(
parse1
)
&&
currentTime
.
before
(
parse2
))
{
return
1
;
}
else
if
(
currentTime
.
after
(
parse2
)
&&
currentTime
.
before
(
parse3
))
{
return
2
;
}
else
if
(
currentTime
.
after
(
parse3
)
&&
currentTime
.
after
(
parse4
))
{
return
4
;
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
return
0
;
}
public
static
String
getCurrentYear
()
{
Calendar
date
=
Calendar
.
getInstance
();
String
year
=
String
.
valueOf
(
date
.
get
(
Calendar
.
YEAR
));
return
year
;
}
}
src/main/resources/mapper/lease/LeaseOrderDao.xml
0 → 100644
浏览文件 @
c7a6a354
<?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.mmc.oms.dao.lease.LeaseOrderDao"
>
<insert
id=
"addOrder"
keyProperty=
"id"
useGeneratedKeys=
"true"
parameterType=
"com.mmc.oms.entity.lease.LeaseOrderDO"
>
insert into lease_order (order_no,
status_code,
user_account_id,
lease_goods_id,
company_name,
third_back_user_account_id,
order_name,
sku_img,
order_total_amount,
salary_amount,
share_amount,
other_amount,
user_address_id,
pay_time,
user_remark,
unit_price,
ware_num,
deposit,
start_date,
end_date)
values (#{orderNo}, #{statusCode}, #{userAccountId}, #{leaseGoodsId}, #{companyName}, #{thirdBackUserAccountId},
#{orderName}, #{skuImg}, #{orderTotalAmount}, #{salaryAmount}, #{shareAmount}, #{otherAmount},
#{userAddressId},
#{payTime}, #{userRemark}, #{unitPrice}, #{wareNum}, #{deposit}, #{startDate}, #{endDate});
</insert>
<insert
id=
"addAddress"
>
insert into lease_order_express(lease_order_id, send_exp_no, send_exp_code, take_name, take_phone, take_region,
take_address, create_time)
values (#{leaseOrderId}, #{sendExpNo}, #{sendExpCode}, #{takeName}, #{takePhone}, #{takeRegion}, #{takeAddress},
NOW())
</insert>
</mapper>
\ No newline at end of file
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论