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
af97f382
Commit
af97f382
authored
Sep 16, 2023
by
Wangmin
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/dev' into dev
parents
4a964f22
6c8b4b0e
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
86 additions
and
43 deletions
+86
-43
pz-applet/src/main/java/com/pz/applet/AppletSessionListController.java
+54
-13
pz-applet/src/main/java/com/pz/applet/WebSocketOneToOneController.java
+8
-12
pz-system/src/main/java/com/pz/merchant/domain/bo/CompanyBo.java
+0
-14
pz-system/src/main/java/com/pz/system/domain/Message.java
+4
-0
pz-system/src/main/java/com/pz/system/domain/vo/SessionListVo.java
+16
-1
pz-system/src/main/java/com/pz/system/service/impl/MessageServiceImpl.java
+3
-2
pz-system/src/main/resources/mapper/system/SessionListMapper.xml
+1
-1
No files found.
pz-applet/src/main/java/com/pz/applet/AppletSessionListController.java
View file @
af97f382
package
com
.
pz
.
applet
;
package
com
.
pz
.
applet
;
import
cn.dev33.satoken.annotation.SaIgnore
;
import
cn.dev33.satoken.annotation.SaIgnore
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.core.toolkit.CollectionUtils
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.pz.common.annotation.Log
;
import
com.pz.common.annotation.Log
;
import
com.pz.common.annotation.RepeatSubmit
;
import
com.pz.common.annotation.RepeatSubmit
;
...
@@ -8,6 +11,7 @@ import com.pz.common.core.controller.BaseController;
...
@@ -8,6 +11,7 @@ import com.pz.common.core.controller.BaseController;
import
com.pz.common.core.domain.BaseEntity
;
import
com.pz.common.core.domain.BaseEntity
;
import
com.pz.common.core.domain.PageQuery
;
import
com.pz.common.core.domain.PageQuery
;
import
com.pz.common.core.domain.R
;
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.page.TableDataInfo
;
import
com.pz.common.core.validate.AddGroup
;
import
com.pz.common.core.validate.AddGroup
;
import
com.pz.common.enums.BusinessType
;
import
com.pz.common.enums.BusinessType
;
...
@@ -15,6 +19,7 @@ import com.pz.system.domain.Message;
...
@@ -15,6 +19,7 @@ import com.pz.system.domain.Message;
import
com.pz.system.domain.SessionList
;
import
com.pz.system.domain.SessionList
;
import
com.pz.system.domain.bo.SessionListBo
;
import
com.pz.system.domain.bo.SessionListBo
;
import
com.pz.system.domain.vo.AvatarUserNameVo
;
import
com.pz.system.domain.vo.AvatarUserNameVo
;
import
com.pz.system.domain.vo.MessageVo
;
import
com.pz.system.domain.vo.SessionListVo
;
import
com.pz.system.domain.vo.SessionListVo
;
import
com.pz.system.mapper.MessageMapper
;
import
com.pz.system.mapper.MessageMapper
;
import
com.pz.system.mapper.SessionListMapper
;
import
com.pz.system.mapper.SessionListMapper
;
...
@@ -26,6 +31,7 @@ import org.springframework.validation.annotation.Validated;
...
@@ -26,6 +31,7 @@ import org.springframework.validation.annotation.Validated;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.web.bind.annotation.*
;
import
javax.validation.constraints.NotEmpty
;
import
javax.validation.constraints.NotEmpty
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Optional
;
import
java.util.Optional
;
...
@@ -52,7 +58,54 @@ public class AppletSessionListController extends BaseController {
...
@@ -52,7 +58,54 @@ public class AppletSessionListController extends BaseController {
*/
*/
@GetMapping
(
"/list"
)
@GetMapping
(
"/list"
)
public
TableDataInfo
<
SessionListVo
>
list
(
SessionListBo
bo
,
PageQuery
pageQuery
)
{
public
TableDataInfo
<
SessionListVo
>
list
(
SessionListBo
bo
,
PageQuery
pageQuery
)
{
return
sessionListMapper
.
selectVoPage
(
pageQuery
.
build
(),
Wrappers
.<
SessionList
>
lambdaQuery
().
eq
(
SessionList:
:
getUserId
,
getUserId
()).
or
().
eq
(
SessionList:
:
getToUserId
,
getUserId
()));
IPage
<
SessionListVo
>
sessionListVoIPage
=
sessionListMapper
.
selectVoPage
(
pageQuery
.
build
(),
Wrappers
.<
SessionList
>
lambdaQuery
().
eq
(
SessionList:
:
getUserId
,
getUserId
()).
or
().
eq
(
SessionList:
:
getToUserId
,
getUserId
()));
List
<
SessionListVo
>
records
=
sessionListVoIPage
.
getRecords
();
if
(
CollectionUtils
.
isNotEmpty
(
records
))
{
Long
userId
=
getUserId
();
List
<
SessionListVo
>
recordsToRemove
=
new
ArrayList
<>();
records
.
forEach
(
sessionListVo
->
{
Long
toUserId
=
sessionListVo
.
getToUserId
();
Long
fromUserId
=
sessionListVo
.
getUserId
();
if
(
fromUserId
==
userId
||
toUserId
==
userId
)
{
Long
targetUserId
=
(
fromUserId
==
userId
)
?
toUserId
:
fromUserId
;
sessionListVo
.
setToUserId
(
targetUserId
);
Optional
<
SysUser
>
optionalSysUser
=
Optional
.
ofNullable
(
sysUserMapper
.
selectUserById
(
targetUserId
));
optionalSysUser
.
ifPresent
(
sysUser
->
{
sessionListVo
.
setToUserName
(
sysUser
.
getNickName
());
sessionListVo
.
setToAvatar
(
sysUser
.
getAvatar
());
});
//获取未读消息数以及最后消息时间
List
<
MessageVo
>
messageVos
=
messageMapper
.
selectVoList
(
Wrappers
.<
Message
>
lambdaQuery
()
.
eq
(
Message:
:
getSender
,
targetUserId
)
.
eq
(
Message:
:
getReceiver
,
getUserId
())
.
eq
(
Message:
:
getIsRead
,
0
)
.
orderByDesc
(
Message:
:
getCreateTime
));
if
(
CollectionUtils
.
isNotEmpty
(
messageVos
))
{
//未读消息数
sessionListVo
.
setUnReadCount
(
messageVos
.
size
());
//最后发送消息时间
sessionListVo
.
setLastTime
(
messageVos
.
get
(
0
).
getCreateTime
());
//消息内容
sessionListVo
.
setMessage
(
messageVos
.
get
(
0
).
getContent
());
}
else
{
List
<
MessageVo
>
messageVoList
=
messageMapper
.
selectVoList
(
Wrappers
.<
Message
>
lambdaQuery
()
.
eq
(
Message:
:
getSender
,
targetUserId
)
.
eq
(
Message:
:
getReceiver
,
getUserId
())
.
eq
(
Message:
:
getIsRead
,
1
)
.
orderByDesc
(
Message:
:
getCreateTime
));
if
(
CollectionUtils
.
isNotEmpty
(
messageVoList
))
{
sessionListVo
.
setLastTime
(
messageVoList
.
get
(
0
).
getCreateTime
());
sessionListVo
.
setUnReadCount
(
0
);
}
else
{
recordsToRemove
.
add
(
sessionListVo
);
}
}
}
});
// 执行删除操作
records
.
removeAll
(
recordsToRemove
);
}
return
TableDataInfo
.
build
(
sessionListVoIPage
);
}
}
/**
/**
...
@@ -114,18 +167,6 @@ public class AppletSessionListController extends BaseController {
...
@@ -114,18 +167,6 @@ public class AppletSessionListController extends BaseController {
// 插入会话列表记录
// 插入会话列表记录
sessionListMapper
.
insert
(
sessionList
);
sessionListMapper
.
insert
(
sessionList
);
Integer
id
=
sessionListMapper
.
selectIdByUser
(
bo
.
getToUserId
(),
bo
.
getUserId
());
// 判断对方和我建立会话没有,如果没有则建立
if
(
id
==
null
)
{
// 新建会话列表对象
SessionList
newSessionList
=
new
SessionList
();
newSessionList
.
setUserId
(
bo
.
getToUserId
());
newSessionList
.
setToUserId
(
bo
.
getUserId
());
newSessionList
.
setUnReadCount
(
0L
);
// 插入新的会话列表记录
sessionListMapper
.
insert
(
newSessionList
);
}
return
R
.
ok
(
sessionList
.
getId
());
return
R
.
ok
(
sessionList
.
getId
());
}
}
...
...
pz-applet/src/main/java/com/pz/applet/WebSocketOneToOneController.java
View file @
af97f382
...
@@ -104,9 +104,10 @@ public class WebSocketOneToOneController {
...
@@ -104,9 +104,10 @@ public class WebSocketOneToOneController {
int
msgType
=
json
.
getIntValue
(
"messageType"
);
int
msgType
=
json
.
getIntValue
(
"messageType"
);
String
lastMessageTime
=
json
.
getString
(
"lastMessageTime"
);
// 使用类型推断,如果不存在键"lastMessageTime",则为null
String
lastMessageTime
=
json
.
getString
(
"lastMessageTime"
);
// 使用类型推断,如果不存在键"lastMessageTime",则为null
Long
receiveId
=
json
.
getLong
(
"receiveId"
);
// 发送对象的用户标识(接收者)
Long
receiveId
=
json
.
getLong
(
"receiveId"
);
// 发送对象的用户标识(接收者)
String
createTime
=
json
.
getString
(
"createTime"
);
// 发送消息
// 发送消息
send
(
msg
,
sendId
,
receiveId
,
roomId
,
msgType
,
requestId
,
lastMessageTime
,
sessionId
);
send
(
msg
,
sendId
,
receiveId
,
roomId
,
msgType
,
requestId
,
lastMessageTime
,
sessionId
,
createTime
);
}
}
/**
/**
...
@@ -159,7 +160,7 @@ public class WebSocketOneToOneController {
...
@@ -159,7 +160,7 @@ public class WebSocketOneToOneController {
* @param requestId 消息请求ID
* @param requestId 消息请求ID
* @param lastMessageTime 最后一次的消息时间
* @param lastMessageTime 最后一次的消息时间
*/
*/
public
void
send
(
String
msg
,
Long
sendId
,
Long
receiveId
,
String
roomId
,
int
msgType
,
String
requestId
,
String
lastMessageTime
,
String
sessionId
)
{
public
void
send
(
String
msg
,
Long
sendId
,
Long
receiveId
,
String
roomId
,
int
msgType
,
String
requestId
,
String
lastMessageTime
,
String
sessionId
,
String
createTime
)
{
Message
message
=
new
Message
();
Message
message
=
new
Message
();
message
.
setContent
(
msg
);
message
.
setContent
(
msg
);
Date
now
=
new
Date
();
Date
now
=
new
Date
();
...
@@ -169,15 +170,7 @@ public class WebSocketOneToOneController {
...
@@ -169,15 +170,7 @@ public class WebSocketOneToOneController {
message
.
setIsRead
(
"0"
);
message
.
setIsRead
(
"0"
);
message
.
setRequestId
(
requestId
);
message
.
setRequestId
(
requestId
);
message
.
setType
(
0
);
message
.
setType
(
0
);
message
.
setCreateTime
(
new
Date
());
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
)
{
if
(
messageMapper
==
null
)
{
this
.
messageMapper
=
(
MessageMapper
)
SpringContextUtil
.
getBean
(
"messageMapper"
);
this
.
messageMapper
=
(
MessageMapper
)
SpringContextUtil
.
getBean
(
"messageMapper"
);
...
@@ -197,10 +190,13 @@ public class WebSocketOneToOneController {
...
@@ -197,10 +190,13 @@ public class WebSocketOneToOneController {
//发送消息
//发送消息
sendMessage
(
sessionList
,
message
);
sendMessage
(
sessionList
,
message
);
}
else
{
}
else
{
Integer
toId
=
Integer
.
valueOf
((
String
)
list
.
get
(
0
));
String
o
=
(
String
)
list
.
get
(
0
);
if
(
StringUtils
.
isNotBlank
(
o
)
&&
!
o
.
equals
(
"null"
))
{
Integer
toId
=
Integer
.
valueOf
(
o
);
if
(
Integer
.
valueOf
(
sessionId
).
equals
(
toId
))
{
if
(
Integer
.
valueOf
(
sessionId
).
equals
(
toId
))
{
//彼此都在会话中,直接发送消息
//彼此都在会话中,直接发送消息
sendMessage
(
sessionList
,
message
);
sendMessage
(
sessionList
,
message
);
}
}
else
{
}
else
{
if
(
sessionId
==
null
)
{
if
(
sessionId
==
null
)
{
//创建会话
//创建会话
...
...
pz-system/src/main/java/com/pz/merchant/domain/bo/CompanyBo.java
View file @
af97f382
...
@@ -22,85 +22,71 @@ public class CompanyBo extends BaseEntity {
...
@@ -22,85 +22,71 @@ public class CompanyBo extends BaseEntity {
/**
/**
* ID
* ID
*/
*/
@NotNull
(
message
=
"ID不能为空"
,
groups
=
{
EditGroup
.
class
})
private
Integer
id
;
private
Integer
id
;
/**
/**
* 商户名称
* 商户名称
*/
*/
@NotBlank
(
message
=
"商户名称不能为空"
,
groups
=
{
AddGroup
.
class
,
EditGroup
.
class
})
private
String
name
;
private
String
name
;
/**
/**
* 城市
* 城市
*/
*/
@NotNull
(
message
=
"城市不能为空"
,
groups
=
{
AddGroup
.
class
,
EditGroup
.
class
})
private
Long
cityId
;
private
Long
cityId
;
/**
/**
* 商户电话
* 商户电话
*/
*/
@NotBlank
(
message
=
"商户电话不能为空"
,
groups
=
{
AddGroup
.
class
,
EditGroup
.
class
})
private
String
tel
;
private
String
tel
;
/**
/**
* 商户手机
* 商户手机
*/
*/
@NotBlank
(
message
=
"商户手机不能为空"
,
groups
=
{
AddGroup
.
class
,
EditGroup
.
class
})
private
String
phone
;
private
String
phone
;
/**
/**
* 商户地址
* 商户地址
*/
*/
@NotBlank
(
message
=
"商户地址不能为空"
,
groups
=
{
AddGroup
.
class
,
EditGroup
.
class
})
private
String
address
;
private
String
address
;
/**
/**
* 状态
* 状态
*/
*/
@NotNull
(
message
=
"状态不能为空"
,
groups
=
{
AddGroup
.
class
,
EditGroup
.
class
})
private
Integer
status
;
private
Integer
status
;
/**
/**
* 营业执照
* 营业执照
*/
*/
@NotBlank
(
message
=
"营业执照不能为空"
,
groups
=
{
AddGroup
.
class
,
EditGroup
.
class
})
private
String
businessLicense
;
private
String
businessLicense
;
/**
/**
* 是否缴纳保证金
* 是否缴纳保证金
*/
*/
@NotNull
(
message
=
"是否缴纳保证金不能为空"
,
groups
=
{
AddGroup
.
class
,
EditGroup
.
class
})
private
Integer
isCashDeposit
;
private
Integer
isCashDeposit
;
/**
/**
* 保证金金额
* 保证金金额
*/
*/
@NotBlank
(
message
=
"保证金金额不能为空"
,
groups
=
{
AddGroup
.
class
,
EditGroup
.
class
})
private
String
cashDeposit
;
private
String
cashDeposit
;
/**
/**
* 创建人
* 创建人
*/
*/
@NotNull
(
message
=
"创建人不能为空"
,
groups
=
{
AddGroup
.
class
,
EditGroup
.
class
})
private
Integer
uid
;
private
Integer
uid
;
/**
/**
* 总收益
* 总收益
*/
*/
@NotBlank
(
message
=
"总收益不能为空"
,
groups
=
{
AddGroup
.
class
,
EditGroup
.
class
})
private
String
totalRevenue
;
private
String
totalRevenue
;
/**
/**
* 当前余额
* 当前余额
*/
*/
@NotBlank
(
message
=
"当前余额不能为空"
,
groups
=
{
AddGroup
.
class
,
EditGroup
.
class
})
private
String
balance
;
private
String
balance
;
/**
/**
* 冻结余额
* 冻结余额
*/
*/
@NotBlank
(
message
=
"冻结余额不能为空"
,
groups
=
{
AddGroup
.
class
,
EditGroup
.
class
})
private
String
freezeBalance
;
private
String
freezeBalance
;
...
...
pz-system/src/main/java/com/pz/system/domain/Message.java
View file @
af97f382
...
@@ -6,6 +6,8 @@ import com.pz.common.core.domain.BaseEntity;
...
@@ -6,6 +6,8 @@ import com.pz.common.core.domain.BaseEntity;
import
lombok.Data
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
lombok.EqualsAndHashCode
;
import
java.util.Date
;
/**
/**
* @author lisw
* @author lisw
* @program message
* @program message
...
@@ -68,4 +70,6 @@ public class Message extends BaseEntity {
...
@@ -68,4 +70,6 @@ public class Message extends BaseEntity {
* 备注
* 备注
*/
*/
private
String
remark
;
private
String
remark
;
private
Date
createTime
;
}
}
pz-system/src/main/java/com/pz/system/domain/vo/SessionListVo.java
View file @
af97f382
...
@@ -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.Date
;
/**
/**
* 会话列视图对象 session_list
* 会话列视图对象 session_list
...
@@ -47,7 +49,20 @@ public class SessionListVo {
...
@@ -47,7 +49,20 @@ public class SessionListVo {
* 未读消息数
* 未读消息数
*/
*/
@ExcelProperty
(
value
=
"未读消息数"
)
@ExcelProperty
(
value
=
"未读消息数"
)
private
Long
unReadCount
;
private
Integer
unReadCount
;
/**
* 对方头像
*/
private
String
toAvatar
;
/**
* 对方名称
*/
private
String
toUserName
;
private
Date
lastTime
;
private
String
message
;
}
}
pz-system/src/main/java/com/pz/system/service/impl/MessageServiceImpl.java
View file @
af97f382
...
@@ -45,11 +45,12 @@ public class MessageServiceImpl implements IMessageService {
...
@@ -45,11 +45,12 @@ public class MessageServiceImpl implements IMessageService {
@Override
@Override
public
List
<
MessageVo
>
queryPageList
(
MessageBo
bo
)
{
public
List
<
MessageVo
>
queryPageList
(
MessageBo
bo
)
{
String
strTime
=
bo
.
getStrTime
()
+
" 00:00:00"
;
bo
.
setStrTime
(
bo
.
getStrTime
()
+
" 23:59:59"
);
bo
.
setStrTime
(
bo
.
getStrTime
()
+
" 23:59:59"
);
List
<
MessageVo
>
result
=
new
ArrayList
<>();
List
<
MessageVo
>
result
=
new
ArrayList
<>();
result
=
baseMapper
.
selectVoList
(
new
LambdaQueryWrapper
<
Message
>().
eq
(
Message:
:
getSender
,
bo
.
getSender
())
result
=
baseMapper
.
selectVoList
(
new
LambdaQueryWrapper
<
Message
>().
eq
(
Message:
:
getSender
,
bo
.
getSender
())
.
eq
(
Message:
:
getReceiver
,
bo
.
getReceiver
()).
or
().
eq
(
Message:
:
getSender
,
bo
.
getReceiver
()).
eq
(
Message:
:
getReceiver
,
bo
.
getSender
())
.
eq
(
Message:
:
getReceiver
,
bo
.
getReceiver
()).
ge
(
BaseEntity:
:
getCreateTime
,
strTime
).
le
(
BaseEntity:
:
getCreateTime
,
bo
.
getStrTime
()).
or
().
eq
(
Message:
:
getSender
,
bo
.
getReceiver
()).
eq
(
Message:
:
getReceiver
,
bo
.
getSender
())
.
ge
(
BaseEntity:
:
getCreateTime
,
bo
.
getStrTime
()
).
le
(
BaseEntity:
:
getCreateTime
,
bo
.
getStrTime
()));
.
ge
(
BaseEntity:
:
getCreateTime
,
strTime
).
le
(
BaseEntity:
:
getCreateTime
,
bo
.
getStrTime
()));
List
<
Message
>
messageList
=
new
ArrayList
<>();
List
<
Message
>
messageList
=
new
ArrayList
<>();
if
(
CollectionUtils
.
isNotEmpty
(
result
))
{
if
(
CollectionUtils
.
isNotEmpty
(
result
))
{
...
...
pz-system/src/main/resources/mapper/system/SessionListMapper.xml
View file @
af97f382
...
@@ -18,6 +18,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
...
@@ -18,6 +18,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
UPDATE session_list SET un_read_count = 0 WHERE user_id = #{fromUserId} AND to_user_id = #{toUserId}
UPDATE session_list SET un_read_count = 0 WHERE user_id = #{fromUserId} AND to_user_id = #{toUserId}
</update>
</update>
<select
id=
"selectIdByUser"
resultType=
"java.lang.Integer"
>
<select
id=
"selectIdByUser"
resultType=
"java.lang.Integer"
>
SELECT id FROM session_list WHERE user_id = #{fromId} AND to_user_id = #{toId}
SELECT id FROM session_list WHERE user_id = #{fromId} AND to_user_id = #{toId}
or user_id = #{toId} AND to_user_id = #{fromId}
</select>
</select>
</mapper>
</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