Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
P
peizhen-java
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
PeiZhen-Java
peizhen-java
Commits
d24f12b8
Commit
d24f12b8
authored
Sep 15, 2023
by
sdif
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
用户端代码提交
parent
da4b9159
Show whitespace changes
Inline
Side-by-side
Showing
23 changed files
with
525 additions
and
46 deletions
+525
-46
pz-applet/src/main/java/com/pz/applet/AppletCommonController.java
+1
-1
pz-applet/src/main/java/com/pz/applet/AppletTotalOrderController.java
+63
-16
pz-applet/src/main/java/com/pz/applet/AppletZqghOrderController.java
+50
-0
pz-system/src/main/java/com/pz/system/datastructure/OrderDelayQueue.java
+48
-0
pz-system/src/main/java/com/pz/system/domain/DbghOrder.java
+1
-0
pz-system/src/main/java/com/pz/system/domain/PaymentRecord.java
+2
-2
pz-system/src/main/java/com/pz/system/domain/TotalOrder.java
+20
-1
pz-system/src/main/java/com/pz/system/domain/bo/CreateOrderBo.java
+2
-2
pz-system/src/main/java/com/pz/system/domain/bo/DbghOrderBo.java
+2
-0
pz-system/src/main/java/com/pz/system/domain/bo/ZqghOrderBo.java
+8
-0
pz-system/src/main/java/com/pz/system/domain/vo/CityVo.java
+3
-0
pz-system/src/main/java/com/pz/system/domain/vo/TotalOrderVo.java
+106
-0
pz-system/src/main/java/com/pz/system/domain/vo/ZqghOrderVo.java
+5
-0
pz-system/src/main/java/com/pz/system/mapper/CityMapper.java
+3
-1
pz-system/src/main/java/com/pz/system/service/IPayService.java
+2
-1
pz-system/src/main/java/com/pz/system/service/ITotalOrderService.java
+18
-0
pz-system/src/main/java/com/pz/system/service/IZqghOrderService.java
+8
-0
pz-system/src/main/java/com/pz/system/service/impl/ArticleServiceImpl.java
+14
-5
pz-system/src/main/java/com/pz/system/service/impl/CityServiceImpl.java
+5
-3
pz-system/src/main/java/com/pz/system/service/impl/PayServiceImpl.java
+2
-2
pz-system/src/main/java/com/pz/system/service/impl/TotalOrderServiceImpl.java
+119
-8
pz-system/src/main/java/com/pz/system/service/impl/ZqghOrderServiceImpl.java
+35
-4
pz-system/src/main/resources/mapper/system/CityMapper.xml
+8
-0
No files found.
pz-applet/src/main/java/com/pz/applet/AppletCommonController.java
View file @
d24f12b8
...
@@ -69,6 +69,6 @@ public class AppletCommonController extends BaseController {
...
@@ -69,6 +69,6 @@ public class AppletCommonController extends BaseController {
*/
*/
@GetMapping
(
"/cityVoList"
)
@GetMapping
(
"/cityVoList"
)
public
R
<
List
<
CityVo
>>
cityVoList
(
CityBo
bo
)
{
public
R
<
List
<
CityVo
>>
cityVoList
(
CityBo
bo
)
{
return
R
.
ok
(
iCityService
.
queryList
(
bo
));
return
R
.
ok
(
iCityService
.
query
App
List
(
bo
));
}
}
}
}
pz-applet/src/main/java/com/pz/applet/AppletTotalOrderController.java
View file @
d24f12b8
...
@@ -4,6 +4,7 @@ import cn.dev33.satoken.annotation.SaCheckPermission;
...
@@ -4,6 +4,7 @@ import cn.dev33.satoken.annotation.SaCheckPermission;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.github.binarywang.wxpay.bean.notify.WxPayNotifyResponse
;
import
com.github.binarywang.wxpay.bean.notify.WxPayNotifyResponse
;
import
com.github.binarywang.wxpay.bean.notify.WxPayOrderNotifyResult
;
import
com.github.binarywang.wxpay.bean.notify.WxPayOrderNotifyResult
;
import
com.github.binarywang.wxpay.bean.notify.WxPayRefundNotifyResult
;
import
com.github.binarywang.wxpay.bean.request.WxPayUnifiedOrderRequest
;
import
com.github.binarywang.wxpay.bean.request.WxPayUnifiedOrderRequest
;
import
com.github.binarywang.wxpay.bean.result.BaseWxPayResult
;
import
com.github.binarywang.wxpay.bean.result.BaseWxPayResult
;
import
com.github.binarywang.wxpay.exception.WxPayException
;
import
com.github.binarywang.wxpay.exception.WxPayException
;
...
@@ -38,9 +39,7 @@ import javax.servlet.http.HttpServletResponse;
...
@@ -38,9 +39,7 @@ import javax.servlet.http.HttpServletResponse;
import
javax.validation.constraints.NotEmpty
;
import
javax.validation.constraints.NotEmpty
;
import
javax.validation.constraints.NotNull
;
import
javax.validation.constraints.NotNull
;
import
java.math.BigDecimal
;
import
java.math.BigDecimal
;
import
java.util.Arrays
;
import
java.util.*
;
import
java.util.List
;
import
java.util.Random
;
/**
/**
* 总订单
* 总订单
...
@@ -109,14 +108,7 @@ public class AppletTotalOrderController extends BaseController {
...
@@ -109,14 +108,7 @@ public class AppletTotalOrderController extends BaseController {
return
toAjax
(
iTotalOrderService
.
deleteWithValidByIds
(
Arrays
.
asList
(
ids
),
true
));
return
toAjax
(
iTotalOrderService
.
deleteWithValidByIds
(
Arrays
.
asList
(
ids
),
true
));
}
}
/**
* 用户主动退款
*/
@RepeatSubmit
()
@PostMapping
(
"/refundOrder"
)
public
R
<
Void
>
refundOrder
(
@Validated
(
AddGroup
.
class
)
@RequestBody
TotalOrderBo
recordBo
)
{
return
toAjax
(
iTotalOrderService
.
refundOrder
(
recordBo
));
}
/**
/**
* 用户评价订单
* 用户评价订单
...
@@ -137,6 +129,15 @@ public class AppletTotalOrderController extends BaseController {
...
@@ -137,6 +129,15 @@ public class AppletTotalOrderController extends BaseController {
}
}
/**
/**
* 用户完成订单
*/
@RepeatSubmit
()
@PostMapping
(
"/finishOrder"
)
public
R
<
Void
>
finishOrder
(
@Validated
(
AddGroup
.
class
)
@RequestBody
TotalOrderBo
recordBo
)
{
return
toAjax
(
iTotalOrderService
.
finishOrder
(
recordBo
));
}
/**
* 订单支付
* 订单支付
*/
*/
@RepeatSubmit
()
@RepeatSubmit
()
...
@@ -150,20 +151,66 @@ public class AppletTotalOrderController extends BaseController {
...
@@ -150,20 +151,66 @@ public class AppletTotalOrderController extends BaseController {
*/
*/
@ResponseBody
@ResponseBody
@PostMapping
(
"/orderPayCallBack"
)
@PostMapping
(
"/orderPayCallBack"
)
public
R
<
Void
>
orderPayCallBack
(
HttpServletRequest
request
,
HttpServletResponse
response
)
{
public
Map
orderPayCallBack
(
HttpServletRequest
request
,
HttpServletResponse
response
)
{
Map
<
String
,
Object
>
map
=
new
HashMap
();
try
{
try
{
String
xmlResult
=
IOUtils
.
toString
(
request
.
getInputStream
(),
request
.
getCharacterEncoding
());
String
xmlResult
=
IOUtils
.
toString
(
request
.
getInputStream
(),
request
.
getCharacterEncoding
());
WxPayOrderNotifyResult
result
=
iPayService
.
parseOrderNotifyResult
(
xmlResult
);
WxPayOrderNotifyResult
result
=
iPayService
.
parseOrderNotifyResult
(
xmlResult
);
// 加入自己处理订单的业务逻辑,需要判断订单是否已经支付过,否则可能会重复调用
// 加入自己处理订单的业务逻辑,需要判断订单是否已经支付过,否则可能会重复调用
/* String orderNum = result.getOutTradeNo();
if
(
iTotalOrderService
.
orderPayCallBack
(
result
)){
iTotalOrderService.*/
map
.
put
(
"code"
,
"SUCCESS"
);
map
.
put
(
"message"
,
"成功"
);
return
map
;
}
return
R
.
ok
();
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
System
.
out
.
println
(
"微信回调结果异常,异常原因"
+
e
.
getMessage
());
System
.
out
.
println
(
"微信回调结果异常,异常原因"
+
e
.
getMessage
());
return
R
.
fail
();
map
.
put
(
"code"
,
"fail"
);
map
.
put
(
"message"
,
"系统错误"
);
return
map
;
}
map
.
put
(
"code"
,
"fail"
);
map
.
put
(
"message"
,
"系统错误"
);
return
map
;
}
/**
* 用户主动退款
*/
@RepeatSubmit
()
@PostMapping
(
"/refundOrder"
)
public
R
<
Void
>
refundOrder
(
@Validated
(
AddGroup
.
class
)
@RequestBody
TotalOrderBo
recordBo
)
{
return
toAjax
(
iTotalOrderService
.
refundOrder
(
recordBo
));
}
}
/**
* 退款回调
*/
@ResponseBody
@PostMapping
(
"/orderRefundCallBack"
)
public
Map
orderRefundCallBack
(
HttpServletRequest
request
,
HttpServletResponse
response
)
{
Map
<
String
,
Object
>
map
=
new
HashMap
();
try
{
String
xmlResult
=
IOUtils
.
toString
(
request
.
getInputStream
(),
request
.
getCharacterEncoding
());
WxPayRefundNotifyResult
result
=
iPayService
.
parseRefundNotifyResult
(
xmlResult
);
// 加入自己处理订单的业务逻辑,需要判断订单是否已经支付过,否则可能会重复调用
if
(
iTotalOrderService
.
orderRefundCallBack
(
result
)){
map
.
put
(
"code"
,
"SUCCESS"
);
map
.
put
(
"message"
,
"成功"
);
return
map
;
}
}
}
catch
(
Exception
e
)
{
System
.
out
.
println
(
"微信回调结果异常,异常原因"
+
e
.
getMessage
());
map
.
put
(
"code"
,
"fail"
);
map
.
put
(
"message"
,
"系统错误"
);
return
map
;
}
map
.
put
(
"code"
,
"fail"
);
map
.
put
(
"message"
,
"系统错误"
);
return
map
;
}
}
}
pz-applet/src/main/java/com/pz/applet/AppletZqghOrderController.java
0 → 100644
View file @
d24f12b8
package
com
.
pz
.
applet
;
import
cn.dev33.satoken.annotation.SaCheckPermission
;
import
com.pz.common.annotation.Log
;
import
com.pz.common.annotation.RepeatSubmit
;
import
com.pz.common.core.controller.BaseController
;
import
com.pz.common.core.domain.PageQuery
;
import
com.pz.common.core.domain.R
;
import
com.pz.common.core.page.TableDataInfo
;
import
com.pz.common.core.validate.AddGroup
;
import
com.pz.common.core.validate.EditGroup
;
import
com.pz.common.enums.BusinessType
;
import
com.pz.common.utils.poi.ExcelUtil
;
import
com.pz.system.domain.bo.ZqghOrderBo
;
import
com.pz.system.domain.vo.ZqghOrderVo
;
import
com.pz.system.service.IZqghOrderService
;
import
lombok.RequiredArgsConstructor
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.*
;
import
javax.servlet.http.HttpServletResponse
;
import
javax.validation.constraints.NotEmpty
;
import
javax.validation.constraints.NotNull
;
import
java.util.Arrays
;
import
java.util.List
;
import
java.util.Map
;
/**
* 诊前挂号订单
*
* @author ruoyi
* @date 2023-09-12
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping
(
"/applet/zqghOrder"
)
public
class
AppletZqghOrderController
extends
BaseController
{
private
final
IZqghOrderService
iZqghOrderService
;
/**
* 查询诊前挂号订单列表
*/
@PostMapping
(
"/list"
)
public
R
<
List
<
ZqghOrderVo
>>
list
(
@RequestBody
ZqghOrderBo
bo
)
{
return
R
.
ok
(
iZqghOrderService
.
queryAppList
(
bo
));
}
}
pz-system/src/main/java/com/pz/system/datastructure/OrderDelayQueue.java
0 → 100644
View file @
d24f12b8
package
com
.
pz
.
system
.
datastructure
;
import
com.pz.system.domain.TotalOrder
;
import
com.pz.system.domain.bo.TotalOrderBo
;
import
com.pz.system.service.ITotalOrderService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.scheduling.annotation.Scheduled
;
import
org.springframework.stereotype.Component
;
import
java.util.concurrent.DelayQueue
;
@Component
public
class
OrderDelayQueue
{
private
DelayQueue
<
TotalOrder
>
delayQueue
=
new
DelayQueue
<>();
@Autowired
private
ITotalOrderService
iTotalOrderService
;
// 添加订单到延时队列
public
void
addOrder
(
TotalOrder
order
)
{
delayQueue
.
put
(
order
);
}
// 处理过期订单
@Scheduled
(
fixedDelay
=
5000
)
// 每5秒触发一次任务
public
void
processExpiredOrders
()
{
long
currentTime
=
System
.
currentTimeMillis
();
while
(
true
)
{
TotalOrder
order
=
delayQueue
.
peek
();
if
(
order
==
null
||
order
.
getExpirationTime
()
>
currentTime
)
{
break
;
}
order
=
delayQueue
.
poll
();
cancelOrder
(
order
);
}
}
// 取消订单的逻辑
private
void
cancelOrder
(
TotalOrder
order
)
{
TotalOrderBo
totalOrderBo
=
new
TotalOrderBo
();
totalOrderBo
.
setId
(
order
.
getId
());
// 执行取消订单的相关操作
iTotalOrderService
.
cancelOrder
(
totalOrderBo
);
}
}
pz-system/src/main/java/com/pz/system/domain/DbghOrder.java
View file @
d24f12b8
...
@@ -68,4 +68,5 @@ public class DbghOrder extends BaseEntity {
...
@@ -68,4 +68,5 @@ public class DbghOrder extends BaseEntity {
*/
*/
private
String
remark
;
private
String
remark
;
}
}
pz-system/src/main/java/com/pz/system/domain/PaymentRecord.java
View file @
d24f12b8
...
@@ -39,11 +39,11 @@ public class PaymentRecord extends BaseEntity {
...
@@ -39,11 +39,11 @@ public class PaymentRecord extends BaseEntity {
/**
/**
* 金额
* 金额
*/
*/
private
Long
money
;
private
Double
money
;
/**
/**
* 用户
* 用户
*/
*/
private
Long
uid
;
private
Integer
uid
;
/**
/**
* 删除标志(0代表存在 2代表删除)
* 删除标志(0代表存在 2代表删除)
*/
*/
...
...
pz-system/src/main/java/com/pz/system/domain/TotalOrder.java
View file @
d24f12b8
...
@@ -4,6 +4,10 @@ import com.baomidou.mybatisplus.annotation.*;
...
@@ -4,6 +4,10 @@ import com.baomidou.mybatisplus.annotation.*;
import
com.pz.common.core.domain.BaseEntity
;
import
com.pz.common.core.domain.BaseEntity
;
import
lombok.Data
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
lombok.EqualsAndHashCode
;
import
org.jetbrains.annotations.NotNull
;
import
java.util.concurrent.Delayed
;
import
java.util.concurrent.TimeUnit
;
/**
/**
...
@@ -15,7 +19,7 @@ import lombok.EqualsAndHashCode;
...
@@ -15,7 +19,7 @@ import lombok.EqualsAndHashCode;
@Data
@Data
@EqualsAndHashCode
(
callSuper
=
true
)
@EqualsAndHashCode
(
callSuper
=
true
)
@TableName
(
"total_order"
)
@TableName
(
"total_order"
)
public
class
TotalOrder
extends
BaseEntity
{
public
class
TotalOrder
extends
BaseEntity
implements
Delayed
{
private
static
final
long
serialVersionUID
=
1L
;
private
static
final
long
serialVersionUID
=
1L
;
...
@@ -87,4 +91,19 @@ public class TotalOrder extends BaseEntity {
...
@@ -87,4 +91,19 @@ public class TotalOrder extends BaseEntity {
@TableLogic
@TableLogic
private
String
delFlag
;
private
String
delFlag
;
@TableField
(
exist
=
false
)
private
long
expirationTime
;
// 订单过期时间
@Override
public
long
getDelay
(
@NotNull
TimeUnit
unit
)
{
// 计算订单到期时间和当前时间的时间差,并返回以指定时间单位表示的延迟时间
long
diff
=
expirationTime
-
System
.
currentTimeMillis
();
return
unit
.
convert
(
diff
,
TimeUnit
.
MILLISECONDS
);
}
@Override
public
int
compareTo
(
@NotNull
Delayed
o
)
{
// 比较订单到期时间先后顺序
return
Long
.
compare
(
expirationTime
,
((
TotalOrder
)
o
).
expirationTime
);
}
}
}
pz-system/src/main/java/com/pz/system/domain/bo/CreateOrderBo.java
View file @
d24f12b8
...
@@ -100,7 +100,7 @@ public class CreateOrderBo extends BaseEntity {
...
@@ -100,7 +100,7 @@ public class CreateOrderBo extends BaseEntity {
/**
/**
* 相关报告(文件数组)
* 相关报告(文件数组)
*/
*/
private
List
<
String
>
relatedReports
;
private
String
relatedReports
;
/**
/**
* 开始日期
* 开始日期
...
@@ -140,7 +140,7 @@ public class CreateOrderBo extends BaseEntity {
...
@@ -140,7 +140,7 @@ public class CreateOrderBo extends BaseEntity {
/**
/**
* 处方附件(文件数组)
* 处方附件(文件数组)
*/
*/
private
List
<
String
>
prescriptionAttachment
;
private
String
prescriptionAttachment
;
/**
/**
* 取药方式:0-邮寄到家,1-送货上门
* 取药方式:0-邮寄到家,1-送货上门
...
...
pz-system/src/main/java/com/pz/system/domain/bo/DbghOrderBo.java
View file @
d24f12b8
...
@@ -6,6 +6,8 @@ import lombok.EqualsAndHashCode;
...
@@ -6,6 +6,8 @@ import lombok.EqualsAndHashCode;
import
javax.validation.constraints.*
;
import
javax.validation.constraints.*
;
import
java.util.Date
;
import
java.util.Date
;
import
java.util.List
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
/**
/**
...
...
pz-system/src/main/java/com/pz/system/domain/bo/ZqghOrderBo.java
View file @
d24f12b8
...
@@ -6,6 +6,8 @@ import lombok.EqualsAndHashCode;
...
@@ -6,6 +6,8 @@ import lombok.EqualsAndHashCode;
import
javax.validation.constraints.*
;
import
javax.validation.constraints.*
;
import
java.util.Date
;
import
java.util.Date
;
import
java.util.List
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
/**
/**
...
@@ -75,4 +77,10 @@ public class ZqghOrderBo extends BaseEntity {
...
@@ -75,4 +77,10 @@ public class ZqghOrderBo extends BaseEntity {
private
String
remark
;
private
String
remark
;
private
String
orderSn
;
private
String
orderSn
;
/**
* 预约时间段
*/
private
List
<
String
>
timeOfAppointmentArr
;
}
}
pz-system/src/main/java/com/pz/system/domain/vo/CityVo.java
View file @
d24f12b8
...
@@ -6,6 +6,8 @@ import com.pz.common.annotation.ExcelDictFormat;
...
@@ -6,6 +6,8 @@ import com.pz.common.annotation.ExcelDictFormat;
import
com.pz.common.convert.ExcelDictConvert
;
import
com.pz.common.convert.ExcelDictConvert
;
import
lombok.Data
;
import
lombok.Data
;
import
java.util.List
;
/**
/**
* 城市视图对象 city
* 城市视图对象 city
...
@@ -43,5 +45,6 @@ public class CityVo {
...
@@ -43,5 +45,6 @@ public class CityVo {
@ExcelProperty
(
value
=
""
)
@ExcelProperty
(
value
=
""
)
private
String
sy
;
private
String
sy
;
private
List
<
CityVo
>
cityVo
;
}
}
pz-system/src/main/java/com/pz/system/domain/vo/TotalOrderVo.java
View file @
d24f12b8
...
@@ -7,6 +7,7 @@ import com.pz.common.convert.ExcelDictConvert;
...
@@ -7,6 +7,7 @@ import com.pz.common.convert.ExcelDictConvert;
import
com.pz.system.domain.StoreGoodsTag
;
import
com.pz.system.domain.StoreGoodsTag
;
import
lombok.Data
;
import
lombok.Data
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.List
;
...
@@ -181,4 +182,109 @@ public class TotalOrderVo {
...
@@ -181,4 +182,109 @@ public class TotalOrderVo {
*/
*/
private
String
project
;
private
String
project
;
/**
* 陪护日期
*/
private
String
phrq
;
/**
* 陪护时间
*/
private
String
phsj
;
/**
* 凭证图片
*/
private
String
voucher
;
/**
* 服务完成状态
*/
private
Date
overTime
;
/**
* 主诉
*/
private
String
chiefComplaint
;
/**
* 现病史
*/
private
String
historyOfPresentIllness
;
/**
* 上次就医情况
*/
private
String
pastHistory
;
/**
* 治疗后情况
*/
private
String
postTreatmentCondition
;
/**
* 相关报告
*/
private
String
relatedReports
;
/**
* 服务要求
*/
private
String
serviceRequirements
;
/**
* 说明
*/
private
String
indications
;
/**
* 药品名称
*/
private
String
ypName
;
/**
* 药店地址
*/
private
String
ydAddress
;
/**
* 是否处方药
*/
private
Integer
isCf
;
/**
* 处方附件
*/
private
String
prescriptionAttachment
;
/**
* 取药方式:0-邮寄到家,1-送货上门
*/
private
String
way
;
/**
* 收件人
*/
private
String
recipient
;
/**
* 收货地址
*/
private
String
adress
;
/**
* 详细地址
*/
private
String
addressInfo
;
/**
*是否冷藏
*/
private
Integer
isRefrigerate
;
/**
* 预约时间
*/
private
String
timeOfAppointment
;
}
}
pz-system/src/main/java/com/pz/system/domain/vo/ZqghOrderVo.java
View file @
d24f12b8
...
@@ -136,4 +136,9 @@ public class ZqghOrderVo {
...
@@ -136,4 +136,9 @@ public class ZqghOrderVo {
private
String
userName
;
private
String
userName
;
private
Date
createTime
;
private
Date
createTime
;
/**
* 预约数量
*/
private
Integer
num
;
}
}
pz-system/src/main/java/com/pz/system/mapper/CityMapper.java
View file @
d24f12b8
...
@@ -5,6 +5,8 @@ import com.pz.system.domain.vo.CityVo;
...
@@ -5,6 +5,8 @@ import com.pz.system.domain.vo.CityVo;
import
com.pz.common.core.mapper.BaseMapperPlus
;
import
com.pz.common.core.mapper.BaseMapperPlus
;
import
org.apache.ibatis.annotations.Mapper
;
import
org.apache.ibatis.annotations.Mapper
;
import
java.util.List
;
/**
/**
* 城市Mapper接口
* 城市Mapper接口
*
*
...
@@ -13,5 +15,5 @@ import org.apache.ibatis.annotations.Mapper;
...
@@ -13,5 +15,5 @@ import org.apache.ibatis.annotations.Mapper;
*/
*/
@Mapper
@Mapper
public
interface
CityMapper
extends
BaseMapperPlus
<
CityMapper
,
City
,
CityVo
>
{
public
interface
CityMapper
extends
BaseMapperPlus
<
CityMapper
,
City
,
CityVo
>
{
List
<
CityVo
>
selectAppCity
();
}
}
pz-system/src/main/java/com/pz/system/service/IPayService.java
View file @
d24f12b8
package
com
.
pz
.
system
.
service
;
package
com
.
pz
.
system
.
service
;
import
com.github.binarywang.wxpay.bean.notify.WxPayOrderNotifyResult
;
import
com.github.binarywang.wxpay.bean.notify.WxPayOrderNotifyResult
;
import
com.github.binarywang.wxpay.bean.notify.WxPayRefundNotifyResult
;
import
com.github.binarywang.wxpay.bean.request.WxPayRefundQueryRequest
;
import
com.github.binarywang.wxpay.bean.request.WxPayRefundQueryRequest
;
import
com.github.binarywang.wxpay.bean.request.WxPayRefundRequest
;
import
com.github.binarywang.wxpay.bean.request.WxPayRefundRequest
;
import
com.github.binarywang.wxpay.bean.request.WxPayUnifiedOrderRequest
;
import
com.github.binarywang.wxpay.bean.request.WxPayUnifiedOrderRequest
;
...
@@ -94,5 +95,5 @@ public interface IPayService {
...
@@ -94,5 +95,5 @@ public interface IPayService {
* 微信请求的接口,要求可以公网访问,要放开token校验
* 微信请求的接口,要求可以公网访问,要放开token校验
* @param xmlData 微信提交的请求参数
* @param xmlData 微信提交的请求参数
*/
*/
String
parseRefundNotifyResult
(
String
xmlData
)
throws
WxPayException
;
WxPayRefundNotifyResult
parseRefundNotifyResult
(
String
xmlData
)
throws
WxPayException
;
}
}
pz-system/src/main/java/com/pz/system/service/ITotalOrderService.java
View file @
d24f12b8
package
com
.
pz
.
system
.
service
;
package
com
.
pz
.
system
.
service
;
import
com.github.binarywang.wxpay.bean.notify.WxPayOrderNotifyResult
;
import
com.github.binarywang.wxpay.bean.notify.WxPayRefundNotifyResult
;
import
com.pz.system.domain.TotalOrder
;
import
com.pz.system.domain.TotalOrder
;
import
com.pz.system.domain.bo.CreateOrderBo
;
import
com.pz.system.domain.bo.CreateOrderBo
;
import
com.pz.system.domain.vo.AccompanyDemandVo
;
import
com.pz.system.domain.vo.AccompanyDemandVo
;
...
@@ -68,6 +70,13 @@ public interface ITotalOrderService {
...
@@ -68,6 +70,13 @@ public interface ITotalOrderService {
* @return
* @return
*/
*/
Boolean
cancelOrder
(
TotalOrderBo
bo
);
Boolean
cancelOrder
(
TotalOrderBo
bo
);
/**
* 用户完成订单
*
* @param bo
* @return
*/
Boolean
finishOrder
(
TotalOrderBo
bo
);
/**
/**
* 统一下单接口
* 统一下单接口
...
@@ -77,6 +86,13 @@ public interface ITotalOrderService {
...
@@ -77,6 +86,13 @@ public interface ITotalOrderService {
Object
payOrder
(
TotalOrderBo
bo
);
Object
payOrder
(
TotalOrderBo
bo
);
/**
/**
* 支付回调
* @param result
* @return
*/
boolean
orderPayCallBack
(
WxPayOrderNotifyResult
result
);
/**
* 用户主动退款
* 用户主动退款
*
*
* @param bo
* @param bo
...
@@ -84,6 +100,8 @@ public interface ITotalOrderService {
...
@@ -84,6 +100,8 @@ public interface ITotalOrderService {
*/
*/
Boolean
refundOrder
(
TotalOrderBo
bo
);
Boolean
refundOrder
(
TotalOrderBo
bo
);
boolean
orderRefundCallBack
(
WxPayRefundNotifyResult
wxPayRefundNotifyResult
);
/**
/**
* 校验并批量删除总订单信息
* 校验并批量删除总订单信息
*/
*/
...
...
pz-system/src/main/java/com/pz/system/service/IZqghOrderService.java
View file @
d24f12b8
...
@@ -8,6 +8,7 @@ import com.pz.common.core.domain.PageQuery;
...
@@ -8,6 +8,7 @@ import com.pz.common.core.domain.PageQuery;
import
java.util.Collection
;
import
java.util.Collection
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Map
;
/**
/**
* 诊前挂号订单Service接口
* 诊前挂号订单Service接口
...
@@ -33,6 +34,13 @@ public interface IZqghOrderService {
...
@@ -33,6 +34,13 @@ public interface IZqghOrderService {
List
<
ZqghOrderVo
>
queryList
(
ZqghOrderBo
bo
);
List
<
ZqghOrderVo
>
queryList
(
ZqghOrderBo
bo
);
/**
/**
* 小程序诊前挂号列表
* @param bo
* @return
*/
List
<
ZqghOrderVo
>
queryAppList
(
ZqghOrderBo
bo
);
/**
* 新增诊前挂号订单
* 新增诊前挂号订单
*/
*/
Boolean
insertByBo
(
ZqghOrderBo
bo
);
Boolean
insertByBo
(
ZqghOrderBo
bo
);
...
...
pz-system/src/main/java/com/pz/system/service/impl/ArticleServiceImpl.java
View file @
d24f12b8
...
@@ -10,6 +10,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
...
@@ -10,6 +10,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.pz.common.helper.LoginHelper
;
import
com.pz.common.helper.LoginHelper
;
import
com.pz.common.utils.JsonUtils
;
import
com.pz.system.domain.ArticleComment
;
import
com.pz.system.domain.ArticleComment
;
import
com.pz.system.domain.UserAppreciate
;
import
com.pz.system.domain.UserAppreciate
;
import
com.pz.system.domain.UserCollect
;
import
com.pz.system.domain.UserCollect
;
...
@@ -139,7 +140,8 @@ public class ArticleServiceImpl implements IArticleService {
...
@@ -139,7 +140,8 @@ public class ArticleServiceImpl implements IArticleService {
LambdaQueryWrapper
<
Article
>
lqw
=
new
LambdaQueryWrapper
<>();
LambdaQueryWrapper
<
Article
>
lqw
=
new
LambdaQueryWrapper
<>();
//Page<ArticleVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
//Page<ArticleVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
// TODO 待登录写完修改
// TODO 待登录写完修改
int
userId
=
LoginHelper
.
getLoginUser
().
getUserId
().
intValue
();
//int userId = LoginHelper.getLoginUser().getUserId().intValue();
int
userId
=
1
;
Page
<
ArticleVo
>
result
=
new
Page
<>();
Page
<
ArticleVo
>
result
=
new
Page
<>();
//判断是否展示收藏文章
//判断是否展示收藏文章
if
(
bo
.
getIsCollect
()
==
1
){
if
(
bo
.
getIsCollect
()
==
1
){
...
@@ -150,10 +152,14 @@ public class ArticleServiceImpl implements IArticleService {
...
@@ -150,10 +152,14 @@ public class ArticleServiceImpl implements IArticleService {
.
map
(
UserCollect:
:
getAid
)
.
map
(
UserCollect:
:
getAid
)
.
collect
(
Collectors
.
toList
());
.
collect
(
Collectors
.
toList
());
if
(
articleIds
.
size
()
!=
0
)
{
//查询用户收藏的所有文章
//查询用户收藏的所有文章
bo
.
setArticleId
(
articleIds
);
bo
.
setArticleId
(
articleIds
);
lqw
=
buildQueryWrapper
(
bo
);
lqw
=
buildQueryWrapper
(
bo
);
result
=
baseMapper
.
selectVoPage
(
pageQuery
.
build
(),
lqw
);
result
=
baseMapper
.
selectVoPage
(
pageQuery
.
build
(),
lqw
);
}
}
else
if
(
bo
.
getIsCollect
()
==
0
){
}
else
if
(
bo
.
getIsCollect
()
==
0
){
result
=
baseMapper
.
selectVoPage
(
pageQuery
.
build
(),
lqw
);
result
=
baseMapper
.
selectVoPage
(
pageQuery
.
build
(),
lqw
);
}
}
...
@@ -183,7 +189,7 @@ public class ArticleServiceImpl implements IArticleService {
...
@@ -183,7 +189,7 @@ public class ArticleServiceImpl implements IArticleService {
// 设置城市名称、点赞数和收藏数
// 设置城市名称、点赞数和收藏数
articleVos
.
forEach
(
articleVo
->
{
articleVos
.
forEach
(
articleVo
->
{
// 去除方括号
/*
// 去除方括号
String numbers = articleVo.getCover().substring(1, articleVo.getCover().length() - 1);
String numbers = articleVo.getCover().substring(1, articleVo.getCover().length() - 1);
// 使用逗号分割字符串
// 使用逗号分割字符串
...
@@ -193,8 +199,9 @@ public class ArticleServiceImpl implements IArticleService {
...
@@ -193,8 +199,9 @@ public class ArticleServiceImpl implements IArticleService {
List<String> integerList = new ArrayList<>();
List<String> integerList = new ArrayList<>();
for (String num : numberArray) {
for (String num : numberArray) {
integerList.add(num.trim());
integerList.add(num.trim());
}
}*/
articleVo
.
setCoverList
(
integerList
);
List
<
String
>
ids
=
JsonUtils
.
parseArray
(
articleVo
.
getCover
(),
String
.
class
);
articleVo
.
setCoverList
(
ids
);
// 设置点赞数
// 设置点赞数
articleVo
.
setAppreciateNum
(
appreciateNumMap
.
getOrDefault
(
articleVo
.
getId
(),
0
));
articleVo
.
setAppreciateNum
(
appreciateNumMap
.
getOrDefault
(
articleVo
.
getId
(),
0
));
...
@@ -221,7 +228,9 @@ public class ArticleServiceImpl implements IArticleService {
...
@@ -221,7 +228,9 @@ public class ArticleServiceImpl implements IArticleService {
LambdaQueryWrapper
<
Article
>
lqw
=
Wrappers
.
lambdaQuery
();
LambdaQueryWrapper
<
Article
>
lqw
=
Wrappers
.
lambdaQuery
();
lqw
.
like
(
StringUtils
.
isNotBlank
(
bo
.
getTitle
()),
Article:
:
getTitle
,
bo
.
getTitle
());
lqw
.
like
(
StringUtils
.
isNotBlank
(
bo
.
getTitle
()),
Article:
:
getTitle
,
bo
.
getTitle
());
lqw
.
eq
(!
Objects
.
isNull
(
bo
.
getCityId
()),
Article:
:
getCityId
,
bo
.
getCityId
());
lqw
.
eq
(!
Objects
.
isNull
(
bo
.
getCityId
()),
Article:
:
getCityId
,
bo
.
getCityId
());
lqw
.
in
(
CollectionUtils
.
isNotEmpty
(
bo
.
getArticleId
()),
Article:
:
getId
,
bo
.
getArticleId
());
if
(
null
!=
bo
.
getArticleId
()
&&
bo
.
getArticleId
().
size
()
!=
0
){
lqw
.
in
(
Article:
:
getId
,
bo
.
getArticleId
());
}
return
lqw
;
return
lqw
;
}
}
...
...
pz-system/src/main/java/com/pz/system/service/impl/CityServiceImpl.java
View file @
d24f12b8
...
@@ -60,9 +60,11 @@ public class CityServiceImpl implements ICityService {
...
@@ -60,9 +60,11 @@ public class CityServiceImpl implements ICityService {
@Override
@Override
public
List
<
CityVo
>
queryAppList
(
CityBo
bo
)
{
public
List
<
CityVo
>
queryAppList
(
CityBo
bo
)
{
LambdaQueryWrapper
<
City
>
lqw
=
buildQueryWrapper
(
bo
);
List
<
CityVo
>
cityVos
=
baseMapper
.
selectAppCity
();
List
<
CityVo
>
cityVos
=
baseMapper
.
selectVoList
(
lqw
);
for
(
CityVo
cityVo
:
cityVos
)
{
return
null
;
cityVo
.
setCityVo
(
baseMapper
.
selectVoList
(
new
LambdaQueryWrapper
<
City
>().
eq
(
City:
:
getSy
,
cityVo
.
getSy
())));
}
return
cityVos
;
}
}
private
LambdaQueryWrapper
<
City
>
buildQueryWrapper
(
CityBo
bo
)
{
private
LambdaQueryWrapper
<
City
>
buildQueryWrapper
(
CityBo
bo
)
{
...
...
pz-system/src/main/java/com/pz/system/service/impl/PayServiceImpl.java
View file @
d24f12b8
...
@@ -118,10 +118,10 @@ public class PayServiceImpl implements IPayService {
...
@@ -118,10 +118,10 @@ public class PayServiceImpl implements IPayService {
* @throws WxPayException
* @throws WxPayException
*/
*/
@Override
@Override
public
String
parseRefundNotifyResult
(
String
xmlData
)
throws
WxPayException
{
public
WxPayRefundNotifyResult
parseRefundNotifyResult
(
String
xmlData
)
throws
WxPayException
{
// 参数解析
// 参数解析
final
WxPayRefundNotifyResult
result
=
this
.
wxService
.
parseRefundNotifyResult
(
xmlData
);
final
WxPayRefundNotifyResult
result
=
this
.
wxService
.
parseRefundNotifyResult
(
xmlData
);
// TODO 根据自己业务场景需要构造返回对象
// TODO 根据自己业务场景需要构造返回对象
return
WxPayNotifyResponse
.
success
(
"成功"
)
;
return
result
;
}
}
}
}
pz-system/src/main/java/com/pz/system/service/impl/TotalOrderServiceImpl.java
View file @
d24f12b8
...
@@ -5,6 +5,8 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
...
@@ -5,6 +5,8 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import
com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper
;
import
com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.core.toolkit.StringUtils
;
import
com.baomidou.mybatisplus.core.toolkit.StringUtils
;
import
com.github.binarywang.wxpay.bean.notify.WxPayOrderNotifyResult
;
import
com.github.binarywang.wxpay.bean.notify.WxPayRefundNotifyResult
;
import
com.github.binarywang.wxpay.bean.request.WxPayUnifiedOrderRequest
;
import
com.github.binarywang.wxpay.bean.request.WxPayUnifiedOrderRequest
;
import
com.pz.common.core.domain.model.LoginUser
;
import
com.pz.common.core.domain.model.LoginUser
;
import
com.pz.common.core.page.TableDataInfo
;
import
com.pz.common.core.page.TableDataInfo
;
...
@@ -17,15 +19,18 @@ import com.pz.common.enums.ShopOrderStatus;
...
@@ -17,15 +19,18 @@ import com.pz.common.enums.ShopOrderStatus;
import
com.pz.common.enums.TotalOrderStatus
;
import
com.pz.common.enums.TotalOrderStatus
;
import
com.pz.common.exception.ServiceException
;
import
com.pz.common.exception.ServiceException
;
import
com.pz.merchant.domain.vo.SonOrderVo
;
import
com.pz.merchant.domain.vo.SonOrderVo
;
import
com.pz.merchant.mapper.EmployeesMapper
;
import
com.pz.merchant.service.ISonOrderService
;
import
com.pz.merchant.service.ISonOrderService
;
import
com.pz.merchant.service.impl.SonOrderServiceBuilder
;
import
com.pz.merchant.service.impl.SonOrderServiceBuilder
;
import
com.pz.common.helper.LoginHelper
;
import
com.pz.common.helper.LoginHelper
;
import
com.pz.system.datastructure.OrderDelayQueue
;
import
com.pz.system.domain.*
;
import
com.pz.system.domain.*
;
import
com.pz.system.domain.bo.CreateOrderBo
;
import
com.pz.system.domain.bo.CreateOrderBo
;
import
com.pz.system.domain.vo.AccompanyDemandVo
;
import
com.pz.system.domain.vo.AccompanyDemandVo
;
import
com.pz.system.mapper.*
;
import
com.pz.system.mapper.*
;
import
com.pz.system.service.IPayService
;
import
com.pz.system.service.IPayService
;
import
lombok.RequiredArgsConstructor
;
import
lombok.RequiredArgsConstructor
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
com.pz.system.domain.bo.TotalOrderBo
;
import
com.pz.system.domain.bo.TotalOrderBo
;
import
com.pz.system.domain.vo.TotalOrderVo
;
import
com.pz.system.domain.vo.TotalOrderVo
;
...
@@ -34,6 +39,7 @@ import org.springframework.transaction.annotation.Transactional;
...
@@ -34,6 +39,7 @@ import org.springframework.transaction.annotation.Transactional;
import
java.math.BigDecimal
;
import
java.math.BigDecimal
;
import
java.util.*
;
import
java.util.*
;
import
java.util.concurrent.TimeUnit
;
/**
/**
* 总订单Service业务层处理
* 总订单Service业务层处理
...
@@ -76,6 +82,19 @@ public class TotalOrderServiceImpl implements ITotalOrderService {
...
@@ -76,6 +82,19 @@ public class TotalOrderServiceImpl implements ITotalOrderService {
private
final
SysUserMapper
sysUserMapper
;
private
final
SysUserMapper
sysUserMapper
;
private
final
HospitalMapper
hospitalMapper
;
private
final
DoctorMapper
doctorMapper
;
private
final
DepartmentMapper
departmentMapper
;
private
final
EmployeesMapper
employeesMapper
;
private
final
PaymentRecordMapper
paymentRecordMapper
;
@Autowired
private
OrderDelayQueue
delayQueue
;
@Override
@Override
public
TotalOrderVo
queryById
(
Long
id
)
{
public
TotalOrderVo
queryById
(
Long
id
)
{
return
baseMapper
.
selectVoById
(
id
);
return
baseMapper
.
selectVoById
(
id
);
...
@@ -86,45 +105,73 @@ public class TotalOrderServiceImpl implements ITotalOrderService {
...
@@ -86,45 +105,73 @@ public class TotalOrderServiceImpl implements ITotalOrderService {
*/
*/
@Override
@Override
public
TotalOrderVo
queryByAppId
(
Integer
id
)
{
public
TotalOrderVo
queryByAppId
(
Integer
id
)
{
// TODO 待优化
TotalOrderVo
totalOrderVo
=
baseMapper
.
selectByOrderId
(
id
);
TotalOrderVo
totalOrderVo
=
baseMapper
.
selectByOrderId
(
id
);
if
(
totalOrderVo
.
getBusinessId
()
==
1
){
//预约陪诊
if
(
totalOrderVo
.
getBusinessId
()
==
1
){
//预约陪诊
YypzOrder
yypzOrder
=
yypzOrderMapper
.
selectOne
(
new
LambdaQueryWrapper
<
YypzOrder
>().
eq
(
YypzOrder:
:
getOrderId
,
totalOrderVo
.
getId
()));
totalOrderVo
.
setServiceStatus
(
totalOrderVo
.
setServiceStatus
(
yypzOrder
Mapper
.
selectOne
(
new
LambdaQueryWrapper
<
YypzOrder
>().
eq
(
YypzOrder:
:
getOrderId
,
totalOrderVo
.
getId
()))
.
getStatus
()
yypzOrder
.
getStatus
()
);
);
totalOrderVo
.
setHospital
(
hospitalMapper
.
selectById
(
yypzOrder
.
getHid
()).
getName
());
totalOrderVo
.
setVisitor
(
userVsitorMapper
.
selectById
(
yypzOrder
.
getVisitor
()).
getName
());
totalOrderVo
.
setDepartment
(
departmentMapper
.
selectById
(
yypzOrder
.
getDid
()).
getTitle
());
totalOrderVo
.
setPhone
(
yypzOrder
.
getPhone
());
totalOrderVo
=
BeanUtil
.
toBean
(
yypzOrder
,
TotalOrderVo
.
class
);
}
else
if
(
totalOrderVo
.
getBusinessId
()
==
2
){
//代办挂号
}
else
if
(
totalOrderVo
.
getBusinessId
()
==
2
){
//代办挂号
DbghOrder
dbghOrder
=
dbghOrderMapper
.
selectOne
(
new
LambdaQueryWrapper
<
DbghOrder
>().
eq
(
DbghOrder:
:
getOrderId
,
totalOrderVo
.
getId
()));
totalOrderVo
.
setServiceStatus
(
totalOrderVo
.
setServiceStatus
(
dbghOrder
Mapper
.
selectOne
(
new
LambdaQueryWrapper
<
DbghOrder
>().
eq
(
DbghOrder:
:
getOrderId
,
totalOrderVo
.
getId
()))
.
getStatus
()
dbghOrder
.
getStatus
()
);
);
totalOrderVo
.
setHospital
(
hospitalMapper
.
selectById
(
dbghOrder
.
getHid
()).
getName
());
totalOrderVo
.
setDepartment
(
departmentMapper
.
selectById
(
dbghOrder
.
getDid
()).
getTitle
());
totalOrderVo
=
BeanUtil
.
toBean
(
dbghOrder
,
TotalOrderVo
.
class
);
}
else
if
(
totalOrderVo
.
getBusinessId
()
==
3
){
//代办问诊
}
else
if
(
totalOrderVo
.
getBusinessId
()
==
3
){
//代办问诊
DbwzOrder
dbwzOrder
=
dbwzOrderMapper
.
selectOne
(
new
LambdaQueryWrapper
<
DbwzOrder
>().
eq
(
DbwzOrder:
:
getOrderId
,
totalOrderVo
.
getId
()));
totalOrderVo
.
setServiceStatus
(
totalOrderVo
.
setServiceStatus
(
dbwzOrder
Mapper
.
selectOne
(
new
LambdaQueryWrapper
<
DbwzOrder
>().
eq
(
DbwzOrder:
:
getOrderId
,
totalOrderVo
.
getId
()))
.
getStatus
()
dbwzOrder
.
getStatus
()
);
);
totalOrderVo
.
setDepartment
(
departmentMapper
.
selectById
(
dbwzOrder
.
getDid
()).
getTitle
());
totalOrderVo
.
setVisitor
(
userVsitorMapper
.
selectById
(
dbwzOrder
.
getVisitor
()).
getName
());
totalOrderVo
=
BeanUtil
.
toBean
(
dbwzOrder
,
TotalOrderVo
.
class
);
}
else
if
(
totalOrderVo
.
getBusinessId
()
==
4
){
//住院陪护
}
else
if
(
totalOrderVo
.
getBusinessId
()
==
4
){
//住院陪护
ZyphOrder
zyphOrder
=
zyphOrderMapper
.
selectOne
(
new
LambdaQueryWrapper
<
ZyphOrder
>().
eq
(
ZyphOrder:
:
getOrderId
,
totalOrderVo
.
getId
()));
totalOrderVo
.
setServiceStatus
(
totalOrderVo
.
setServiceStatus
(
zyphOrder
Mapper
.
selectOne
(
new
LambdaQueryWrapper
<
ZyphOrder
>().
eq
(
ZyphOrder:
:
getOrderId
,
totalOrderVo
.
getId
()))
.
getStatus
()
zyphOrder
.
getStatus
()
);
);
totalOrderVo
.
setHospital
(
hospitalMapper
.
selectById
(
zyphOrder
.
getHid
()).
getName
());
totalOrderVo
.
setVisitor
(
userVsitorMapper
.
selectById
(
zyphOrder
.
getVisitor
()).
getName
());
totalOrderVo
.
setDepartment
(
departmentMapper
.
selectById
(
zyphOrder
.
getDid
()).
getTitle
());
totalOrderVo
.
setPhrq
(
zyphOrder
.
getStartDay
()+
"-"
+
zyphOrder
.
getEndDay
());
totalOrderVo
.
setPhsj
(
zyphOrder
.
getStartTime
()+
"-"
+
zyphOrder
.
getEndTime
());
totalOrderVo
=
BeanUtil
.
toBean
(
zyphOrder
,
TotalOrderVo
.
class
);
}
else
if
(
totalOrderVo
.
getBusinessId
()
==
5
){
//代办买药
}
else
if
(
totalOrderVo
.
getBusinessId
()
==
5
){
//代办买药
DbmyOrder
dbmyOrder
=
dbmyOrderMapper
.
selectOne
(
new
LambdaQueryWrapper
<
DbmyOrder
>().
eq
(
DbmyOrder:
:
getOrderId
,
totalOrderVo
.
getId
()));
totalOrderVo
.
setServiceStatus
(
totalOrderVo
.
setServiceStatus
(
dbmyOrder
Mapper
.
selectOne
(
new
LambdaQueryWrapper
<
DbmyOrder
>().
eq
(
DbmyOrder:
:
getOrderId
,
totalOrderVo
.
getId
()))
.
getStatus
()
dbmyOrder
.
getStatus
()
);
);
}
else
if
(
totalOrderVo
.
getBusinessId
()
==
6
){
//诊前挂号
}
else
if
(
totalOrderVo
.
getBusinessId
()
==
6
){
//诊前挂号
ZqghOrder
zqghOrder
=
zqghOrderMapper
.
selectOne
(
new
LambdaQueryWrapper
<
ZqghOrder
>().
eq
(
ZqghOrder:
:
getOrderId
,
totalOrderVo
.
getId
()));
totalOrderVo
.
setServiceStatus
(
totalOrderVo
.
setServiceStatus
(
zqghOrder
Mapper
.
selectOne
(
new
LambdaQueryWrapper
<
ZqghOrder
>().
eq
(
ZqghOrder:
:
getOrderId
,
totalOrderVo
.
getId
()))
.
getStatus
()
zqghOrder
.
getStatus
()
);
);
totalOrderVo
.
setHospital
(
hospitalMapper
.
selectById
(
zqghOrder
.
getHid
()).
getName
());
totalOrderVo
.
setVisitor
(
doctorMapper
.
selectById
(
zqghOrder
.
getDoctorId
()).
getName
());
totalOrderVo
.
setDepartment
(
departmentMapper
.
selectById
(
zqghOrder
.
getDid
()).
getTitle
());
totalOrderVo
.
setHospital
(
hospitalMapper
.
selectById
(
zqghOrder
.
getHid
()).
getName
());
totalOrderVo
.
setTimeOfAppointment
(
zqghOrder
.
getTimeOfAppointment
());
}
else
if
(
totalOrderVo
.
getBusinessId
()
==
0
){
//商城订单
}
else
if
(
totalOrderVo
.
getBusinessId
()
==
0
){
//商城订单
...
@@ -153,7 +200,7 @@ public class TotalOrderServiceImpl implements ITotalOrderService {
...
@@ -153,7 +200,7 @@ public class TotalOrderServiceImpl implements ITotalOrderService {
totalOrderVos
.
forEach
(
totalOrderVo
->
{
totalOrderVos
.
forEach
(
totalOrderVo
->
{
// 陪诊人员
// 陪诊人员
if
(
totalOrderVo
.
getEmId
()
!=
0
)
{
if
(
totalOrderVo
.
getEmId
()
!=
0
)
{
Optional
.
ofNullable
(
userVsitor
Mapper
.
selectVoById
(
totalOrderVo
.
getEmId
()).
getName
())
Optional
.
ofNullable
(
employees
Mapper
.
selectVoById
(
totalOrderVo
.
getEmId
()).
getName
())
.
ifPresent
(
totalOrderVo:
:
setEmName
);
.
ifPresent
(
totalOrderVo:
:
setEmName
);
}
}
...
@@ -163,7 +210,9 @@ public class TotalOrderServiceImpl implements ITotalOrderService {
...
@@ -163,7 +210,9 @@ public class TotalOrderServiceImpl implements ITotalOrderService {
// 服务封面
// 服务封面
Services
services
=
servicesMapper
.
selectById
(
totalOrderVo
.
getServiceId
());
Services
services
=
servicesMapper
.
selectById
(
totalOrderVo
.
getServiceId
());
if
(
null
!=
services
){
totalOrderVo
.
setCover
(
services
.
getCover
());
totalOrderVo
.
setCover
(
services
.
getCover
());
}
if
(
totalOrderVo
.
getBusinessId
()
==
1
)
{
// 预约陪诊
if
(
totalOrderVo
.
getBusinessId
()
==
1
)
{
// 预约陪诊
...
@@ -215,6 +264,7 @@ public class TotalOrderServiceImpl implements ITotalOrderService {
...
@@ -215,6 +264,7 @@ public class TotalOrderServiceImpl implements ITotalOrderService {
List
<
StoreGoodsTag
>
storeGoodsTags
=
storeGoodsTagMapper
.
selectList
(
new
LambdaQueryWrapper
<
StoreGoodsTag
>().
in
(
StoreGoodsTag:
:
getId
,
getTages
(
storeGoods
.
getTags
())).
select
(
StoreGoodsTag:
:
getTitle
));
List
<
StoreGoodsTag
>
storeGoodsTags
=
storeGoodsTagMapper
.
selectList
(
new
LambdaQueryWrapper
<
StoreGoodsTag
>().
in
(
StoreGoodsTag:
:
getId
,
getTages
(
storeGoods
.
getTags
())).
select
(
StoreGoodsTag:
:
getTitle
));
totalOrderVo
.
setTags
(
storeGoodsTags
);
totalOrderVo
.
setTags
(
storeGoodsTags
);
totalOrderVo
.
setName
(
storeGoods
.
getTitle
());
}
}
});
});
...
@@ -246,6 +296,7 @@ public class TotalOrderServiceImpl implements ITotalOrderService {
...
@@ -246,6 +296,7 @@ public class TotalOrderServiceImpl implements ITotalOrderService {
lqw
.
eq
(
StringUtils
.
isNotBlank
(
bo
.
getEvaluationContent
()),
TotalOrder:
:
getEvaluationContent
,
bo
.
getEvaluationContent
());
lqw
.
eq
(
StringUtils
.
isNotBlank
(
bo
.
getEvaluationContent
()),
TotalOrder:
:
getEvaluationContent
,
bo
.
getEvaluationContent
());
lqw
.
eq
(
StringUtils
.
isNotBlank
(
bo
.
getRefundReason
()),
TotalOrder:
:
getRefundReason
,
bo
.
getRefundReason
());
lqw
.
eq
(
StringUtils
.
isNotBlank
(
bo
.
getRefundReason
()),
TotalOrder:
:
getRefundReason
,
bo
.
getRefundReason
());
lqw
.
eq
(
StringUtils
.
isNotBlank
(
bo
.
getRefundAmount
()),
TotalOrder:
:
getRefundAmount
,
bo
.
getRefundAmount
());
lqw
.
eq
(
StringUtils
.
isNotBlank
(
bo
.
getRefundAmount
()),
TotalOrder:
:
getRefundAmount
,
bo
.
getRefundAmount
());
lqw
.
orderByDesc
(
TotalOrder:
:
getId
);
return
lqw
;
return
lqw
;
}
}
...
@@ -275,17 +326,25 @@ public class TotalOrderServiceImpl implements ITotalOrderService {
...
@@ -275,17 +326,25 @@ public class TotalOrderServiceImpl implements ITotalOrderService {
TotalOrder
totalOrder
=
BeanUtil
.
toBean
(
bo
,
TotalOrder
.
class
);
TotalOrder
totalOrder
=
BeanUtil
.
toBean
(
bo
,
TotalOrder
.
class
);
totalOrder
.
setOrderSn
(
orderSn
);
totalOrder
.
setOrderSn
(
orderSn
);
totalOrder
.
setUid
(
loginUser
.
getUserId
().
intValue
());
totalOrder
.
setUid
(
loginUser
.
getUserId
().
intValue
());
baseMapper
.
insert
(
totalOrder
);
baseMapper
.
insert
(
totalOrder
);
bo
.
setOrderId
(
totalOrder
.
getId
().
intValue
());
bo
.
setOrderId
(
totalOrder
.
getId
().
intValue
());
totalOrderVo
.
setOrderSn
(
totalOrder
.
getId
()+
""
);
totalOrderVo
.
setOrderSn
(
totalOrder
.
getId
()+
""
);
totalOrderVo
.
setPayMoney
(
bo
.
getPayMoney
());
totalOrderVo
.
setPayMoney
(
bo
.
getPayMoney
());
// 计算订单过期时间(当前时间加上24小时)
long
expirationTime
=
System
.
currentTimeMillis
()
+
TimeUnit
.
HOURS
.
toMillis
(
24
);
totalOrder
.
setExpirationTime
(
expirationTime
);
// 未付款的订单延迟24小时自动取消
delayQueue
.
addOrder
(
totalOrder
);
if
(
bo
.
getBusinessId
()
==
1
)
{
// 预约陪诊
if
(
bo
.
getBusinessId
()
==
1
)
{
// 预约陪诊
YypzOrder
yypzOrder
=
BeanUtil
.
toBean
(
bo
,
YypzOrder
.
class
);
YypzOrder
yypzOrder
=
BeanUtil
.
toBean
(
bo
,
YypzOrder
.
class
);
yypzOrder
.
setHid
(
bo
.
getHospitalId
());
yypzOrder
.
setHid
(
bo
.
getHospitalId
());
yypzOrder
.
setDid
(
bo
.
getDepartmentId
());
yypzOrderMapper
.
insert
(
yypzOrder
);
yypzOrderMapper
.
insert
(
yypzOrder
);
}
else
if
(
bo
.
getBusinessId
()
==
2
)
{
// 代办挂号
}
else
if
(
bo
.
getBusinessId
()
==
2
)
{
// 代办挂号
...
@@ -293,6 +352,8 @@ public class TotalOrderServiceImpl implements ITotalOrderService {
...
@@ -293,6 +352,8 @@ public class TotalOrderServiceImpl implements ITotalOrderService {
DbghOrder
dbghOrder
=
BeanUtil
.
toBean
(
bo
,
DbghOrder
.
class
);
DbghOrder
dbghOrder
=
BeanUtil
.
toBean
(
bo
,
DbghOrder
.
class
);
dbghOrder
.
setHid
(
bo
.
getHospitalId
());
dbghOrder
.
setHid
(
bo
.
getHospitalId
());
dbghOrder
.
setDid
(
bo
.
getDepartmentId
());
dbghOrder
.
setDid
(
bo
.
getDepartmentId
());
dbghOrder
.
setVisitor
(
bo
.
getVisitorId
());
dbghOrderMapper
.
insert
(
dbghOrder
);
dbghOrderMapper
.
insert
(
dbghOrder
);
}
else
if
(
bo
.
getBusinessId
()
==
3
)
{
// 代办问诊
}
else
if
(
bo
.
getBusinessId
()
==
3
)
{
// 代办问诊
...
@@ -306,6 +367,7 @@ public class TotalOrderServiceImpl implements ITotalOrderService {
...
@@ -306,6 +367,7 @@ public class TotalOrderServiceImpl implements ITotalOrderService {
ZyphOrder
zyphOrder
=
BeanUtil
.
toBean
(
bo
,
ZyphOrder
.
class
);
ZyphOrder
zyphOrder
=
BeanUtil
.
toBean
(
bo
,
ZyphOrder
.
class
);
zyphOrder
.
setDid
(
bo
.
getDepartmentId
());
zyphOrder
.
setDid
(
bo
.
getDepartmentId
());
zyphOrder
.
setHid
(
bo
.
getHospitalId
());
zyphOrder
.
setVisitor
(
bo
.
getVisitorId
());
zyphOrder
.
setVisitor
(
bo
.
getVisitorId
());
zyphOrderMapper
.
insert
(
zyphOrder
);
zyphOrderMapper
.
insert
(
zyphOrder
);
...
@@ -317,6 +379,10 @@ public class TotalOrderServiceImpl implements ITotalOrderService {
...
@@ -317,6 +379,10 @@ public class TotalOrderServiceImpl implements ITotalOrderService {
}
else
if
(
bo
.
getBusinessId
()
==
6
)
{
// 诊前挂号
}
else
if
(
bo
.
getBusinessId
()
==
6
)
{
// 诊前挂号
ZqghOrder
zqghOrder
=
BeanUtil
.
toBean
(
bo
,
ZqghOrder
.
class
);
ZqghOrder
zqghOrder
=
BeanUtil
.
toBean
(
bo
,
ZqghOrder
.
class
);
zqghOrder
.
setHid
(
bo
.
getHospitalId
());
zqghOrder
.
setDid
(
bo
.
getDepartmentId
());
zqghOrder
.
setDoctorId
(
bo
.
getDoctorId
());
zqghOrderMapper
.
insert
(
zqghOrder
);
zqghOrderMapper
.
insert
(
zqghOrder
);
}
else
if
(
bo
.
getBusinessId
()
==
0
)
{
// 商城订单
}
else
if
(
bo
.
getBusinessId
()
==
0
)
{
// 商城订单
...
@@ -351,6 +417,15 @@ public class TotalOrderServiceImpl implements ITotalOrderService {
...
@@ -351,6 +417,15 @@ public class TotalOrderServiceImpl implements ITotalOrderService {
}
}
@Override
@Override
public
Boolean
finishOrder
(
TotalOrderBo
bo
)
{
TotalOrder
totalOrder
=
BeanUtil
.
toBean
(
bo
,
TotalOrder
.
class
);
totalOrder
.
setStatus
(
2
);
return
baseMapper
.
updateById
(
totalOrder
)
>
1
;
}
@Override
public
Object
payOrder
(
TotalOrderBo
bo
)
{
public
Object
payOrder
(
TotalOrderBo
bo
)
{
LoginUser
loginUser
=
LoginHelper
.
getLoginUser
();
LoginUser
loginUser
=
LoginHelper
.
getLoginUser
();
TotalOrder
totalOrder
=
baseMapper
.
selectById
(
Integer
.
parseInt
(
bo
.
getOrderSn
()));
TotalOrder
totalOrder
=
baseMapper
.
selectById
(
Integer
.
parseInt
(
bo
.
getOrderSn
()));
...
@@ -376,6 +451,42 @@ public class TotalOrderServiceImpl implements ITotalOrderService {
...
@@ -376,6 +451,42 @@ public class TotalOrderServiceImpl implements ITotalOrderService {
}
}
@Override
@Override
public
boolean
orderPayCallBack
(
WxPayOrderNotifyResult
result
)
{
String
orderNum
=
result
.
getOutTradeNo
();
TotalOrder
totalOrder
=
baseMapper
.
selectOne
(
new
LambdaQueryWrapper
<
TotalOrder
>().
eq
(
TotalOrder:
:
getOrderSn
,
orderNum
));
if
(
totalOrder
.
getStatus
()
==
0
){
//修改订单状态为已支付
totalOrder
.
setStatus
(
1
);
baseMapper
.
updateById
(
totalOrder
);
//添加支付记录
PaymentRecord
paymentRecord
=
new
PaymentRecord
();
paymentRecord
.
setPayType
(
1
);
paymentRecord
.
setOrderId
(
totalOrder
.
getId
().
intValue
());
paymentRecord
.
setMoney
(
totalOrder
.
getPayMoney
());
paymentRecord
.
setUid
(
totalOrder
.
getUid
());
paymentRecordMapper
.
insert
(
paymentRecord
);
return
true
;
}
return
false
;
}
@Override
public
boolean
orderRefundCallBack
(
WxPayRefundNotifyResult
wxPayRefundNotifyResult
)
{
WxPayRefundNotifyResult
.
ReqInfo
reqInfo
=
wxPayRefundNotifyResult
.
getReqInfo
();
//订单号
String
outTradeNo
=
reqInfo
.
getOutTradeNo
();
TotalOrder
totalOrder
=
baseMapper
.
selectOne
(
new
LambdaQueryWrapper
<
TotalOrder
>().
eq
(
TotalOrder:
:
getOrderSn
,
outTradeNo
));
totalOrder
.
setStatus
(
TotalOrderStatus
.
REFUND
.
getCode
());
if
(
baseMapper
.
updateById
(
totalOrder
)
>
0
){
return
true
;
}
return
false
;
}
@Override
public
Boolean
refundOrder
(
TotalOrderBo
bo
)
{
public
Boolean
refundOrder
(
TotalOrderBo
bo
)
{
TotalOrder
totalOrder
=
baseMapper
.
selectById
(
bo
.
getId
());
TotalOrder
totalOrder
=
baseMapper
.
selectById
(
bo
.
getId
());
totalOrder
.
setRefundAmount
(
totalOrder
.
getPayMoney
());
totalOrder
.
setRefundAmount
(
totalOrder
.
getPayMoney
());
...
...
pz-system/src/main/java/com/pz/system/service/impl/ZqghOrderServiceImpl.java
View file @
d24f12b8
...
@@ -19,10 +19,7 @@ import com.pz.system.mapper.ZqghOrderMapper;
...
@@ -19,10 +19,7 @@ import com.pz.system.mapper.ZqghOrderMapper;
import
com.pz.system.service.IZqghOrderService
;
import
com.pz.system.service.IZqghOrderService
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.util.List
;
import
java.util.*
;
import
java.util.Map
;
import
java.util.Collection
;
import
java.util.Objects
;
/**
/**
* 诊前挂号订单Service业务层处理
* 诊前挂号订单Service业务层处理
...
@@ -62,18 +59,52 @@ public class ZqghOrderServiceImpl implements IZqghOrderService, ISonOrderService
...
@@ -62,18 +59,52 @@ public class ZqghOrderServiceImpl implements IZqghOrderService, ISonOrderService
return
baseMapper
.
selectVoList
(
lqw
);
return
baseMapper
.
selectVoList
(
lqw
);
}
}
@Override
public
List
<
ZqghOrderVo
>
queryAppList
(
ZqghOrderBo
bo
)
{
LambdaQueryWrapper
<
ZqghOrder
>
lqw
=
buildQueryWrapper
(
bo
);
List
<
ZqghOrderVo
>
zqghOrderVos
=
baseMapper
.
selectVoList
(
lqw
);
//初始化预约集合
Map
<
String
,
Integer
>
countMap
=
new
HashMap
<>();
countMap
.
put
(
bo
.
getTimeOfAppointmentArr
().
get
(
0
),
0
);
countMap
.
put
(
bo
.
getTimeOfAppointmentArr
().
get
(
1
),
0
);
countMap
.
put
(
bo
.
getTimeOfAppointmentArr
().
get
(
2
),
0
);
countMap
.
put
(
bo
.
getTimeOfAppointmentArr
().
get
(
3
),
0
);
countMap
.
put
(
bo
.
getTimeOfAppointmentArr
().
get
(
4
),
0
);
countMap
.
put
(
bo
.
getTimeOfAppointmentArr
().
get
(
5
),
0
);
//查询订单医生预约订单
for
(
ZqghOrderVo
obj
:
zqghOrderVos
)
{
String
propertyValue
=
obj
.
getTimeOfAppointment
();
countMap
.
put
(
propertyValue
,
countMap
.
getOrDefault
(
propertyValue
,
0
)
+
1
);
}
List
<
ZqghOrderVo
>
zqghOrderVos1
=
new
ArrayList
<>();
// 遍历 Map
for
(
Map
.
Entry
<
String
,
Integer
>
entry
:
countMap
.
entrySet
())
{
ZqghOrderVo
zqghOrderVo
=
new
ZqghOrderVo
();
zqghOrderVo
.
setTimeOfAppointment
(
entry
.
getKey
());
zqghOrderVo
.
setNum
(
entry
.
getValue
());
zqghOrderVos1
.
add
(
zqghOrderVo
);
}
return
zqghOrderVos1
;
}
private
LambdaQueryWrapper
<
ZqghOrder
>
buildQueryWrapper
(
ZqghOrderBo
bo
)
{
private
LambdaQueryWrapper
<
ZqghOrder
>
buildQueryWrapper
(
ZqghOrderBo
bo
)
{
Map
<
String
,
Object
>
params
=
bo
.
getParams
();
Map
<
String
,
Object
>
params
=
bo
.
getParams
();
LambdaQueryWrapper
<
ZqghOrder
>
lqw
=
Wrappers
.
lambdaQuery
();
LambdaQueryWrapper
<
ZqghOrder
>
lqw
=
Wrappers
.
lambdaQuery
();
lqw
.
eq
(
bo
.
getOrderId
()
!=
null
,
ZqghOrder:
:
getOrderId
,
bo
.
getOrderId
());
lqw
.
eq
(
bo
.
getOrderId
()
!=
null
,
ZqghOrder:
:
getOrderId
,
bo
.
getOrderId
());
lqw
.
eq
(
bo
.
getHid
()
!=
null
,
ZqghOrder:
:
getHid
,
bo
.
getHid
());
lqw
.
eq
(
bo
.
getHid
()
!=
null
,
ZqghOrder:
:
getHid
,
bo
.
getHid
());
lqw
.
eq
(
bo
.
getDid
()
!=
null
,
ZqghOrder:
:
getDid
,
bo
.
getDid
());
lqw
.
eq
(
bo
.
getDid
()
!=
null
,
ZqghOrder:
:
getDid
,
bo
.
getDid
());
lqw
.
eq
(
bo
.
getDoctorId
()
!=
null
,
ZqghOrder:
:
getDid
,
bo
.
getDoctorId
());
lqw
.
eq
(
bo
.
getDoctorId
()
!=
null
,
ZqghOrder:
:
getDoctorId
,
bo
.
getDoctorId
());
lqw
.
eq
(
bo
.
getDoctorId
()
!=
null
,
ZqghOrder:
:
getDoctorId
,
bo
.
getDoctorId
());
lqw
.
eq
(
StringUtils
.
isNotBlank
(
bo
.
getTimeOfAppointment
()),
ZqghOrder:
:
getTimeOfAppointment
,
bo
.
getTimeOfAppointment
());
lqw
.
eq
(
StringUtils
.
isNotBlank
(
bo
.
getTimeOfAppointment
()),
ZqghOrder:
:
getTimeOfAppointment
,
bo
.
getTimeOfAppointment
());
lqw
.
eq
(
bo
.
getStatus
()
!=
null
,
ZqghOrder:
:
getStatus
,
bo
.
getStatus
());
lqw
.
eq
(
bo
.
getStatus
()
!=
null
,
ZqghOrder:
:
getStatus
,
bo
.
getStatus
());
lqw
.
eq
(
bo
.
getOverTime
()
!=
null
,
ZqghOrder:
:
getOverTime
,
bo
.
getOverTime
());
lqw
.
eq
(
bo
.
getOverTime
()
!=
null
,
ZqghOrder:
:
getOverTime
,
bo
.
getOverTime
());
lqw
.
eq
(
StringUtils
.
isNotBlank
(
bo
.
getVoucher
()),
ZqghOrder:
:
getVoucher
,
bo
.
getVoucher
());
lqw
.
eq
(
StringUtils
.
isNotBlank
(
bo
.
getVoucher
()),
ZqghOrder:
:
getVoucher
,
bo
.
getVoucher
());
lqw
.
eq
(
bo
.
getIsCal
()
!=
null
,
ZqghOrder:
:
getIsCal
,
bo
.
getIsCal
());
lqw
.
eq
(
bo
.
getIsCal
()
!=
null
,
ZqghOrder:
:
getIsCal
,
bo
.
getIsCal
());
lqw
.
in
(
bo
.
getTimeOfAppointmentArr
()
!=
null
,
ZqghOrder:
:
getTimeOfAppointment
,
bo
.
getTimeOfAppointmentArr
());
return
lqw
;
return
lqw
;
}
}
...
...
pz-system/src/main/resources/mapper/system/CityMapper.xml
0 → 100644
View file @
d24f12b8
<?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.pz.system.mapper.CityMapper"
>
<select
id=
"selectAppCity"
resultType=
"com.pz.system.domain.vo.CityVo"
>
SELECT * FROM city GROUP BY sy
</select>
</mapper>
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