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
d1a52aea
Commit
d1a52aea
authored
Sep 14, 2023
by
Wangmin
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/dev' into dev
parents
ed6444ac
d8659897
Show whitespace changes
Inline
Side-by-side
Showing
66 changed files
with
1080 additions
and
680 deletions
+1080
-680
pom.xml
+9
-1
pz-accompany/src/main/java/com/pz/accompany/AccompanyEmployeesAccompanyController.java
+1
-1
pz-accompany/src/main/java/com/pz/accompany/AccompanyEmployeesController.java
+55
-0
pz-accompany/src/main/java/com/pz/accompany/AccompanyEmployeesIncomeController.java
+29
-1
pz-admin/pom.xml
+5
-0
pz-admin/src/main/java/com/pz/web/controller/system/SessionListController.java
+41
-36
pz-admin/src/main/java/com/pz/web/controller/system/WebSocketOneToOneController.java
+240
-0
pz-admin/src/main/java/com/pz/web/controller/websocket/SpringContextUtil.java
+1
-1
pz-admin/src/main/java/com/pz/web/controller/websocket/WebSocketData.java
+17
-0
pz-admin/src/main/resources/application.yml
+1
-0
pz-applet/src/main/java/com/pz/applet/AppletDepartmentController.java
+1
-1
pz-applet/src/main/java/com/pz/applet/AppletDoctorController.java
+50
-0
pz-applet/src/main/java/com/pz/applet/AppletStoreApplyController.java
+7
-3
pz-applet/src/main/java/com/pz/applet/AppletStoreGoodsController.java
+2
-2
pz-applet/src/main/java/com/pz/applet/AppletSysUserController.java
+3
-2
pz-applet/src/main/java/com/pz/applet/AppletTotalOrderController.java
+47
-0
pz-chat/pom.xml
+0
-39
pz-chat/src/main/java/com/pz/chat/controller/ChatController.java
+0
-154
pz-chat/src/main/java/com/pz/chat/util/CurPool.java
+0
-21
pz-common/pom.xml
+11
-0
pz-common/src/main/java/com/pz/common/JsonUtils.java
+1
-1
pz-common/src/main/java/com/pz/common/config/WebSocketConfig.java
+1
-1
pz-common/src/main/java/com/pz/common/core/domain/entity/SysUser.java
+0
-4
pz-common/src/main/java/com/pz/common/enums/UserType.java
+2
-2
pz-common/src/main/java/com/pz/common/utils/DateUtils.java
+18
-0
pz-system/src/main/java/com/pz/merchant/domain/Employees.java
+10
-0
pz-system/src/main/java/com/pz/merchant/domain/bo/EmployeesBo.java
+0
-18
pz-system/src/main/java/com/pz/merchant/domain/vo/EmployeesVo.java
+9
-1
pz-system/src/main/java/com/pz/merchant/service/impl/EmployeesServiceImpl.java
+26
-4
pz-system/src/main/java/com/pz/system/domain/Income.java
+3
-1
pz-system/src/main/java/com/pz/system/domain/Message.java
+71
-0
pz-system/src/main/java/com/pz/system/domain/MsgInfo.java
+0
-52
pz-system/src/main/java/com/pz/system/domain/SessionList.java
+1
-6
pz-system/src/main/java/com/pz/system/domain/TotalOrder.java
+2
-2
pz-system/src/main/java/com/pz/system/domain/bo/CreateOrderBo.java
+13
-0
pz-system/src/main/java/com/pz/system/domain/bo/IncomeBo.java
+2
-1
pz-system/src/main/java/com/pz/system/domain/bo/MessageBo.java
+71
-0
pz-system/src/main/java/com/pz/system/domain/bo/MsgInfoBo.java
+0
-56
pz-system/src/main/java/com/pz/system/domain/bo/TotalOrderBo.java
+2
-0
pz-system/src/main/java/com/pz/system/domain/vo/IncomeVo.java
+5
-2
pz-system/src/main/java/com/pz/system/domain/vo/MessageVo.java
+60
-0
pz-system/src/main/java/com/pz/system/domain/vo/MsgInfoVo.java
+0
-66
pz-system/src/main/java/com/pz/system/domain/vo/TotalOrderVo.java
+5
-0
pz-system/src/main/java/com/pz/system/mapper/InformationMapper.java
+2
-0
pz-system/src/main/java/com/pz/system/mapper/MessageMapper.java
+15
-0
pz-system/src/main/java/com/pz/system/mapper/MsgInfoMapper.java
+0
-15
pz-system/src/main/java/com/pz/system/service/ICityService.java
+7
-0
pz-system/src/main/java/com/pz/system/service/IDepartmentService.java
+1
-1
pz-system/src/main/java/com/pz/system/service/IMessageService.java
+4
-0
pz-system/src/main/java/com/pz/system/service/IMsgInfoService.java
+0
-49
pz-system/src/main/java/com/pz/system/service/IPayService.java
+2
-1
pz-system/src/main/java/com/pz/system/service/IStoreApplyService.java
+6
-0
pz-system/src/main/java/com/pz/system/service/ITotalOrderService.java
+7
-0
pz-system/src/main/java/com/pz/system/service/SysLoginService.java
+1
-1
pz-system/src/main/java/com/pz/system/service/impl/CityServiceImpl.java
+7
-0
pz-system/src/main/java/com/pz/system/service/impl/DepartmentServiceImpl.java
+30
-6
pz-system/src/main/java/com/pz/system/service/impl/MessageServiceImpl.java
+31
-0
pz-system/src/main/java/com/pz/system/service/impl/MsgInfoServiceImpl.java
+0
-114
pz-system/src/main/java/com/pz/system/service/impl/PayServiceImpl.java
+2
-2
pz-system/src/main/java/com/pz/system/service/impl/SessionListServiceImpl.java
+0
-1
pz-system/src/main/java/com/pz/system/service/impl/StoreApplyServiceImpl.java
+7
-0
pz-system/src/main/java/com/pz/system/service/impl/StoreGoodsServiceImpl.java
+31
-1
pz-system/src/main/java/com/pz/system/service/impl/TotalOrderServiceImpl.java
+99
-5
pz-system/src/main/resources/mapper/merchant/EmployeesMapper.xml
+4
-4
pz-system/src/main/resources/mapper/system/SessionListMapper.xml
+0
-1
pz-system/src/main/resources/mapper/system/SysUserMapper.xml
+2
-0
No files found.
pom.xml
View file @
d1a52aea
...
...
@@ -35,6 +35,8 @@
<xxl-job.version>
2.4.0
</xxl-job.version>
<lombok.version>
1.18.26
</lombok.version>
<bouncycastle.version>
1.72
</bouncycastle.version>
<joda.time.version>
2.9.9
</joda.time.version>
<!-- 离线IP地址定位库 -->
<ip2region.version>
2.7.0
</ip2region.version>
...
...
@@ -273,6 +275,12 @@
<version>
${snakeyaml.version}
</version>
</dependency>
<dependency>
<groupId>
joda-time
</groupId>
<artifactId>
joda-time
</artifactId>
<version>
${joda.time.version}
</version>
</dependency>
<!-- 加密包引入 -->
<dependency>
<groupId>
org.bouncycastle
</groupId>
...
...
@@ -342,6 +350,7 @@
<version>
${PeiZhen-Java.version}
</version>
</dependency>
</dependencies>
</dependencyManagement>
...
...
@@ -356,7 +365,6 @@
<module>
pz-accompany
</module>
<module>
pz-merchant
</module>
<module>
pz-applet
</module>
<module>
pz-chat
</module>
</modules>
<packaging>
pom
</packaging>
...
...
pz-accompany/src/main/java/com/pz/accompany/EmployeesAccompanyController.java
→
pz-accompany/src/main/java/com/pz/accompany/
Accompany
EmployeesAccompanyController.java
View file @
d1a52aea
...
...
@@ -31,7 +31,7 @@ import javax.validation.constraints.NotNull;
@RestController
@RequestMapping
(
"app/accompany"
)
@SaIgnore
public
class
EmployeesAccompanyController
extends
BaseController
{
public
class
Accompany
EmployeesAccompanyController
extends
BaseController
{
private
final
ITotalOrderService
totalOrderService
;
...
...
pz-accompany/src/main/java/com/pz/accompany/AccompanyEmployeesController.java
0 → 100644
View file @
d1a52aea
package
com
.
pz
.
accompany
;
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.EditGroup
;
import
com.pz.merchant.domain.bo.EmployeesBo
;
import
com.pz.merchant.domain.bo.EmployeesListBo
;
import
com.pz.merchant.domain.bo.OrderBo
;
import
com.pz.merchant.domain.bo.SetEmployeeWorkingHourBo
;
import
com.pz.merchant.domain.vo.EmployeesListVo
;
import
com.pz.merchant.domain.vo.EmployeesVo
;
import
com.pz.merchant.domain.vo.OrderInfoVO
;
import
com.pz.merchant.domain.vo.TodayOrderListVo
;
import
com.pz.merchant.service.IEmployeesService
;
import
lombok.RequiredArgsConstructor
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.*
;
import
javax.validation.constraints.NotNull
;
/**
* 陪诊员信息
*
* @author WangMin
* @date 2023-09-11
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping
(
"/accompany/employees"
)
public
class
AccompanyEmployeesController
extends
BaseController
{
private
final
IEmployeesService
employeesService
;
/**
* 修改陪诊员个人信息
*
* @param bo
* @return
*/
@PutMapping
(
"/updateEmployees"
)
public
R
<
Boolean
>
updateEmployees
(
EmployeesBo
bo
)
{
return
R
.
ok
(
employeesService
.
updateByBo
(
bo
));
}
/**
* 陪诊员个人信息
*/
@GetMapping
(
"/getEmployeesInfo"
)
public
R
<
EmployeesVo
>
getEmployeesInfo
()
{
return
R
.
ok
(
employeesService
.
queryByUserId
(
getUserId
()));
}
}
pz-accompany/src/main/java/com/pz/accompany/EmployeesIncomeController.java
→
pz-accompany/src/main/java/com/pz/accompany/
Accompany
EmployeesIncomeController.java
View file @
d1a52aea
...
...
@@ -4,6 +4,8 @@ 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.utils.StringUtils
;
import
com.pz.merchant.domain.bo.EmployeesBo
;
import
com.pz.merchant.domain.vo.EmployeesVo
;
import
com.pz.merchant.service.IEmployeesService
;
import
com.pz.system.domain.bo.IncomeBo
;
...
...
@@ -12,9 +14,14 @@ import com.pz.system.service.IIncomeService;
import
lombok.RequiredArgsConstructor
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.PutMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
javax.sql.rowset.serial.SerialException
;
import
java.math.BigDecimal
;
import
java.util.Optional
;
/**
* 陪诊员-财务收益
*
...
...
@@ -25,7 +32,7 @@ import org.springframework.web.bind.annotation.RestController;
@RequiredArgsConstructor
@RestController
@RequestMapping
(
"/accompany/employees"
)
public
class
EmployeesIncomeController
extends
BaseController
{
public
class
Accompany
EmployeesIncomeController
extends
BaseController
{
private
final
IEmployeesService
iEmployeesService
;
...
...
@@ -51,4 +58,25 @@ public class EmployeesIncomeController extends BaseController {
}
/**
* 陪诊员提现
*
* @param bo
* @return
*/
@PutMapping
(
"/withdrawEmployees"
)
public
R
<
Boolean
>
withdrawEmployees
(
IncomeBo
bo
)
{
Optional
.
ofNullable
(
iEmployeesService
.
queryByUserId
(
getUserId
()))
.
ifPresent
(
employeesVo
->
{
//判断提现金额是否大于余额
if
(
bo
.
getAmount
().
compareTo
(
StringUtils
.
isNotBlank
(
employeesVo
.
getBalance
())
?
new
BigDecimal
(
employeesVo
.
getBalance
())
:
new
BigDecimal
(
"0.00"
))
>
0
)
{
try
{
throw
new
SerialException
(
"余额不足以本次提现"
);
}
catch
(
SerialException
e
)
{
throw
new
RuntimeException
(
e
);
}
}
});
return
R
.
ok
(
true
);
}
}
pz-admin/pom.xml
View file @
d1a52aea
...
...
@@ -52,6 +52,11 @@
</dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-websocket
</artifactId>
</dependency>
<dependency>
<groupId>
com.pz
</groupId>
<artifactId>
pz-system
</artifactId>
</dependency>
...
...
pz-
chat/src/main/java/com/pz/chat/controller
/SessionListController.java
→
pz-
admin/src/main/java/com/pz/web/controller/system
/SessionListController.java
View file @
d1a52aea
package
com
.
pz
.
chat
.
controller
;
import
java.util.List
;
import
java.util.Arrays
;
import
com.pz.common.core.domain.entity.SysUser
;
import
com.pz.system.domain.SessionList
;
import
com.pz.system.mapper.SessionListMapper
;
import
com.pz.system.mapper.SysUserMapper
;
import
lombok.RequiredArgsConstructor
;
import
javax.servlet.http.HttpServletResponse
;
import
javax.validation.constraints.*
;
package
com
.
pz
.
web
.
controller
.
system
;
import
cn.dev33.satoken.annotation.SaCheckPermission
;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.validation.annotation.Validated
;
import
com.pz.common.annotation.RepeatSubmit
;
import
cn.dev33.satoken.annotation.SaIgnore
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
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.domain.entity.SysUser
;
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.vo.SessionListVo
;
import
com.pz.system.domain.SessionList
;
import
com.pz.system.domain.bo.SessionListBo
;
import
com.pz.system.service.ISessionListService
;
import
com.pz.common.core.page.TableDataInfo
;
import
com.pz.system.domain.vo.SessionListVo
;
import
com.pz.system.mapper.SessionListMapper
;
import
com.pz.system.mapper.SysUserMapper
;
import
lombok.RequiredArgsConstructor
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.*
;
import
javax.validation.constraints.NotEmpty
;
/**
* 会话列
...
...
@@ -38,37 +33,47 @@ import com.pz.common.core.page.TableDataInfo;
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping
(
"/system/
list
"
)
@RequestMapping
(
"/system/
session
"
)
public
class
SessionListController
extends
BaseController
{
private
final
SessionListMapper
sessionListMapper
;
private
final
SysUserMapper
sysUserMapper
;
/**
* 查询会话列列表
*/
@GetMapping
(
"/list"
)
public
TableDataInfo
<
SessionListVo
>
list
(
SessionListBo
bo
,
PageQuery
pageQuery
)
{
return
sessionListMapper
.
selectVoPage
(
pageQuery
.
build
(),
Wrappers
.<
SessionList
>
lambdaQuery
().
eq
(
SessionList:
:
getUserId
,
getUserId
()));
}
/**
* 创建会话
*/
@SaCheckPermission
(
"system:list:add"
)
@Log
(
title
=
"会话列"
,
businessType
=
BusinessType
.
INSERT
)
@RepeatSubmit
()
@PostMapping
()
@PostMapping
(
"/createSession"
)
@SaIgnore
@Transactional
public
R
<
Void
>
add
(
@Validated
(
AddGroup
.
class
)
@RequestBody
SessionListBo
bo
)
{
// 创建会话列表对象
SessionList
sessionList
=
new
SessionList
();
sessionList
.
setUserId
(
bo
.
getUserId
());
sessionList
.
setUnReadCount
(
0L
);
sessionList
.
setListName
(
bo
.
getToUserName
());
sessionList
.
setToUserId
(
bo
.
getToUserId
());
// 插入会话列表记录
sessionListMapper
.
insert
(
sessionList
);
// 判断对方和我建立会话没有? 没有也要建立
Integer
SessionId
=
sessionListMapper
.
selectIdByUser
(
bo
.
getToUserId
(),
bo
.
getUserId
());
if
(
SessionId
==
null
||
SessionId
<=
0
)
{
SysUser
user
=
sysUserMapper
.
selectUserById
(
bo
.
getUserId
());
sessionList
.
setUserId
(
bo
.
getToUserId
());
sessionList
.
setToUserId
(
bo
.
getUserId
());
sessionList
.
setListName
(
user
.
getNickName
());
sessionListMapper
.
insert
(
sessionList
);
// 判断对方和我建立会话没有,如果没有则建立
boolean
hasSession
=
sessionListMapper
.
selectIdByUser
(
bo
.
getToUserId
(),
bo
.
getUserId
())
>
0
;
if
(!
hasSession
)
{
// 新建会话列表对象
SessionList
newSessionList
=
new
SessionList
();
newSessionList
.
setUserId
(
bo
.
getToUserId
());
newSessionList
.
setToUserId
(
bo
.
getUserId
());
// 插入新的会话列表记录
sessionListMapper
.
insert
(
newSessionList
);
}
return
R
.
ok
();
}
...
...
@@ -79,11 +84,11 @@ public class SessionListController extends BaseController {
*
* @param id 主键
*/
@SaCheckPermission
(
"system:list:remove"
)
@Log
(
title
=
"会话列"
,
businessType
=
BusinessType
.
DELETE
)
@DeleteMapping
(
"/{id}"
)
public
R
<
Void
>
remove
(
@NotEmpty
(
message
=
"主键不能为空"
)
@PathVariable
Long
id
)
{
return
toAjax
(
sessionListMapper
.
deleteById
(
id
));
}
}
pz-admin/src/main/java/com/pz/web/controller/system/WebSocketOneToOneController.java
0 → 100644
View file @
d1a52aea
package
com
.
pz
.
web
.
controller
.
system
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper
;
import
com.baomidou.mybatisplus.core.toolkit.StringUtils
;
import
com.pz.common.core.domain.entity.SysUser
;
import
com.pz.common.utils.DateUtils
;
import
com.pz.system.domain.Message
;
import
com.pz.system.domain.SessionList
;
import
com.pz.system.mapper.MessageMapper
;
import
com.pz.system.mapper.SessionListMapper
;
import
com.pz.system.mapper.SysUserMapper
;
import
com.pz.system.service.ISysUserService
;
import
com.pz.web.controller.websocket.SpringContextUtil
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.stereotype.Component
;
import
org.springframework.web.bind.annotation.RestController
;
import
javax.annotation.Resource
;
import
javax.websocket.*
;
import
javax.websocket.server.PathParam
;
import
javax.websocket.server.ServerEndpoint
;
import
java.io.IOException
;
import
java.util.ArrayList
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.concurrent.ConcurrentHashMap
;
/**
* @author lisw
* @program ly-project
* @description 聊天
* @createDate 2021-05-30 11:32:39
* <p>
* 描述:
* 一对一聊天
* @ServerEndpoint 注解是一个类层次的注解,它的功能主要是将目前的类定义成一个websocket服务器端,
* 注解的值将被用于监听用户连接的终端访问URL地址,客户端可以通过这个URL来连接到WebSocket服务器端
*/
@Component
@Slf4j
@ServerEndpoint
(
"/webSocketOneToOne/{sendId}/{roomId}"
)
public
class
WebSocketOneToOneController
{
// 静态变量,用来记录当前在线连接数。应该把它设计成线程安全的。
private
static
int
onlineCount
;
//实现服务端与单一客户端通信的话,可以使用Map来存放,其中Key为用户标识
private
static
final
Map
<
Long
,
WebSocketOneToOneController
>
connections
=
new
ConcurrentHashMap
<>();
public
static
Map
<
Long
,
List
<
Object
>>
sessionPool
=
new
ConcurrentHashMap
<>();
// 与某个客户端的连接会话,需要通过它来给客户端发送数据
private
Session
session
;
private
Long
sendId
;
private
String
roomId
;
@Resource
private
MessageMapper
messageMapper
;
@Resource
private
SessionListMapper
sessionListMapper
;
/**
* 连接建立成功调用的方法
*
* @param session 可选的参数。session为与某个客户端的连接会话,需要通过它来给客户端发送数据
*/
@OnOpen
public
void
onOpen
(
@PathParam
(
"sendId"
)
Long
sendId
,
@PathParam
(
"roomId"
)
String
roomId
,
Session
session
)
{
this
.
session
=
session
;
this
.
sendId
=
sendId
;
//用户标识
this
.
roomId
=
roomId
;
//会话标识
List
<
Object
>
list
=
new
ArrayList
<>();
list
.
add
(
roomId
);
list
.
add
(
session
);
connections
.
put
(
sendId
,
this
);
//添加到map中
sessionPool
.
put
(
sendId
,
list
);
//创建会话
addOnlineCount
();
// 在线数加
log
.
info
(
"sendId:"
+
sendId
+
"roomId:"
+
roomId
);
System
.
out
.
println
(
this
.
session
);
System
.
out
.
println
(
"有新连接加入!新用户:"
+
sendId
+
",当前在线人数为"
+
getOnlineCount
());
}
/**
* 连接关闭调用的方法
*/
@OnClose
public
void
onClose
()
{
connections
.
remove
(
sendId
);
// 从map中移除
subOnlineCount
();
// 在线数减
System
.
out
.
println
(
"有一连接关闭!当前在线人数为"
+
getOnlineCount
());
}
/**
* 收到客户端消息后调用的方法
*
* @param message 客户端发送过来的消息
* @param session 可选的参数
*/
@OnMessage
public
void
onMessage
(
String
message
,
Session
session
)
{
String
sessionId
=
this
.
session
.
getPathParameters
().
get
(
"roomId"
);
System
.
out
.
println
(
"来自客户端的消息:"
+
message
);
JSONObject
json
=
JSON
.
parseObject
(
message
);
String
msg
=
json
.
getString
(
"content"
);
// 需要发送的信息
String
requestId
=
json
.
getString
(
"requestId"
);
int
msgType
=
json
.
getIntValue
(
"messageType"
);
String
lastMessageTime
=
json
.
getString
(
"lastMessageTime"
);
// 使用类型推断,如果不存在键"lastMessageTime",则为null
Long
receiveId
=
json
.
getLong
(
"receiveId"
);
// 发送对象的用户标识(接收者)
// 发送消息
send
(
msg
,
sendId
,
receiveId
,
roomId
,
msgType
,
requestId
,
lastMessageTime
,
sessionId
);
}
/**
* 发生错误时调用
*
* @param session
* @param error
*/
@OnError
public
void
onError
(
Session
session
,
Throwable
error
)
{
System
.
out
.
println
(
"发生错误"
);
error
.
printStackTrace
();
}
private
void
sendMessage
(
SessionList
sessionList
,
Message
message
)
{
int
res
=
messageMapper
.
insert
(
message
);
if
(
res
==
1
)
{
message
.
setStatus
(
"-1"
);
}
WebSocketOneToOneController
con
=
connections
.
get
(
message
.
getReceiver
());
if
(
con
!=
null
&&
roomId
.
equals
(
con
.
roomId
))
{
try
{
con
.
session
.
getBasicRemote
().
sendText
(
JSON
.
toJSONString
(
message
));
message
.
setIsRead
(
"1"
);
messageMapper
.
updateById
(
message
);
}
catch
(
IOException
e
)
{
// 处理发送消息异常
e
.
printStackTrace
();
}
}
WebSocketOneToOneController
confrom
=
connections
.
get
(
message
.
getSender
());
if
(
confrom
!=
null
&&
roomId
.
equals
(
confrom
.
roomId
))
{
try
{
confrom
.
session
.
getBasicRemote
().
sendText
(
JSON
.
toJSONString
(
message
));
}
catch
(
IOException
e
)
{
// 处理发送消息异常
e
.
printStackTrace
();
}
}
}
/**
* @param msg 消息内容
* @param sendId 发送人
* @param receiveId 接收人
* @param roomId 房间ID
* @param msgType 消息类型
* @param requestId 消息请求ID
* @param lastMessageTime 最后一次的消息时间
*/
public
void
send
(
String
msg
,
Long
sendId
,
Long
receiveId
,
String
roomId
,
int
msgType
,
String
requestId
,
String
lastMessageTime
,
String
sessionId
)
{
Message
message
=
new
Message
();
message
.
setContent
(
msg
);
Date
now
=
new
Date
();
message
.
setReceiver
(
receiveId
);
message
.
setSender
(
sendId
);
message
.
setContentType
(
msgType
);
message
.
setIsRead
(
"0"
);
message
.
setRequestId
(
requestId
);
message
.
setType
(
0
);
if
(
StringUtils
.
isNotBlank
(
lastMessageTime
))
{
Date
lastTime
=
DateUtils
.
stringToDate
(
lastMessageTime
,
"yyyy-MM-dd HH:mm"
);
long
minute
=
(
now
.
getTime
()
-
lastTime
.
getTime
())
/
1000
/
60
;
log
.
info
(
"此二人聊天,距离上一次聊天时间相差分钟数:"
+
minute
);
if
(
minute
>
5
)
{
message
.
setType
(
1
);
}
}
if
(
messageMapper
==
null
)
{
this
.
messageMapper
=
(
MessageMapper
)
SpringContextUtil
.
getBean
(
"messageMapper"
);
}
if
(
sessionListMapper
==
null
)
{
this
.
sessionListMapper
=
(
SessionListMapper
)
SpringContextUtil
.
getBean
(
"sessionListMapper"
);
}
//获取本次会话信息
SessionList
sessionList
=
sessionListMapper
.
selectById
(
Integer
.
parseInt
(
sessionId
));
List
<
Object
>
list
=
sessionPool
.
get
(
sessionList
.
getToUserId
());
try
{
if
(
list
==
null
||
list
.
isEmpty
())
{
//增加对方未读数
sessionListMapper
.
addUnReadCount
(
receiveId
,
sendId
);
}
else
{
Integer
toId
=
Integer
.
valueOf
((
String
)
list
.
get
(
0
));
if
(
Integer
.
valueOf
(
sessionId
).
equals
(
toId
))
{
//彼此都在会话中,直接发送消息
sendMessage
(
sessionList
,
message
);
}
else
{
if
(
sessionId
==
null
)
{
//创建会话
SessionList
tmpSessionList
=
new
SessionList
();
tmpSessionList
.
setUserId
(
sessionList
.
getToUserId
());
tmpSessionList
.
setToUserId
(
sessionList
.
getUserId
());
tmpSessionList
.
setUnReadCount
(
1L
);
sessionListMapper
.
insert
(
tmpSessionList
);
}
else
{
//增加对方未读数
sessionListMapper
.
addUnReadCount
(
receiveId
,
sendId
);
}
sendMessage
(
sessionList
,
message
);
}
}
}
catch
(
Exception
e
)
{
// 处理发送消息异常
e
.
printStackTrace
();
}
}
public
static
synchronized
int
getOnlineCount
()
{
return
onlineCount
;
}
public
static
synchronized
void
addOnlineCount
()
{
WebSocketOneToOneController
.
onlineCount
++;
}
public
static
synchronized
void
subOnlineCount
()
{
WebSocketOneToOneController
.
onlineCount
--;
}
}
pz-
chat/src/main/java/com/pz/chat/util
/SpringContextUtil.java
→
pz-
admin/src/main/java/com/pz/web/controller/websocket
/SpringContextUtil.java
View file @
d1a52aea
package
com
.
pz
.
chat
.
util
;
package
com
.
pz
.
web
.
controller
.
websocket
;
import
org.springframework.beans.BeansException
;
import
org.springframework.context.ApplicationContext
;
...
...
pz-admin/src/main/java/com/pz/web/controller/websocket/WebSocketData.java
0 → 100644
View file @
d1a52aea
package
com
.
pz
.
web
.
controller
.
websocket
;
import
lombok.Data
;
import
javax.websocket.Session
;
@Data
public
class
WebSocketData
{
/**
* 当前连接
*/
private
Session
session
;
/**
* 当前通讯ID
*/
private
String
communicationId
;
}
pz-admin/src/main/resources/application.yml
View file @
d1a52aea
...
...
@@ -141,6 +141,7 @@ security:
# system 仅用于调试阶段
-
/system/**
-
/applet/**
-
/websocket/**
# MyBatisPlus配置
# https://baomidou.com/config/
...
...
pz-applet/src/main/java/com/pz/applet/AppletDepartmentController.java
View file @
d1a52aea
...
...
@@ -50,7 +50,7 @@ public class AppletDepartmentController extends BaseController {
* 根据医院查询科室列表
*/
@GetMapping
(
"/DepartmentByHospitalId"
)
public
R
<
List
<
Department
>>
departmentByHospitalId
(
Integer
hospitalId
)
{
public
R
<
List
<
Department
Vo
>>
departmentByHospitalId
(
Integer
hospitalId
)
{
return
R
.
ok
(
iDepartmentService
.
departmentByHospitalId
(
hospitalId
));
}
}
pz-applet/src/main/java/com/pz/applet/AppletDoctorController.java
0 → 100644
View file @
d1a52aea
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.DoctorBo
;
import
com.pz.system.domain.vo.DoctorVo
;
import
com.pz.system.service.IDoctorService
;
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
;
/**
* 医生
*
* @author ruoyi
* @date 2023-09-07
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping
(
"/applet/doctor"
)
public
class
AppletDoctorController
extends
BaseController
{
private
final
IDoctorService
iDoctorService
;
/**
* 查询医生列表
*/
@GetMapping
(
"/list"
)
public
TableDataInfo
<
DoctorVo
>
list
(
DoctorBo
bo
,
PageQuery
pageQuery
)
{
return
iDoctorService
.
queryPageList
(
bo
,
pageQuery
);
}
}
pz-applet/src/main/java/com/pz/applet/AppletStoreApplyController.java
View file @
d1a52aea
...
...
@@ -41,13 +41,17 @@ public class AppletStoreApplyController extends BaseController {
/**
* 新增商城商户申请
*/
@SaCheckPermission
(
"system:apply:add"
)
@Log
(
title
=
"商城商户申请"
,
businessType
=
BusinessType
.
INSERT
)
@RepeatSubmit
()
@PostMapping
()
public
R
<
Void
>
add
(
@Validated
(
AddGroup
.
class
)
@RequestBody
StoreApplyBo
bo
)
{
return
toAjax
(
iStoreApplyService
.
insertByBo
(
bo
));
}
/**
* 查询商户状态
*/
@GetMapping
(
"/status"
)
public
R
<
StoreApplyVo
>
getStatus
(){
return
R
.
ok
(
iStoreApplyService
.
queryByUserId
());
}
}
pz-applet/src/main/java/com/pz/applet/AppletStoreGoodsController.java
View file @
d1a52aea
...
...
@@ -59,8 +59,8 @@ public class AppletStoreGoodsController extends BaseController {
* 商城商品分类列表
*/
@GetMapping
(
"/shopGoodsClassify"
)
public
List
<
StoreApplyVo
>
shopGoodsClassify
()
{
return
iStoreGoodsService
.
shopGoodsClassify
(
);
public
R
<
List
<
StoreApplyVo
>
>
shopGoodsClassify
()
{
return
R
.
ok
(
iStoreGoodsService
.
shopGoodsClassify
()
);
}
/**
...
...
pz-applet/src/main/java/com/pz/applet/AppletSysUserController.java
View file @
d1a52aea
...
...
@@ -13,6 +13,7 @@ import com.pz.common.core.domain.R;
import
com.pz.common.core.domain.entity.SysDept
;
import
com.pz.common.core.domain.entity.SysRole
;
import
com.pz.common.core.domain.entity.SysUser
;
import
com.pz.common.core.domain.model.LoginUser
;
import
com.pz.common.core.page.TableDataInfo
;
import
com.pz.common.enums.BusinessType
;
import
com.pz.common.excel.ExcelResult
;
...
...
@@ -70,7 +71,8 @@ public class AppletSysUserController extends BaseController {
*/
@GetMapping
(
"/getIdentity"
)
public
R
<
UserIdentityVo
>
getIdentity
()
{
return
R
.
ok
(
userService
.
checkUserIdentity
(
LoginHelper
.
getLoginUser
().
getUserId
().
intValue
()));
LoginUser
loginUser
=
LoginHelper
.
getLoginUser
();
return
R
.
ok
(
userService
.
checkUserIdentity
(
loginUser
.
getUserId
().
intValue
()));
}
/**
...
...
@@ -99,7 +101,6 @@ public class AppletSysUserController extends BaseController {
*/
@PutMapping
public
R
<
Void
>
edit
(
@Validated
@RequestBody
SysUser
user
)
{
user
.
setUserId
(
LoginHelper
.
getLoginUser
().
getUserId
());
userService
.
checkUserAllowed
(
user
);
userService
.
checkUserDataScope
(
user
.
getUserId
());
if
(!
userService
.
checkUserNameUnique
(
user
))
{
...
...
pz-applet/src/main/java/com/pz/applet/AppletTotalOrderController.java
View file @
d1a52aea
package
com
.
pz
.
applet
;
import
cn.dev33.satoken.annotation.SaCheckPermission
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.github.binarywang.wxpay.bean.notify.WxPayNotifyResponse
;
import
com.github.binarywang.wxpay.bean.notify.WxPayOrderNotifyResult
;
import
com.github.binarywang.wxpay.bean.request.WxPayUnifiedOrderRequest
;
import
com.github.binarywang.wxpay.bean.result.BaseWxPayResult
;
import
com.github.binarywang.wxpay.exception.WxPayException
;
import
com.github.binarywang.wxpay.service.WxPayService
;
import
com.pz.common.annotation.Log
;
import
com.pz.common.annotation.RepeatSubmit
;
import
com.pz.common.core.controller.BaseController
;
...
...
@@ -10,21 +17,27 @@ 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.helper.LoginHelper
;
import
com.pz.common.utils.poi.ExcelUtil
;
import
com.pz.system.domain.bo.CreateOrderBo
;
import
com.pz.system.domain.bo.PaymentRecordBo
;
import
com.pz.system.domain.bo.TotalOrderBo
;
import
com.pz.system.domain.vo.PaymentRecordVo
;
import
com.pz.system.domain.vo.TotalOrderVo
;
import
com.pz.system.service.IPayService
;
import
com.pz.system.service.IPaymentRecordService
;
import
com.pz.system.service.ITotalOrderService
;
import
lombok.RequiredArgsConstructor
;
import
org.apache.commons.io.IOUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.*
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
import
javax.validation.constraints.NotEmpty
;
import
javax.validation.constraints.NotNull
;
import
java.math.BigDecimal
;
import
java.util.Arrays
;
import
java.util.List
;
import
java.util.Random
;
...
...
@@ -45,11 +58,14 @@ public class AppletTotalOrderController extends BaseController {
private
final
IPaymentRecordService
iPaymentRecordService
;
private
final
IPayService
iPayService
;
/**
* 查询总订单列表
*/
@GetMapping
(
"/list"
)
public
TableDataInfo
<
TotalOrderVo
>
list
(
TotalOrderBo
bo
,
PageQuery
pageQuery
)
{
bo
.
setUid
(
LoginHelper
.
getLoginUser
().
getUserId
().
intValue
());
return
iTotalOrderService
.
queryPageList
(
bo
,
pageQuery
);
}
...
...
@@ -119,4 +135,35 @@ public class AppletTotalOrderController extends BaseController {
public
R
<
Void
>
cancelOrder
(
@Validated
(
AddGroup
.
class
)
@RequestBody
TotalOrderBo
recordBo
)
{
return
toAjax
(
iTotalOrderService
.
cancelOrder
(
recordBo
));
}
/**
* 订单支付
*/
@RepeatSubmit
()
@PostMapping
(
"/Orderpay"
)
public
R
<
Object
>
Orderpay
(
@Validated
(
AddGroup
.
class
)
@RequestBody
TotalOrderBo
recordBo
)
{
return
R
.
ok
(
iTotalOrderService
.
payOrder
(
recordBo
));
}
/**
* 订单回调
*/
@ResponseBody
@PostMapping
(
"/orderPayCallBack"
)
public
R
<
Void
>
orderPayCallBack
(
HttpServletRequest
request
,
HttpServletResponse
response
)
{
try
{
String
xmlResult
=
IOUtils
.
toString
(
request
.
getInputStream
(),
request
.
getCharacterEncoding
());
WxPayOrderNotifyResult
result
=
iPayService
.
parseOrderNotifyResult
(
xmlResult
);
// 加入自己处理订单的业务逻辑,需要判断订单是否已经支付过,否则可能会重复调用
/* String orderNum = result.getOutTradeNo();
iTotalOrderService.*/
return
R
.
ok
();
}
catch
(
Exception
e
)
{
System
.
out
.
println
(
"微信回调结果异常,异常原因"
+
e
.
getMessage
());
return
R
.
fail
();
}
}
}
pz-chat/pom.xml
deleted
100644 → 0
View file @
ed6444ac
<?xml version="1.0" encoding="UTF-8"?>
<project
xmlns=
"http://maven.apache.org/POM/4.0.0"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
>
<modelVersion>
4.0.0
</modelVersion>
<parent>
<groupId>
com.pz
</groupId>
<artifactId>
PeiZhen-Java
</artifactId>
<version>
4.8.0
</version>
</parent>
<artifactId>
pz-chat
</artifactId>
<description>
聊天服务模块
</description>
<dependencies>
<!-- 通用工具-->
<dependency>
<groupId>
com.pz
</groupId>
<artifactId>
pz-common
</artifactId>
</dependency>
<dependency>
<groupId>
com.pz
</groupId>
<artifactId>
pz-sms
</artifactId>
</dependency>
<dependency>
<groupId>
com.pz
</groupId>
<artifactId>
pz-system
</artifactId>
</dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-websocket
</artifactId>
</dependency>
</dependencies>
</project>
pz-chat/src/main/java/com/pz/chat/controller/ChatController.java
deleted
100644 → 0
View file @
ed6444ac
package
com
.
pz
.
chat
.
controller
;
import
com.baomidou.mybatisplus.core.toolkit.StringUtils
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.pz.chat.util.CurPool
;
import
com.pz.chat.util.JsonUtils
;
import
com.pz.chat.util.SpringContextUtil
;
import
com.pz.common.core.domain.entity.SysUser
;
import
com.pz.system.domain.MsgInfo
;
import
com.pz.system.domain.SessionList
;
import
com.pz.system.mapper.MsgInfoMapper
;
import
com.pz.system.mapper.SessionListMapper
;
import
com.pz.system.mapper.SysUserMapper
;
import
com.pz.system.service.IMsgInfoService
;
import
com.pz.system.service.ISessionListService
;
import
com.pz.system.service.ISysUserService
;
import
lombok.RequiredArgsConstructor
;
import
org.springframework.stereotype.Component
;
import
javax.annotation.Resource
;
import
javax.websocket.OnClose
;
import
javax.websocket.OnMessage
;
import
javax.websocket.OnOpen
;
import
javax.websocket.Session
;
import
javax.websocket.server.PathParam
;
import
javax.websocket.server.ServerEndpoint
;
import
java.util.ArrayList
;
import
java.util.Date
;
import
java.util.List
;
@Component
@ServerEndpoint
(
"/websocket/{userId}/{sessionId}"
)
public
class
ChatController
{
@Resource
private
SessionListMapper
sessionListMapper
;
@Resource
private
SysUserMapper
sysUserMapper
;
@Resource
private
MsgInfoMapper
msgInfoMapper
;
private
Session
session
;
@OnOpen
public
void
onOpen
(
Session
session
,
@PathParam
(
value
=
"userId"
)
Integer
userId
,
@PathParam
(
value
=
"sessionId"
)
String
sessionId
)
{
this
.
session
=
session
;
// 打开连接时保存WebSocket的会话对象
CurPool
.
webSockets
.
put
(
userId
,
this
);
// 将WebSocket对象放入WebSocket连接池中
List
<
Object
>
list
=
new
ArrayList
<>();
list
.
add
(
sessionId
);
list
.
add
(
session
);
// 将会话ID和会话对象放入会话池中
CurPool
.
sessionPool
.
put
(
userId
,
list
);
}
@OnClose
public
void
onClose
()
{
// 断开连接删除用户删除session
Long
userId
=
Long
.
parseLong
(
this
.
session
.
getRequestParameterMap
().
get
(
"userId"
).
get
(
0
));
// 获取用户ID
CurPool
.
sessionPool
.
remove
(
userId
);
CurPool
.
webSockets
.
remove
(
userId
);
// 从会话池和连接池中移除WebSocket对象
if
(
sysUserMapper
==
null
)
{
this
.
sysUserMapper
=
(
SysUserMapper
)
SpringContextUtil
.
getBean
(
"sysUserMapper"
);
}
SysUser
user
=
sysUserMapper
.
selectUserById
(
userId
);
// 从用户池中移除用户
CurPool
.
curUserPool
.
remove
(
user
.
getNickName
());
}
@OnMessage
public
void
onMessage
(
String
message
)
{
String
sessionId
=
this
.
session
.
getRequestParameterMap
().
get
(
"sessionId"
).
get
(
0
);
// 获取会话ID
if
(
sessionId
==
null
)
{
System
.
out
.
println
(
"sessionId 错误"
);
}
if
(
sessionListMapper
==
null
)
{
this
.
sessionListMapper
=
(
SessionListMapper
)
SpringContextUtil
.
getBean
(
"sessionListMapper"
);
}
// 根据会话ID注入SeesionListMapper
if
(
sysUserMapper
==
null
)
{
this
.
sysUserMapper
=
(
SysUserMapper
)
SpringContextUtil
.
getBean
(
"sysUserMapper"
);
}
// 根据会话ID注入UserMapper
if
(
msgInfoMapper
==
null
)
{
this
.
msgInfoMapper
=
(
MsgInfoMapper
)
SpringContextUtil
.
getBean
(
"msgInfoMapper"
);
}
SessionList
sessionList
=
sessionListMapper
.
selectById
(
Long
.
parseLong
(
sessionId
));
// 根据会话ID查询会话列表
SysUser
user
=
sysUserMapper
.
selectUserById
(
sessionList
.
getUserId
());
// 根据会话列表中的用户ID查询用户信息
MsgInfo
msgInfo
=
new
MsgInfo
();
msgInfo
.
setContent
(
message
);
msgInfo
.
setFromUserId
(
sessionList
.
getUserId
());
msgInfo
.
setFromUserName
(
user
.
getNickName
());
msgInfo
.
setToUserId
(
sessionList
.
getToUserId
());
msgInfo
.
setToUserName
(
sessionList
.
getListName
());
msgInfo
.
setUnReadFlag
(
0L
);
// 创建消息对象,设置消息的内容、创建时间、发送方和接收方的信息
msgInfoMapper
.
insert
(
msgInfo
);
// 将消息持久化到数据库中
List
<
Object
>
list
=
CurPool
.
sessionPool
.
get
(
sessionList
.
getToUserId
());
// 根据接收方的用户ID从会话池中获取会话列表
if
(
list
==
null
||
list
.
isEmpty
())
{
sessionListMapper
.
addUnReadCount
(
sessionList
.
getToUserId
(),
sessionList
.
getUserId
());
// 用户不存在,更新未读消息数量
}
else
{
String
id
=
sessionListMapper
.
selectIdByUser
(
sessionList
.
getToUserId
(),
sessionList
.
getUserId
())
+
""
;
String
o
=
list
.
get
(
0
)
+
""
;
if
(
id
.
equals
(
o
))
{
sendTextMessage
(
sessionList
.
getToUserId
(),
JsonUtils
.
objectToJson
(
msgInfo
));
// 会话存在,直接发送消息
}
else
{
if
(
StringUtils
.
isNotBlank
(
id
))
{
SessionList
tmpSessionList
=
new
SessionList
();
tmpSessionList
.
setUserId
(
sessionList
.
getToUserId
());
tmpSessionList
.
setToUserId
(
sessionList
.
getUserId
());
tmpSessionList
.
setListName
(
user
.
getNickName
());
tmpSessionList
.
setUnReadCount
(
1L
);
sessionListMapper
.
insert
(
tmpSessionList
);
// 新增会话列表
}
else
{
sessionListMapper
.
addUnReadCount
(
sessionList
.
getToUserId
(),
sessionList
.
getUserId
());
// 更新未读消息数量
}
List
<
SessionList
>
sessionLists
=
sessionListMapper
.
selectList
(
Wrappers
.<
SessionList
>
lambdaQuery
().
eq
(
SessionList:
:
getUserId
,
sessionList
.
getToUserId
()));
// 会话不存在,发送会话列表消息
sendTextMessage
(
sessionList
.
getToUserId
(),
JsonUtils
.
objectToJson
(
sessionLists
));
}
}
// 输出收到的消息
System
.
out
.
println
(
"【websocket消息】收到客户端消息:"
+
message
);
}
public
void
sendTextMessage
(
Long
userId
,
String
message
)
{
Session
session
=
(
Session
)
CurPool
.
sessionPool
.
get
(
userId
).
get
(
1
);
// 根据用户ID从会话池中获取会话对象
if
(
session
!=
null
)
{
try
{
session
.
getBasicRemote
().
sendText
(
message
);
// 发送文本消息
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
}
}
}
pz-chat/src/main/java/com/pz/chat/util/CurPool.java
deleted
100644 → 0
View file @
ed6444ac
package
com
.
pz
.
chat
.
util
;
import
com.pz.chat.controller.ChatController
;
import
com.pz.common.core.domain.entity.SysUser
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.concurrent.ConcurrentHashMap
;
/**
* 统一管理session、websocket、curUser
*/
public
class
CurPool
{
// public static CopyOnWriteArraySet<WebSocket> webSockets =new CopyOnWriteArraySet<>();
public
static
Map
<
Integer
,
ChatController
>
webSockets
=
new
ConcurrentHashMap
<>();
// list 里面第一个存sessionId,第二个存session
public
static
Map
<
Integer
,
List
<
Object
>>
sessionPool
=
new
ConcurrentHashMap
<>();
// 当前登录用户x
public
static
Map
<
String
,
SysUser
>
curUserPool
=
new
ConcurrentHashMap
<>();
}
pz-common/pom.xml
View file @
d1a52aea
...
...
@@ -113,6 +113,17 @@
</dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-websocket
</artifactId>
</dependency>
<dependency>
<groupId>
joda-time
</groupId>
<artifactId>
joda-time
</artifactId>
</dependency>
<dependency>
<groupId>
cn.hutool
</groupId>
<artifactId>
hutool-extra
</artifactId>
</dependency>
...
...
pz-c
hat/src/main/java/com/pz/chat/util
/JsonUtils.java
→
pz-c
ommon/src/main/java/com/pz/common
/JsonUtils.java
View file @
d1a52aea
package
com
.
pz
.
c
hat
.
util
;
package
com
.
pz
.
c
ommon
;
import
com.fasterxml.jackson.annotation.JsonInclude.Include
;
import
com.fasterxml.jackson.core.JsonProcessingException
;
...
...
pz-c
hat/src/main/java/com/pz/chat
/config/WebSocketConfig.java
→
pz-c
ommon/src/main/java/com/pz/common
/config/WebSocketConfig.java
View file @
d1a52aea
package
com
.
pz
.
c
hat
.
config
;
package
com
.
pz
.
c
ommon
.
config
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
...
...
pz-common/src/main/java/com/pz/common/core/domain/entity/SysUser.java
View file @
d1a52aea
...
...
@@ -54,16 +54,12 @@ public class SysUser extends BaseEntity {
/**
* 用户账号
*/
@Xss
(
message
=
"用户账号不能包含脚本字符"
)
@NotBlank
(
message
=
"用户账号不能为空"
)
@Size
(
min
=
0
,
max
=
30
,
message
=
"用户账号长度不能超过{max}个字符"
)
private
String
userName
;
/**
* 用户昵称
*/
@Xss
(
message
=
"用户昵称不能包含脚本字符"
)
@NotBlank
(
message
=
"用户昵称不能为空"
)
@Size
(
min
=
0
,
max
=
30
,
message
=
"用户昵称长度不能超过{max}个字符"
)
private
String
nickName
;
...
...
pz-common/src/main/java/com/pz/common/enums/UserType.java
View file @
d1a52aea
...
...
@@ -15,12 +15,12 @@ import lombok.Getter;
public
enum
UserType
{
/**
*
pc端
*
普通用户
*/
SYS_USER
(
"sys_user"
),
/**
*
app端
*
陪诊员
*/
APP_USER
(
"app_user"
),
...
...
pz-common/src/main/java/com/pz/common/utils/DateUtils.java
View file @
d1a52aea
...
...
@@ -2,7 +2,10 @@ package com.pz.common.utils;
import
lombok.AccessLevel
;
import
lombok.NoArgsConstructor
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.commons.lang3.time.DateFormatUtils
;
import
org.joda.time.format.DateTimeFormat
;
import
org.joda.time.format.DateTimeFormatter
;
import
java.lang.management.ManagementFactory
;
import
java.text.ParseException
;
...
...
@@ -12,6 +15,7 @@ import java.time.LocalDateTime;
import
java.time.LocalTime
;
import
java.time.ZoneId
;
import
java.time.ZonedDateTime
;
import
java.util.Date
;
/**
...
...
@@ -92,6 +96,20 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils {
}
/**
* 字符串转换成日期
* @param strDate 日期字符串
* @param pattern 日期的格式,如:DateUtils.DATE_TIME_PATTERN
*/
public
static
Date
stringToDate
(
String
strDate
,
String
pattern
)
{
if
(
StringUtils
.
isBlank
(
strDate
)){
return
null
;
}
DateTimeFormatter
fmt
=
DateTimeFormat
.
forPattern
(
pattern
);
return
fmt
.
parseLocalDateTime
(
strDate
).
toDate
();
}
/**
* 日期路径 即年/月/日 如20180808
*/
public
static
String
dateTime
()
{
...
...
pz-system/src/main/java/com/pz/merchant/domain/Employees.java
View file @
d1a52aea
...
...
@@ -98,4 +98,14 @@ public class Employees extends BaseEntity {
@TableLogic
private
String
delFlag
;
/**
* 身份证号
*/
private
String
cardNo
;
/**
* 手机号
*/
private
String
phone
;
}
pz-system/src/main/java/com/pz/merchant/domain/bo/EmployeesBo.java
View file @
d1a52aea
...
...
@@ -22,109 +22,91 @@ public class EmployeesBo extends BaseEntity {
/**
*
*/
@NotNull
(
message
=
"不能为空"
,
groups
=
{
EditGroup
.
class
})
private
Integer
id
;
/**
* 陪诊员
*/
@NotBlank
(
message
=
"陪诊员 不能为空"
,
groups
=
{
AddGroup
.
class
,
EditGroup
.
class
})
private
String
name
;
/**
* 职业开始年份
*/
@NotBlank
(
message
=
"职业开始年份不能为空"
,
groups
=
{
AddGroup
.
class
,
EditGroup
.
class
})
private
String
startYear
;
/**
* 用户
*/
@NotNull
(
message
=
"用户不能为空"
,
groups
=
{
AddGroup
.
class
,
EditGroup
.
class
})
private
Integer
uid
;
/**
* 工作时段
*/
@NotBlank
(
message
=
"工作时段不能为空"
,
groups
=
{
AddGroup
.
class
,
EditGroup
.
class
})
private
String
workingHours
;
/**
* 状态
*/
@NotNull
(
message
=
"状态不能为空"
,
groups
=
{
AddGroup
.
class
,
EditGroup
.
class
})
private
Integer
status
;
/**
* 所属商户
*/
@NotNull
(
message
=
"所属商户不能为空"
,
groups
=
{
AddGroup
.
class
,
EditGroup
.
class
})
private
Integer
companyId
;
/**
* 身份证正面照
*/
@NotBlank
(
message
=
"身份证正面照不能为空"
,
groups
=
{
AddGroup
.
class
,
EditGroup
.
class
})
private
String
cardFront
;
/**
* 身份证反面照
*/
@NotBlank
(
message
=
"身份证反面照不能为空"
,
groups
=
{
AddGroup
.
class
,
EditGroup
.
class
})
private
String
cardReverse
;
/**
* 健康证
*/
@NotBlank
(
message
=
"健康证不能为空"
,
groups
=
{
AddGroup
.
class
,
EditGroup
.
class
})
private
String
healthCertificate
;
/**
* 经度
*/
@NotBlank
(
message
=
"经度不能为空"
,
groups
=
{
AddGroup
.
class
,
EditGroup
.
class
})
private
String
lng
;
/**
* 纬度
*/
@NotBlank
(
message
=
"纬度不能为空"
,
groups
=
{
AddGroup
.
class
,
EditGroup
.
class
})
private
String
lat
;
/**
* 城市
*/
@NotNull
(
message
=
"城市不能为空"
,
groups
=
{
AddGroup
.
class
,
EditGroup
.
class
})
private
Long
cityId
;
/**
* 当前身份
*/
@NotNull
(
message
=
"当前身份不能为空"
,
groups
=
{
AddGroup
.
class
,
EditGroup
.
class
})
private
Integer
nowType
;
/**
* 总收益
*/
@NotBlank
(
message
=
"总收益不能为空"
,
groups
=
{
AddGroup
.
class
,
EditGroup
.
class
})
private
String
totalRevenue
;
/**
* 当前余额
*/
@NotBlank
(
message
=
"当前余额不能为空"
,
groups
=
{
AddGroup
.
class
,
EditGroup
.
class
})
private
String
balance
;
/**
* 冻结余额
*/
@NotNull
(
message
=
"冻结余额不能为空"
,
groups
=
{
AddGroup
.
class
,
EditGroup
.
class
})
private
Long
freezeBalance
;
/**
* 取消订单次数
*/
@NotNull
(
message
=
"取消订单次数不能为空"
,
groups
=
{
AddGroup
.
class
,
EditGroup
.
class
})
private
Integer
killOrder
;
/**
...
...
pz-system/src/main/java/com/pz/merchant/domain/vo/EmployeesVo.java
View file @
d1a52aea
...
...
@@ -5,6 +5,7 @@ import com.alibaba.excel.annotation.ExcelProperty;
import
com.pz.common.annotation.ExcelDictFormat
;
import
com.pz.common.convert.ExcelDictConvert
;
import
com.pz.system.domain.TotalOrder
;
import
com.pz.system.domain.vo.TotalOrderVo
;
import
lombok.Data
;
import
java.util.Date
;
...
...
@@ -123,5 +124,12 @@ public class EmployeesVo {
/**
* 最近好评
*/
private
List
<
TotalOrder
>
totalOrderVo
;
private
List
<
TotalOrderVo
>
totalOrderVo
;
/**
* 工作年限
*/
private
Integer
wrokYear
;
private
String
phone
;
}
pz-system/src/main/java/com/pz/merchant/service/impl/EmployeesServiceImpl.java
View file @
d1a52aea
...
...
@@ -20,8 +20,12 @@ import com.pz.merchant.domain.bo.SetEmployeeWorkingHourBo;
import
com.pz.merchant.domain.vo.*
;
import
com.pz.merchant.mapper.CompanyMapper
;
import
com.pz.merchant.service.ISonOrderService
;
import
com.pz.system.domain.Business
;
import
com.pz.system.domain.TotalOrder
;
import
com.pz.system.domain.bo.EmployeesCompanyBo
;
import
com.pz.system.domain.vo.BusinessVo
;
import
com.pz.system.domain.vo.TotalOrderVo
;
import
com.pz.system.mapper.BusinessMapper
;
import
com.pz.system.mapper.CityMapper
;
import
com.pz.system.mapper.SysUserMapper
;
import
com.pz.system.mapper.TotalOrderMapper
;
...
...
@@ -32,6 +36,7 @@ import com.pz.merchant.domain.Employees;
import
com.pz.merchant.mapper.EmployeesMapper
;
import
com.pz.merchant.service.IEmployeesService
;
import
java.time.LocalDate
;
import
java.util.*
;
/**
...
...
@@ -50,6 +55,7 @@ public class EmployeesServiceImpl implements IEmployeesService {
private
final
CityMapper
cityMapper
;
private
final
TotalOrderMapper
totalOrderMapper
;
private
final
SonOrderServiceBuilder
sonOrderServiceBuilder
;
private
final
BusinessMapper
businessMapper
;
/**
* 查询陪诊员
...
...
@@ -140,7 +146,7 @@ public class EmployeesServiceImpl implements IEmployeesService {
*/
SysUser
sysUser
=
new
SysUser
();
sysUser
.
setUserId
(
bo
.
getUid
().
longValue
());
sysUser
.
setPhonenumber
(
bo
.
getPhone
());
//
sysUser.setPhonenumber(bo.getPhone());
if
(
bo
.
getIdentity
()
==
2
)
{
Employees
add
=
BeanUtil
.
toBean
(
bo
,
Employees
.
class
);
add
.
setNowType
(
1
);
...
...
@@ -187,15 +193,20 @@ public class EmployeesServiceImpl implements IEmployeesService {
*/
@Override
public
TableDataInfo
<
EmployeesVo
>
queryPageAppNeed
(
EmployeesBo
bo
,
PageQuery
pageQuery
)
{
// 获取当前日期
LocalDate
currentDate
=
LocalDate
.
now
();
// 获取当前年份
int
year
=
currentDate
.
getYear
();
Page
<
EmployeesVo
>
result
=
baseMapper
.
selectEmployees
(
bo
,
pageQuery
.
build
());
Optional
.
ofNullable
(
result
.
getRecords
()).
ifPresent
(
EmployeesVo
->
{
EmployeesVo
.
forEach
(
t
->
{
List
<
TotalOrder
>
totalOrder
=
totalOrderMapper
.
select
List
(
Wrappers
.<
TotalOrder
>
lambdaQuery
()
List
<
TotalOrder
Vo
>
totalOrder
=
totalOrderMapper
.
selectVo
List
(
Wrappers
.<
TotalOrder
>
lambdaQuery
()
.
eq
(
TotalOrder:
:
getEmId
,
t
.
getId
())
.
eq
(
TotalOrder:
:
getIsSatisfaction
,
1
)
.
orderByDesc
(
TotalOrder:
:
getId
)
.
last
(
"LIMIT 1"
));
t
.
setTotalOrderVo
(
totalOrder
);
t
.
setWrokYear
(
year
-
Integer
.
parseInt
(
t
.
getStartYear
()));
});
});
return
TableDataInfo
.
build
(
result
);
...
...
@@ -213,7 +224,7 @@ public class EmployeesServiceImpl implements IEmployeesService {
Page
<
EmployeesVo
>
result
=
baseMapper
.
selectEmployees
(
bo
,
pageQuery
.
build
());
Optional
.
ofNullable
(
result
.
getRecords
()).
ifPresent
(
EmployeesVo
->
{
EmployeesVo
.
forEach
(
t
->
{
List
<
TotalOrder
>
totalOrder
=
totalOrderMapper
.
select
List
(
Wrappers
.<
TotalOrder
>
lambdaQuery
()
List
<
TotalOrder
Vo
>
totalOrder
=
totalOrderMapper
.
selectVo
List
(
Wrappers
.<
TotalOrder
>
lambdaQuery
()
.
eq
(
TotalOrder:
:
getEmId
,
t
.
getId
())
.
eq
(
TotalOrder:
:
getIsSatisfaction
,
1
)
.
orderByDesc
(
TotalOrder:
:
getId
)
...
...
@@ -231,10 +242,16 @@ public class EmployeesServiceImpl implements IEmployeesService {
@Override
public
EmployeesVo
queryByApp
(
Integer
id
)
{
EmployeesVo
employeesVo
=
baseMapper
.
selectEmployeesById
(
id
);
List
<
TotalOrder
>
totalOrder
=
totalOrderMapper
.
select
List
(
Wrappers
.<
TotalOrder
>
lambdaQuery
()
List
<
TotalOrder
Vo
>
totalOrder
=
totalOrderMapper
.
selectVo
List
(
Wrappers
.<
TotalOrder
>
lambdaQuery
()
.
eq
(
TotalOrder:
:
getEmId
,
employeesVo
.
getId
())
.
eq
(
TotalOrder:
:
getIsSatisfaction
,
1
)
.
orderByDesc
(
TotalOrder:
:
getId
));
for
(
TotalOrderVo
order
:
totalOrder
)
{
BusinessVo
businessVo
=
businessMapper
.
selectVoOne
(
new
LambdaQueryWrapper
<
Business
>().
eq
(
Business:
:
getId
,
order
.
getBusinessId
()));
if
(
null
!=
businessVo
)
{
order
.
setProject
(
businessVo
.
getName
());
}
}
employeesVo
.
setTotalOrderVo
(
totalOrder
);
return
employeesVo
;
}
...
...
@@ -277,6 +294,11 @@ public class EmployeesServiceImpl implements IEmployeesService {
@Override
public
EmployeesVo
queryByUserId
(
Long
userId
)
{
EmployeesVo
employeesVo
=
baseMapper
.
selectVoOne
(
Wrappers
.<
Employees
>
lambdaQuery
().
eq
(
Employees:
:
getUid
,
userId
));
//获取所属商户
Optional
.
ofNullable
(
companyMapper
.
selectVoById
(
employeesVo
.
getCompanyId
()))
.
ifPresent
(
companyVo
->
employeesVo
.
setCompanyName
(
companyVo
.
getName
()));
return
baseMapper
.
selectVoOne
(
Wrappers
.<
Employees
>
lambdaQuery
().
eq
(
Employees:
:
getUid
,
userId
));
}
...
...
pz-system/src/main/java/com/pz/system/domain/Income.java
View file @
d1a52aea
...
...
@@ -5,6 +5,8 @@ import com.pz.common.core.domain.BaseEntity;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
java.math.BigDecimal
;
/**
* 陪诊员/商户提现对象 income
...
...
@@ -43,7 +45,7 @@ public class Income extends BaseEntity {
/**
* 提现金额
*/
private
Long
amount
;
private
BigDecimal
amount
;
/**
* 提现状态 0-待审核,1-成功提现,2-拒绝提现
*/
...
...
pz-system/src/main/java/com/pz/system/domain/Message.java
0 → 100644
View file @
d1a52aea
package
com
.
pz
.
system
.
domain
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
com.pz.common.core.domain.BaseEntity
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
/**
* @author lisw
* @program message
* @description
* @createDate 2021-08-18 17:03:58
**/
@Data
@EqualsAndHashCode
(
callSuper
=
true
)
@TableName
(
"message"
)
public
class
Message
extends
BaseEntity
{
private
static
final
long
serialVersionUID
=
1L
;
/**
* 主键ID
*/
@TableId
private
Long
id
;
/**
* 是否显示时间
* 0:否 1:是
*/
private
Integer
type
;
/**
* 消息内容
*/
private
String
content
;
/**
* 内容类型 0文字1图片2视频 3礼物
*/
private
Integer
contentType
;
/**
* 是否已读
*/
private
String
isRead
;
/**
* 发送人
*/
private
Long
sender
;
/**
* 接收人
*/
private
Long
receiver
;
/**
* 发送消息请求ID
*/
private
String
requestId
;
/**
* 是否已读
*/
private
Boolean
isLast
;
/**
* 状态
*/
private
String
status
;
/**
* 备注
*/
private
String
remark
;
}
pz-system/src/main/java/com/pz/system/domain/MsgInfo.java
deleted
100644 → 0
View file @
ed6444ac
package
com
.
pz
.
system
.
domain
;
import
com.baomidou.mybatisplus.annotation.*
;
import
com.pz.common.core.domain.BaseEntity
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
/**
* 消息对象 msg_info
*
* @author ruoyi
* @date 2023-09-09
*/
@Data
@EqualsAndHashCode
(
callSuper
=
true
)
@TableName
(
"msg_info"
)
public
class
MsgInfo
extends
BaseEntity
{
private
static
final
long
serialVersionUID
=
1L
;
/**
* 消息id
*/
@TableId
(
value
=
"id"
)
private
Long
id
;
/**
* 消息发送者id
*/
private
Long
fromUserId
;
/**
* 消息发送者名称
*/
private
String
fromUserName
;
/**
* 消息接收者id
*/
private
Long
toUserId
;
/**
* 消息接收者名称
*/
private
String
toUserName
;
/**
* 消息内容
*/
private
String
content
;
/**
* 是否已读(1 已读)
*/
private
Long
unReadFlag
;
}
pz-system/src/main/java/com/pz/system/domain/SessionList.java
View file @
d1a52aea
...
...
@@ -13,9 +13,8 @@ import lombok.EqualsAndHashCode;
* @date 2023-09-09
*/
@Data
@EqualsAndHashCode
(
callSuper
=
true
)
@TableName
(
"session_list"
)
public
class
SessionList
extends
BaseEntity
{
public
class
SessionList
{
private
static
final
long
serialVersionUID
=
1L
;
...
...
@@ -33,10 +32,6 @@ public class SessionList extends BaseEntity {
*/
private
Long
toUserId
;
/**
* 会话名称
*/
private
String
listName
;
/**
* 未读消息数
*/
private
Long
unReadCount
;
...
...
pz-system/src/main/java/com/pz/system/domain/TotalOrder.java
View file @
d1a52aea
...
...
@@ -51,7 +51,7 @@ public class TotalOrder extends BaseEntity {
/**
* 订单价格
*/
private
String
payMoney
;
private
Double
payMoney
;
/**
* 订单状态
*/
...
...
@@ -80,7 +80,7 @@ public class TotalOrder extends BaseEntity {
/**
* 退款金额
*/
private
String
refundAmount
;
private
Double
refundAmount
;
/**
* 删除标志(0代表存在 2代表删除)
*/
...
...
pz-system/src/main/java/com/pz/system/domain/bo/CreateOrderBo.java
View file @
d1a52aea
package
com
.
pz
.
system
.
domain
.
bo
;
import
com.pz.common.core.domain.BaseEntity
;
import
com.pz.common.core.validate.AddGroup
;
import
com.pz.common.core.validate.EditGroup
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
javax.validation.constraints.NotBlank
;
import
java.util.List
;
@Data
...
...
@@ -15,6 +18,16 @@ public class CreateOrderBo extends BaseEntity {
private
Integer
businessId
;
/**
* 经度
*/
private
String
lng
;
/**
* 纬度
*/
private
String
lat
;
/**
* 订单价格
*/
private
Double
payMoney
;
...
...
pz-system/src/main/java/com/pz/system/domain/bo/IncomeBo.java
View file @
d1a52aea
...
...
@@ -4,6 +4,7 @@ import com.pz.common.core.domain.BaseEntity;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
javax.validation.constraints.*
;
import
java.math.BigDecimal
;
/**
...
...
@@ -45,7 +46,7 @@ public class IncomeBo extends BaseEntity {
/**
* 提现金额
*/
private
Long
amount
;
private
BigDecimal
amount
;
/**
* 提现状态 0-待审核,1-成功提现,2-拒绝提现
...
...
pz-system/src/main/java/com/pz/system/domain/bo/MessageBo.java
0 → 100644
View file @
d1a52aea
package
com
.
pz
.
system
.
domain
.
bo
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
com.pz.common.core.domain.BaseEntity
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
/**
* @author lisw
* @program message
* @description
* @createDate 2021-08-18 17:03:58
**/
@Data
@EqualsAndHashCode
(
callSuper
=
true
)
@TableName
(
"message"
)
public
class
MessageBo
extends
BaseEntity
{
private
static
final
long
serialVersionUID
=
1L
;
/**
* 主键ID
*/
@TableId
private
Long
id
;
/**
* 是否显示时间
* 0:否 1:是
*/
private
Integer
type
;
/**
* 消息内容
*/
private
String
content
;
/**
* 内容类型 0文字1图片2视频 3礼物
*/
private
Integer
contentType
;
/**
* 是否已读
*/
private
String
isRead
;
/**
* 发送人
*/
private
Long
sender
;
/**
* 接收人
*/
private
Long
receiver
;
/**
* 发送消息请求ID
*/
private
String
requestId
;
/**
* 是否已读
*/
private
Boolean
isLast
;
/**
* 状态
*/
private
String
status
;
/**
* 备注
*/
private
String
remark
;
}
pz-system/src/main/java/com/pz/system/domain/bo/MsgInfoBo.java
deleted
100644 → 0
View file @
ed6444ac
package
com
.
pz
.
system
.
domain
.
bo
;
import
com.pz.common.core.domain.BaseEntity
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
javax.validation.constraints.*
;
/**
* 消息业务对象 msg_info
*
* @author ruoyi
* @date 2023-09-09
*/
@Data
@EqualsAndHashCode
(
callSuper
=
true
)
public
class
MsgInfoBo
extends
BaseEntity
{
/**
* 消息id
*/
private
Long
id
;
/**
* 消息发送者id
*/
private
Long
fromUserId
;
/**
* 消息发送者名称
*/
private
String
fromUserName
;
/**
* 消息接收者id
*/
private
Long
toUserId
;
/**
* 消息接收者名称
*/
private
String
toUserName
;
/**
* 消息内容
*/
private
String
content
;
/**
* 是否已读(1 已读)
*/
private
Long
unReadFlag
;
}
pz-system/src/main/java/com/pz/system/domain/bo/TotalOrderBo.java
View file @
d1a52aea
...
...
@@ -87,5 +87,7 @@ public class TotalOrderBo extends BaseEntity {
*/
private
String
refundAmount
;
private
String
orderTitle
;
private
String
openid
;
}
pz-system/src/main/java/com/pz/system/domain/vo/IncomeVo.java
View file @
d1a52aea
...
...
@@ -4,8 +4,11 @@ import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import
com.alibaba.excel.annotation.ExcelProperty
;
import
com.pz.common.annotation.ExcelDictFormat
;
import
com.pz.common.convert.ExcelDictConvert
;
import
com.pz.common.core.domain.BaseEntity
;
import
lombok.Data
;
import
java.math.BigDecimal
;
/**
* 陪诊员/商户提现视图对象 income
...
...
@@ -15,7 +18,7 @@ import lombok.Data;
*/
@Data
@ExcelIgnoreUnannotated
public
class
IncomeVo
{
public
class
IncomeVo
extends
BaseEntity
{
private
static
final
long
serialVersionUID
=
1L
;
...
...
@@ -53,7 +56,7 @@ public class IncomeVo {
* 提现金额
*/
@ExcelProperty
(
value
=
"提现金额"
)
private
Long
amount
;
private
BigDecimal
amount
;
/**
* 提现状态 0-待审核,1-成功提现,2-拒绝提现
...
...
pz-system/src/main/java/com/pz/system/domain/vo/MessageVo.java
0 → 100644
View file @
d1a52aea
package
com
.
pz
.
system
.
domain
.
vo
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
lombok.Data
;
import
java.io.Serializable
;
@Data
public
class
MessageVo
implements
Serializable
{
/**
* 主键ID
*/
@TableId
private
Long
id
;
/**
* 是否显示时间
* 0:否 1:是
*/
private
Integer
type
;
/**
* 消息内容
*/
private
String
content
;
/**
* 内容类型 0文字1图片2视频 3礼物
*/
private
Integer
contentType
;
/**
* 是否已读
*/
private
String
isRead
;
/**
* 发送人
*/
private
Long
sender
;
/**
* 接收人
*/
private
Long
receiver
;
/**
* 发送消息请求ID
*/
private
String
requestId
;
/**
* 是否已读
*/
private
Boolean
isLast
;
/**
* 状态
*/
private
String
status
;
/**
* 备注
*/
private
String
remark
;
}
pz-system/src/main/java/com/pz/system/domain/vo/MsgInfoVo.java
deleted
100644 → 0
View file @
ed6444ac
package
com
.
pz
.
system
.
domain
.
vo
;
import
com.alibaba.excel.annotation.ExcelIgnoreUnannotated
;
import
com.alibaba.excel.annotation.ExcelProperty
;
import
com.pz.common.annotation.ExcelDictFormat
;
import
com.pz.common.convert.ExcelDictConvert
;
import
lombok.Data
;
/**
* 消息视图对象 msg_info
*
* @author ruoyi
* @date 2023-09-09
*/
@Data
@ExcelIgnoreUnannotated
public
class
MsgInfoVo
{
private
static
final
long
serialVersionUID
=
1L
;
/**
* 消息id
*/
@ExcelProperty
(
value
=
"消息id"
)
private
Long
id
;
/**
* 消息发送者id
*/
@ExcelProperty
(
value
=
"消息发送者id"
)
private
Long
fromUserId
;
/**
* 消息发送者名称
*/
@ExcelProperty
(
value
=
"消息发送者名称"
)
private
String
fromUserName
;
/**
* 消息接收者id
*/
@ExcelProperty
(
value
=
"消息接收者id"
)
private
Long
toUserId
;
/**
* 消息接收者名称
*/
@ExcelProperty
(
value
=
"消息接收者名称"
)
private
String
toUserName
;
/**
* 消息内容
*/
@ExcelProperty
(
value
=
"消息内容"
)
private
String
content
;
/**
* 是否已读(1 已读)
*/
@ExcelProperty
(
value
=
"是否已读"
,
converter
=
ExcelDictConvert
.
class
)
@ExcelDictFormat
(
readConverterExp
=
"1=,已=读"
)
private
Long
unReadFlag
;
}
pz-system/src/main/java/com/pz/system/domain/vo/TotalOrderVo.java
View file @
d1a52aea
...
...
@@ -176,4 +176,9 @@ public class TotalOrderVo {
*/
private
String
phone
;
/**
* 陪护项目
*/
private
String
project
;
}
pz-system/src/main/java/com/pz/system/mapper/InformationMapper.java
View file @
d1a52aea
...
...
@@ -3,6 +3,7 @@ package com.pz.system.mapper;
import
com.pz.system.domain.Information
;
import
com.pz.system.domain.vo.InformationVo
;
import
com.pz.common.core.mapper.BaseMapperPlus
;
import
org.apache.ibatis.annotations.Mapper
;
/**
* 新闻资讯Mapper接口
...
...
@@ -10,6 +11,7 @@ import com.pz.common.core.mapper.BaseMapperPlus;
* @author ruoyi
* @date 2023-09-07
*/
@Mapper
public
interface
InformationMapper
extends
BaseMapperPlus
<
InformationMapper
,
Information
,
InformationVo
>
{
}
pz-system/src/main/java/com/pz/system/mapper/MessageMapper.java
0 → 100644
View file @
d1a52aea
package
com
.
pz
.
system
.
mapper
;
import
com.pz.common.core.mapper.BaseMapperPlus
;
import
com.pz.system.domain.Information
;
import
com.pz.system.domain.Message
;
import
com.pz.system.domain.vo.InformationVo
;
import
com.pz.system.domain.vo.MessageVo
;
import
org.apache.ibatis.annotations.Mapper
;
/**
* 聊天消息Mapper接口
*/
@Mapper
public
interface
MessageMapper
extends
BaseMapperPlus
<
MessageMapper
,
Message
,
MessageVo
>
{
}
pz-system/src/main/java/com/pz/system/mapper/MsgInfoMapper.java
deleted
100644 → 0
View file @
ed6444ac
package
com
.
pz
.
system
.
mapper
;
import
com.pz.system.domain.MsgInfo
;
import
com.pz.system.domain.vo.MsgInfoVo
;
import
com.pz.common.core.mapper.BaseMapperPlus
;
/**
* 消息Mapper接口
*
* @author ruoyi
* @date 2023-09-09
*/
public
interface
MsgInfoMapper
extends
BaseMapperPlus
<
MsgInfoMapper
,
MsgInfo
,
MsgInfoVo
>
{
}
pz-system/src/main/java/com/pz/system/service/ICityService.java
View file @
d1a52aea
...
...
@@ -33,6 +33,13 @@ public interface ICityService {
List
<
CityVo
>
queryList
(
CityBo
bo
);
/**
* 小程序城市接口
* @param bo
* @return
*/
List
<
CityVo
>
queryAppList
(
CityBo
bo
);
/**
* 新增城市
*/
Boolean
insertByBo
(
CityBo
bo
);
...
...
pz-system/src/main/java/com/pz/system/service/IDepartmentService.java
View file @
d1a52aea
...
...
@@ -32,7 +32,7 @@ public interface IDepartmentService {
* @param
* @return
*/
List
<
Department
>
departmentByHospitalId
(
Integer
hospitalId
);
List
<
Department
Vo
>
departmentByHospitalId
(
Integer
hospitalId
);
/**
* 查询科室列表
...
...
pz-system/src/main/java/com/pz/system/service/IMessageService.java
0 → 100644
View file @
d1a52aea
package
com
.
pz
.
system
.
service
;
public
interface
IMessageService
{
}
pz-system/src/main/java/com/pz/system/service/IMsgInfoService.java
deleted
100644 → 0
View file @
ed6444ac
package
com
.
pz
.
system
.
service
;
import
com.pz.system.domain.MsgInfo
;
import
com.pz.system.domain.vo.MsgInfoVo
;
import
com.pz.system.domain.bo.MsgInfoBo
;
import
com.pz.common.core.page.TableDataInfo
;
import
com.pz.common.core.domain.PageQuery
;
import
java.util.Collection
;
import
java.util.List
;
/**
* 消息Service接口
*
* @author ruoyi
* @date 2023-09-09
*/
public
interface
IMsgInfoService
{
/**
* 查询消息
*/
MsgInfoVo
queryById
(
Long
id
);
/**
* 查询消息列表
*/
TableDataInfo
<
MsgInfoVo
>
queryPageList
(
MsgInfoBo
bo
,
PageQuery
pageQuery
);
/**
* 查询消息列表
*/
List
<
MsgInfoVo
>
queryList
(
MsgInfoBo
bo
);
/**
* 新增消息
*/
Boolean
insertByBo
(
MsgInfoBo
bo
);
/**
* 修改消息
*/
Boolean
updateByBo
(
MsgInfoBo
bo
);
/**
* 校验并批量删除消息信息
*/
Boolean
deleteWithValidByIds
(
Collection
<
Long
>
ids
,
Boolean
isValid
);
}
pz-system/src/main/java/com/pz/system/service/IPayService.java
View file @
d1a52aea
package
com
.
pz
.
system
.
service
;
import
com.github.binarywang.wxpay.bean.notify.WxPayOrderNotifyResult
;
import
com.github.binarywang.wxpay.bean.request.WxPayRefundQueryRequest
;
import
com.github.binarywang.wxpay.bean.request.WxPayRefundRequest
;
import
com.github.binarywang.wxpay.bean.request.WxPayUnifiedOrderRequest
;
...
...
@@ -86,7 +87,7 @@ public interface IPayService {
* 微信请求的接口,要求可以公网访问,要放开token校验
* @param xmlData 微信提交的请求参数
*/
String
parseOrderNotifyResult
(
String
xmlData
)
throws
WxPayException
;
WxPayOrderNotifyResult
parseOrderNotifyResult
(
String
xmlData
)
throws
WxPayException
;
/**
* 退款回调通知处理
...
...
pz-system/src/main/java/com/pz/system/service/IStoreApplyService.java
View file @
d1a52aea
...
...
@@ -23,6 +23,12 @@ public interface IStoreApplyService {
StoreApplyVo
queryById
(
Integer
id
);
/**
* 小程序查看商户申请状态
* @return
*/
StoreApplyVo
queryByUserId
();
/**
* 查询商城商户申请列表
*/
TableDataInfo
<
StoreApplyVo
>
queryPageList
(
StoreApplyBo
bo
,
PageQuery
pageQuery
);
...
...
pz-system/src/main/java/com/pz/system/service/ITotalOrderService.java
View file @
d1a52aea
...
...
@@ -70,6 +70,13 @@ public interface ITotalOrderService {
Boolean
cancelOrder
(
TotalOrderBo
bo
);
/**
* 统一下单接口
* @param bo
* @return
*/
Object
payOrder
(
TotalOrderBo
bo
);
/**
* 用户主动退款
*
* @param bo
...
...
pz-system/src/main/java/com/pz/system/service/SysLoginService.java
View file @
d1a52aea
...
...
@@ -171,7 +171,7 @@ public class SysLoginService {
sysUser
.
setUserName
(
loginBo
.
getMobilePhone
());
String
nikeName
=
StringUtils
.
isNoneBlank
(
loginBo
.
getNikeName
())
?
loginBo
.
getNikeName
()
:
"用户"
+
RandomUtil
.
randomString
(
8
);
sysUser
.
setNickName
(
nikeName
);
sysUser
.
setUserType
(
UserType
.
APP
_USER
.
getUserType
());
sysUser
.
setUserType
(
UserType
.
SYS
_USER
.
getUserType
());
sysUser
.
setSex
(
"2"
);
// 初始密码为123456
sysUser
.
setPassword
(
BCrypt
.
hashpw
(
"123456"
));
...
...
pz-system/src/main/java/com/pz/system/service/impl/CityServiceImpl.java
View file @
d1a52aea
...
...
@@ -58,6 +58,13 @@ public class CityServiceImpl implements ICityService {
return
baseMapper
.
selectVoList
(
lqw
);
}
@Override
public
List
<
CityVo
>
queryAppList
(
CityBo
bo
)
{
LambdaQueryWrapper
<
City
>
lqw
=
buildQueryWrapper
(
bo
);
List
<
CityVo
>
cityVos
=
baseMapper
.
selectVoList
(
lqw
);
return
null
;
}
private
LambdaQueryWrapper
<
City
>
buildQueryWrapper
(
CityBo
bo
)
{
LambdaQueryWrapper
<
City
>
lqw
=
Wrappers
.
lambdaQuery
();
lqw
.
like
(
StringUtils
.
isNotBlank
(
bo
.
getName
()),
City:
:
getName
,
bo
.
getName
());
...
...
pz-system/src/main/java/com/pz/system/service/impl/DepartmentServiceImpl.java
View file @
d1a52aea
...
...
@@ -86,7 +86,7 @@ public class DepartmentServiceImpl implements IDepartmentService {
}
@Override
public
List
<
Department
>
departmentByHospitalId
(
Integer
hospitalId
)
{
public
List
<
Department
Vo
>
departmentByHospitalId
(
Integer
hospitalId
)
{
Hospital
hospital
=
hospitalMapper
.
selectById
(
hospitalId
);
// 去除方括号
String
numbers
=
hospital
.
getDepartments
().
substring
(
1
,
hospital
.
getDepartments
().
length
()
-
1
);
...
...
@@ -99,15 +99,39 @@ public class DepartmentServiceImpl implements IDepartmentService {
for
(
String
num
:
numberArray
)
{
integerList
.
add
(
Integer
.
parseInt
(
num
.
trim
()));
}
List
<
Department
>
departments
=
baseMapper
.
selectList
(
new
LambdaQueryWrapper
<
Department
>().
in
(
Department:
:
getId
,
integerList
));
List
<
DepartmentVo
>
departments
=
baseMapper
.
selectVoList
(
new
LambdaQueryWrapper
<
Department
>().
in
(
Department:
:
getId
,
integerList
));
if
(
CollectionUtils
.
isNotEmpty
(
departments
))
{
//查询所有菜单
List
<
DepartmentVo
>
allMenu
=
departments
;
// 对父菜单进行排序
Collections
.
sort
(
allMenu
,
new
Comparator
<
DepartmentVo
>()
{
@Override
public
int
compare
(
DepartmentVo
o1
,
DepartmentVo
o2
)
{
// 根据需要进行排序比较,可以根据实际情况修改
return
Integer
.
compare
(
o1
.
getSortord
(),
o2
.
getSortord
());
}
});
if
(
null
!=
departments
){
for
(
Department
department
:
departments
)
{
department
.
setValue
(
department
.
getId
());
department
.
setText
(
department
.
getTitle
());
//根节点集合
List
<
DepartmentVo
>
rootMenu
=
new
ArrayList
<>();
for
(
DepartmentVo
entity
:
allMenu
)
{
entity
.
setLabel
(
entity
.
getTitle
());
entity
.
setValue
(
entity
.
getId
());
entity
.
setText
(
entity
.
getTitle
());
if
(
entity
.
getParentId
()
==
0
)
{
//父节点是0的,为根节点。
rootMenu
.
add
(
entity
);
}
}
//为根菜单设置子菜单,getClild是递归调用的
for
(
DepartmentVo
entity
:
rootMenu
)
{
entity
.
setLabel
(
entity
.
getTitle
());
/* 获取根节点下的所有子节点 使用getChild方法*/
List
<
DepartmentVo
>
childList
=
getChild
(
entity
.
getId
().
toString
(),
allMenu
);
entity
.
setChildren
(
childList
);
//给根节点设置子节点
}
return
rootMenu
;
}
return
departments
;
}
...
...
pz-system/src/main/java/com/pz/system/service/impl/MessageServiceImpl.java
0 → 100644
View file @
d1a52aea
package
com
.
pz
.
system
.
service
.
impl
;
import
cn.hutool.core.bean.BeanUtil
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.toolkit.CollectionUtils
;
import
com.baomidou.mybatisplus.core.toolkit.StringUtils
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.pz.system.domain.Department
;
import
com.pz.system.domain.Hospital
;
import
com.pz.system.domain.bo.DepartmentBo
;
import
com.pz.system.domain.vo.DepartmentVo
;
import
com.pz.system.mapper.DepartmentMapper
;
import
com.pz.system.mapper.HospitalMapper
;
import
com.pz.system.service.IDepartmentService
;
import
com.pz.system.service.IMessageService
;
import
lombok.RequiredArgsConstructor
;
import
org.springframework.stereotype.Service
;
import
java.util.*
;
/**
* 科室Service业务层处理
*
* @author ruoyi
* @date 2023-09-07
*/
@RequiredArgsConstructor
@Service
public
class
MessageServiceImpl
implements
IMessageService
{
}
pz-system/src/main/java/com/pz/system/service/impl/MsgInfoServiceImpl.java
deleted
100644 → 0
View file @
ed6444ac
package
com
.
pz
.
system
.
service
.
impl
;
import
cn.hutool.core.bean.BeanUtil
;
import
com.baomidou.mybatisplus.core.toolkit.StringUtils
;
import
com.pz.common.core.page.TableDataInfo
;
import
com.pz.common.core.domain.PageQuery
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
lombok.RequiredArgsConstructor
;
import
org.springframework.stereotype.Service
;
import
com.pz.system.domain.bo.MsgInfoBo
;
import
com.pz.system.domain.vo.MsgInfoVo
;
import
com.pz.system.domain.MsgInfo
;
import
com.pz.system.mapper.MsgInfoMapper
;
import
com.pz.system.service.IMsgInfoService
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Collection
;
/**
* 消息Service业务层处理
*
* @author ruoyi
* @date 2023-09-09
*/
@RequiredArgsConstructor
@Service
public
class
MsgInfoServiceImpl
implements
IMsgInfoService
{
private
final
MsgInfoMapper
baseMapper
;
/**
* 查询消息
*/
@Override
public
MsgInfoVo
queryById
(
Long
id
){
return
baseMapper
.
selectVoById
(
id
);
}
/**
* 查询消息列表
*/
@Override
public
TableDataInfo
<
MsgInfoVo
>
queryPageList
(
MsgInfoBo
bo
,
PageQuery
pageQuery
)
{
LambdaQueryWrapper
<
MsgInfo
>
lqw
=
buildQueryWrapper
(
bo
);
Page
<
MsgInfoVo
>
result
=
baseMapper
.
selectVoPage
(
pageQuery
.
build
(),
lqw
);
return
TableDataInfo
.
build
(
result
);
}
/**
* 查询消息列表
*/
@Override
public
List
<
MsgInfoVo
>
queryList
(
MsgInfoBo
bo
)
{
LambdaQueryWrapper
<
MsgInfo
>
lqw
=
buildQueryWrapper
(
bo
);
return
baseMapper
.
selectVoList
(
lqw
);
}
private
LambdaQueryWrapper
<
MsgInfo
>
buildQueryWrapper
(
MsgInfoBo
bo
)
{
Map
<
String
,
Object
>
params
=
bo
.
getParams
();
LambdaQueryWrapper
<
MsgInfo
>
lqw
=
Wrappers
.
lambdaQuery
();
lqw
.
eq
(
bo
.
getFromUserId
()
!=
null
,
MsgInfo:
:
getFromUserId
,
bo
.
getFromUserId
());
lqw
.
like
(
StringUtils
.
isNotBlank
(
bo
.
getFromUserName
()),
MsgInfo:
:
getFromUserName
,
bo
.
getFromUserName
());
lqw
.
eq
(
bo
.
getToUserId
()
!=
null
,
MsgInfo:
:
getToUserId
,
bo
.
getToUserId
());
lqw
.
like
(
StringUtils
.
isNotBlank
(
bo
.
getToUserName
()),
MsgInfo:
:
getToUserName
,
bo
.
getToUserName
());
lqw
.
eq
(
StringUtils
.
isNotBlank
(
bo
.
getContent
()),
MsgInfo:
:
getContent
,
bo
.
getContent
());
lqw
.
eq
(
bo
.
getUnReadFlag
()
!=
null
,
MsgInfo:
:
getUnReadFlag
,
bo
.
getUnReadFlag
());
return
lqw
;
}
/**
* 新增消息
*/
@Override
public
Boolean
insertByBo
(
MsgInfoBo
bo
)
{
MsgInfo
add
=
BeanUtil
.
toBean
(
bo
,
MsgInfo
.
class
);
validEntityBeforeSave
(
add
);
boolean
flag
=
baseMapper
.
insert
(
add
)
>
0
;
if
(
flag
)
{
bo
.
setId
(
add
.
getId
());
}
return
flag
;
}
/**
* 修改消息
*/
@Override
public
Boolean
updateByBo
(
MsgInfoBo
bo
)
{
MsgInfo
update
=
BeanUtil
.
toBean
(
bo
,
MsgInfo
.
class
);
validEntityBeforeSave
(
update
);
return
baseMapper
.
updateById
(
update
)
>
0
;
}
/**
* 保存前的数据校验
*/
private
void
validEntityBeforeSave
(
MsgInfo
entity
){
//TODO 做一些数据校验,如唯一约束
}
/**
* 批量删除消息
*/
@Override
public
Boolean
deleteWithValidByIds
(
Collection
<
Long
>
ids
,
Boolean
isValid
)
{
if
(
isValid
){
//TODO 做一些业务上的校验,判断是否需要校验
}
return
baseMapper
.
deleteBatchIds
(
ids
)
>
0
;
}
}
pz-system/src/main/java/com/pz/system/service/impl/PayServiceImpl.java
View file @
d1a52aea
...
...
@@ -104,11 +104,11 @@ public class PayServiceImpl implements IPayService {
* @throws WxPayException
*/
@Override
public
String
parseOrderNotifyResult
(
String
xmlData
)
throws
WxPayException
{
public
WxPayOrderNotifyResult
parseOrderNotifyResult
(
String
xmlData
)
throws
WxPayException
{
// 参数解析
final
WxPayOrderNotifyResult
notifyResult
=
this
.
wxService
.
parseOrderNotifyResult
(
xmlData
);
// TODO 根据自己业务场景需要构造返回对象
return
WxPayNotifyResponse
.
success
(
"成功"
)
;
return
notifyResult
;
}
/**
...
...
pz-system/src/main/java/com/pz/system/service/impl/SessionListServiceImpl.java
View file @
d1a52aea
...
...
@@ -63,7 +63,6 @@ public class SessionListServiceImpl implements ISessionListService {
LambdaQueryWrapper
<
SessionList
>
lqw
=
Wrappers
.
lambdaQuery
();
lqw
.
eq
(
bo
.
getUserId
()
!=
null
,
SessionList:
:
getUserId
,
bo
.
getUserId
());
lqw
.
eq
(
bo
.
getToUserId
()
!=
null
,
SessionList:
:
getToUserId
,
bo
.
getToUserId
());
lqw
.
like
(
StringUtils
.
isNotBlank
(
bo
.
getListName
()),
SessionList:
:
getListName
,
bo
.
getListName
());
lqw
.
eq
(
bo
.
getUnReadCount
()
!=
null
,
SessionList:
:
getUnReadCount
,
bo
.
getUnReadCount
());
return
lqw
;
}
...
...
pz-system/src/main/java/com/pz/system/service/impl/StoreApplyServiceImpl.java
View file @
d1a52aea
...
...
@@ -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.toolkit.Wrappers
;
import
com.pz.common.enums.UserType
;
import
com.pz.common.helper.LoginHelper
;
import
com.pz.system.domain.StoreInfo
;
import
com.pz.system.mapper.StoreInfoMapper
;
import
com.pz.system.mapper.SysUserMapper
;
...
...
@@ -52,6 +53,11 @@ public class StoreApplyServiceImpl implements IStoreApplyService {
return
baseMapper
.
selectVoById
(
id
);
}
@Override
public
StoreApplyVo
queryByUserId
()
{
return
baseMapper
.
selectVoOne
(
new
LambdaQueryWrapper
<
StoreApply
>().
eq
(
StoreApply:
:
getUid
,
LoginHelper
.
getLoginUser
().
getUserId
()));
}
/**
* 查询商城商户申请列表
*/
...
...
@@ -107,6 +113,7 @@ public class StoreApplyServiceImpl implements IStoreApplyService {
public
Boolean
insertByBo
(
StoreApplyBo
bo
)
{
StoreApply
add
=
BeanUtil
.
toBean
(
bo
,
StoreApply
.
class
);
validEntityBeforeSave
(
add
);
bo
.
setUid
(
LoginHelper
.
getLoginUser
().
getUserId
().
intValue
());
boolean
flag
=
baseMapper
.
insert
(
add
)
>
0
;
if
(
flag
)
{
bo
.
setId
(
add
.
getId
());
...
...
pz-system/src/main/java/com/pz/system/service/impl/StoreGoodsServiceImpl.java
View file @
d1a52aea
...
...
@@ -103,6 +103,21 @@ public class StoreGoodsServiceImpl implements IStoreGoodsService {
public
TableDataInfo
<
StoreGoodsVo
>
shopAppShop
(
StoreGoodsBo
bo
,
PageQuery
pageQuery
)
{
LambdaQueryWrapper
<
StoreGoods
>
lqw
=
buildQueryWrapper
(
bo
);
Page
<
StoreGoodsVo
>
result
=
baseMapper
.
selectVoPage
(
pageQuery
.
build
(),
lqw
);
Optional
.
ofNullable
(
result
.
getRecords
()).
ifPresent
(
storeGoodsVos
->
{
storeGoodsVos
.
forEach
(
storeGoodsVo
->
{
if
(
StringUtils
.
isNotBlank
(
storeGoodsVo
.
getTags
()))
{
List
<
Integer
>
ids
=
JsonUtils
.
parseArray
(
storeGoodsVo
.
getTags
(),
Integer
.
class
);
//查询商品标签
storeGoodsVo
.
setList
(
goodsTagMapper
.
selectVoList
(
new
LambdaQueryWrapper
<
StoreGoodsTag
>().
in
(
StoreGoodsTag:
:
getId
,
ids
)));
}
if
(
null
!=
storeGoodsVo
.
getCategoryId
())
{
Optional
.
ofNullable
(
storeGoodsCategoryMapper
.
selectVoById
(
storeGoodsVo
.
getCategoryId
()))
.
ifPresent
(
storeGoodsCategoryVo
->
{
storeGoodsVo
.
setTypeName
(
storeGoodsCategoryVo
.
getTitle
());
});
}
});
});
return
TableDataInfo
.
build
(
result
);
}
...
...
@@ -110,6 +125,21 @@ public class StoreGoodsServiceImpl implements IStoreGoodsService {
public
TableDataInfo
<
StoreGoodsVo
>
searchAppShop
(
StoreGoodsBo
bo
,
PageQuery
pageQuery
)
{
LambdaQueryWrapper
<
StoreGoods
>
lqw
=
buildQueryWrapper
(
bo
);
Page
<
StoreGoodsVo
>
result
=
baseMapper
.
selectVoPage
(
pageQuery
.
build
(),
lqw
);
Optional
.
ofNullable
(
result
.
getRecords
()).
ifPresent
(
storeGoodsVos
->
{
storeGoodsVos
.
forEach
(
storeGoodsVo
->
{
if
(
StringUtils
.
isNotBlank
(
storeGoodsVo
.
getTags
()))
{
List
<
Integer
>
ids
=
JsonUtils
.
parseArray
(
storeGoodsVo
.
getTags
(),
Integer
.
class
);
//查询商品标签
storeGoodsVo
.
setList
(
goodsTagMapper
.
selectVoList
(
new
LambdaQueryWrapper
<
StoreGoodsTag
>().
in
(
StoreGoodsTag:
:
getId
,
ids
)));
}
if
(
null
!=
storeGoodsVo
.
getCategoryId
())
{
Optional
.
ofNullable
(
storeGoodsCategoryMapper
.
selectVoById
(
storeGoodsVo
.
getCategoryId
()))
.
ifPresent
(
storeGoodsCategoryVo
->
{
storeGoodsVo
.
setTypeName
(
storeGoodsCategoryVo
.
getTitle
());
});
}
});
});
return
TableDataInfo
.
build
(
result
);
}
...
...
@@ -142,7 +172,7 @@ public class StoreGoodsServiceImpl implements IStoreGoodsService {
LambdaQueryWrapper
<
StoreGoods
>
lqw
=
Wrappers
.
lambdaQuery
();
lqw
.
eq
(
bo
.
getCityId
()
!=
null
,
StoreGoods:
:
getCityId
,
bo
.
getCityId
());
lqw
.
eq
(
bo
.
getStoreId
()
!=
null
,
StoreGoods:
:
getStoreId
,
bo
.
getStoreId
());
lqw
.
eq
(
StringUtils
.
isNotBlank
(
bo
.
getTitle
()),
StoreGoods:
:
getTitle
,
bo
.
getTitle
());
lqw
.
like
(
StringUtils
.
isNotBlank
(
bo
.
getTitle
()),
StoreGoods:
:
getTitle
,
bo
.
getTitle
());
lqw
.
eq
(
StringUtils
.
isNotBlank
(
bo
.
getPrice
()),
StoreGoods:
:
getPrice
,
bo
.
getPrice
());
lqw
.
eq
(
StringUtils
.
isNotBlank
(
bo
.
getSalePrice
()),
StoreGoods:
:
getSalePrice
,
bo
.
getSalePrice
());
lqw
.
eq
(
StringUtils
.
isNotBlank
(
bo
.
getSmallCover
()),
StoreGoods:
:
getSmallCover
,
bo
.
getSmallCover
());
...
...
pz-system/src/main/java/com/pz/system/service/impl/TotalOrderServiceImpl.java
View file @
d1a52aea
...
...
@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import
com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.core.toolkit.StringUtils
;
import
com.github.binarywang.wxpay.bean.request.WxPayUnifiedOrderRequest
;
import
com.pz.common.core.domain.model.LoginUser
;
import
com.pz.common.core.page.TableDataInfo
;
import
com.pz.common.core.domain.PageQuery
;
...
...
@@ -13,6 +14,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import
com.pz.common.enums.CommonOrderStatus
;
import
com.pz.common.enums.DBMYOrderStatus
;
import
com.pz.common.enums.ShopOrderStatus
;
import
com.pz.common.enums.TotalOrderStatus
;
import
com.pz.common.exception.ServiceException
;
import
com.pz.merchant.domain.vo.SonOrderVo
;
import
com.pz.merchant.service.ISonOrderService
;
...
...
@@ -22,6 +24,7 @@ import com.pz.system.domain.*;
import
com.pz.system.domain.bo.CreateOrderBo
;
import
com.pz.system.domain.vo.AccompanyDemandVo
;
import
com.pz.system.mapper.*
;
import
com.pz.system.service.IPayService
;
import
lombok.RequiredArgsConstructor
;
import
org.springframework.stereotype.Service
;
import
com.pz.system.domain.bo.TotalOrderBo
;
...
...
@@ -29,6 +32,7 @@ import com.pz.system.domain.vo.TotalOrderVo;
import
com.pz.system.service.ITotalOrderService
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.math.BigDecimal
;
import
java.util.*
;
/**
...
...
@@ -68,17 +72,72 @@ public class TotalOrderServiceImpl implements ITotalOrderService {
private
final
StoreGoodsMapper
storeGoodsMapper
;
private
final
IPayService
iPayService
;
private
final
SysUserMapper
sysUserMapper
;
@Override
public
TotalOrderVo
queryById
(
Long
id
)
{
return
baseMapper
.
selectVoById
(
id
);
}
/**
* 查询总订单
* 查询总订单
详情
*/
@Override
public
TotalOrderVo
queryByAppId
(
Integer
id
)
{
TotalOrderVo
totalOrderVo
=
baseMapper
.
selectByOrderId
(
id
);
if
(
totalOrderVo
.
getBusinessId
()
==
1
){
//预约陪诊
totalOrderVo
.
setServiceStatus
(
yypzOrderMapper
.
selectOne
(
new
LambdaQueryWrapper
<
YypzOrder
>().
eq
(
YypzOrder:
:
getOrderId
,
totalOrderVo
.
getId
())).
getStatus
()
);
}
else
if
(
totalOrderVo
.
getBusinessId
()
==
2
){
//代办挂号
totalOrderVo
.
setServiceStatus
(
dbghOrderMapper
.
selectOne
(
new
LambdaQueryWrapper
<
DbghOrder
>().
eq
(
DbghOrder:
:
getOrderId
,
totalOrderVo
.
getId
())).
getStatus
()
);
}
else
if
(
totalOrderVo
.
getBusinessId
()
==
3
){
//代办问诊
totalOrderVo
.
setServiceStatus
(
dbwzOrderMapper
.
selectOne
(
new
LambdaQueryWrapper
<
DbwzOrder
>().
eq
(
DbwzOrder:
:
getOrderId
,
totalOrderVo
.
getId
())).
getStatus
()
);
}
else
if
(
totalOrderVo
.
getBusinessId
()
==
4
){
//住院陪护
totalOrderVo
.
setServiceStatus
(
zyphOrderMapper
.
selectOne
(
new
LambdaQueryWrapper
<
ZyphOrder
>().
eq
(
ZyphOrder:
:
getOrderId
,
totalOrderVo
.
getId
())).
getStatus
()
);
}
else
if
(
totalOrderVo
.
getBusinessId
()
==
5
){
//代办买药
totalOrderVo
.
setServiceStatus
(
dbmyOrderMapper
.
selectOne
(
new
LambdaQueryWrapper
<
DbmyOrder
>().
eq
(
DbmyOrder:
:
getOrderId
,
totalOrderVo
.
getId
())).
getStatus
()
);
}
else
if
(
totalOrderVo
.
getBusinessId
()
==
6
){
//诊前挂号
totalOrderVo
.
setServiceStatus
(
zqghOrderMapper
.
selectOne
(
new
LambdaQueryWrapper
<
ZqghOrder
>().
eq
(
ZqghOrder:
:
getOrderId
,
totalOrderVo
.
getId
())).
getStatus
()
);
}
else
if
(
totalOrderVo
.
getBusinessId
()
==
0
){
//商城订单
StoreOrder
storeOrder
=
storeOrderMapper
.
selectOne
(
new
LambdaQueryWrapper
<
StoreOrder
>().
eq
(
StoreOrder:
:
getOrderId
,
totalOrderVo
.
getId
()));
totalOrderVo
.
setServiceStatus
(
storeOrder
.
getStatus
()
);
StoreGoods
storeGoods
=
storeGoodsMapper
.
selectById
(
storeOrder
.
getOrderId
());
List
<
StoreGoodsTag
>
storeGoodsTags
=
storeGoodsTagMapper
.
selectList
(
new
LambdaQueryWrapper
<
StoreGoodsTag
>().
in
(
StoreGoodsTag:
:
getId
,
getTages
(
storeGoods
.
getTags
())).
select
(
StoreGoodsTag:
:
getTitle
));
totalOrderVo
.
setTags
(
storeGoodsTags
);
}
return
totalOrderVo
;
}
...
...
@@ -219,27 +278,35 @@ public class TotalOrderServiceImpl implements ITotalOrderService {
baseMapper
.
insert
(
totalOrder
);
bo
.
setOrderId
(
totalOrder
.
getId
().
intValue
());
totalOrderVo
.
setOrderSn
(
orderSn
);
totalOrderVo
.
setOrderSn
(
totalOrder
.
getId
()+
""
);
totalOrderVo
.
setPayMoney
(
bo
.
getPayMoney
());
if
(
bo
.
getBusinessId
()
==
1
)
{
// 预约陪诊
YypzOrder
yypzOrder
=
BeanUtil
.
toBean
(
bo
,
YypzOrder
.
class
);
yypzOrder
.
setHid
(
bo
.
getHospitalId
());
yypzOrderMapper
.
insert
(
yypzOrder
);
}
else
if
(
bo
.
getBusinessId
()
==
2
)
{
// 代办挂号
DbghOrder
dbghOrder
=
BeanUtil
.
toBean
(
bo
,
DbghOrder
.
class
);
dbghOrder
.
setHid
(
bo
.
getHospitalId
());
dbghOrder
.
setDid
(
bo
.
getDepartmentId
());
dbghOrderMapper
.
insert
(
dbghOrder
);
}
else
if
(
bo
.
getBusinessId
()
==
3
)
{
// 代办问诊
DbwzOrder
dbwzOrder
=
BeanUtil
.
toBean
(
bo
,
DbwzOrder
.
class
);
dbwzOrder
.
setDid
(
bo
.
getDepartmentId
());
dbwzOrder
.
setVisitor
(
bo
.
getVisitorId
());
dbwzOrderMapper
.
insert
(
dbwzOrder
);
}
else
if
(
bo
.
getBusinessId
()
==
4
)
{
// 住院陪护
ZyphOrder
zyphOrder
=
BeanUtil
.
toBean
(
bo
,
ZyphOrder
.
class
);
zyphOrder
.
setDid
(
bo
.
getDepartmentId
());
zyphOrder
.
setVisitor
(
bo
.
getVisitorId
());
zyphOrderMapper
.
insert
(
zyphOrder
);
}
else
if
(
bo
.
getBusinessId
()
==
5
)
{
// 代办买药
...
...
@@ -274,11 +341,38 @@ public class TotalOrderServiceImpl implements ITotalOrderService {
@Override
public
Boolean
cancelOrder
(
TotalOrderBo
bo
)
{
TotalOrder
totalOrder
=
baseMapper
.
selectById
(
bo
.
getId
());
if
(
totalOrder
.
getBusinessId
()
==
1
)
{
// 预约陪诊
yypzOrderMapper
.
selectOne
(
new
LambdaQueryWrapper
<
YypzOrder
>().
eq
(
YypzOrder:
:
getOrderId
,
totalOrder
));
if
(
null
!=
totalOrder
.
getEmId
()
&&
totalOrder
.
getEmId
()
!=
0
){
//预约陪诊
//yypzOrderMapper.selectOne(new LambdaQueryWrapper<YypzOrder>().eq(YypzOrder::getOrderId,totalOrder));
totalOrder
.
setStatus
(
TotalOrderStatus
.
CANCEL
.
getCode
());
return
baseMapper
.
updateById
(
totalOrder
)
>
0
;
}
else
{
throw
new
ServiceException
(
"该订单已分配给陪诊员,不允许取消订单!"
);
}
return
baseMapper
.
updateById
(
totalOrder
)
>
0
;
}
@Override
public
Object
payOrder
(
TotalOrderBo
bo
)
{
LoginUser
loginUser
=
LoginHelper
.
getLoginUser
();
TotalOrder
totalOrder
=
baseMapper
.
selectById
(
Integer
.
parseInt
(
bo
.
getOrderSn
()));
Object
payment
=
null
;
int
money
=
(
int
)
(
totalOrder
.
getPayMoney
()
*
100
);
try
{
WxPayUnifiedOrderRequest
orderRequest
=
new
WxPayUnifiedOrderRequest
();
orderRequest
.
setBody
(
bo
.
getOrderTitle
());
orderRequest
.
setOutTradeNo
(
totalOrder
.
getOrderSn
());
orderRequest
.
setTotalFee
(
money
);
//元转成分
orderRequest
.
setOpenid
(
sysUserMapper
.
selectById
(
loginUser
.
getUserId
()).
getOpenId
());
orderRequest
.
setSpbillCreateIp
(
"127.0.0.1"
);
orderRequest
.
setNotifyUrl
(
"http://127.0.0.1:8089/applet/totalOrder/orderPayCallBack"
);
orderRequest
.
setTradeType
(
"JSAPI"
);
payment
=
iPayService
.
createOrder
(
orderRequest
);
}
catch
(
Exception
e
)
{
throw
new
ServiceException
(
"微信支付失败!"
);
}
return
payment
;
}
@Override
...
...
pz-system/src/main/resources/mapper/merchant/EmployeesMapper.xml
View file @
d1a52aea
...
...
@@ -64,19 +64,19 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</select>
<select
id=
"selectEmployees"
resultType=
"com.pz.merchant.domain.vo.EmployeesVo"
>
SELECT e.id, s.avatar ,e.name,e.working_hours,(SUM(CASE WHEN o.is_satisfaction = 1 THEN 1 ELSE 0 END) / NULLIF(COUNT(o.is_satisfaction), 0)) * 100 AS satisfaction_rate
SELECT e.id, s.avatar
as avatar
,e.name,e.working_hours,(SUM(CASE WHEN o.is_satisfaction = 1 THEN 1 ELSE 0 END) / NULLIF(COUNT(o.is_satisfaction), 0)) * 100 AS satisfaction_rate
FROM employees e
left join total_order o on o.em_id = e.id
left join company c on c.id = e.company_id
left join sys_user s on s.user_id = e.uid
WHERE e.`status` = 1 and e.now_type= 1 and e.del_flag= 0
<if
test=
"bo.companyId != null and bo.companyId !=
0
"
>
e.company_id = #{bo.companyId}
<if
test=
"bo.companyId != null and bo.companyId !=
''
"
>
and
e.company_id = #{bo.companyId}
</if>
GROUP BY
e.id,
e.`name`
<if
test=
"bo.favorableRate != null"
>
<if
test=
"bo.favorableRate != null
and bo.favorableRate != ''
"
>
HAVING
satisfaction_rate >= #{bo.favorableRate};
</if>
...
...
pz-system/src/main/resources/mapper/system/SessionListMapper.xml
View file @
d1a52aea
...
...
@@ -8,7 +8,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result
property=
"id"
column=
"id"
/>
<result
property=
"userId"
column=
"user_id"
/>
<result
property=
"toUserId"
column=
"to_user_id"
/>
<result
property=
"listName"
column=
"list_name"
/>
<result
property=
"unReadCount"
column=
"un_read_count"
/>
</resultMap>
<update
id=
"addUnReadCount"
>
...
...
pz-system/src/main/resources/mapper/system/SysUserMapper.xml
View file @
d1a52aea
...
...
@@ -17,6 +17,7 @@
<result
property=
"password"
column=
"password"
/>
<result
property=
"status"
column=
"status"
/>
<result
property=
"delFlag"
column=
"del_flag"
/>
<result
property=
"openId"
column=
"open_id"
/>
<result
property=
"loginIp"
column=
"login_ip"
/>
<result
property=
"loginDate"
column=
"login_date"
/>
<result
property=
"createBy"
column=
"create_by"
/>
...
...
@@ -55,6 +56,7 @@
u.user_type,
u.email,
u.avatar,
u.open_id,
u.phonenumber,
u.password,
u.sex,
...
...
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