Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
L
LuJin-Im
Project
Project
Details
Activity
Releases
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
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
yangzhaojun
LuJin-Im
Commits
f0aa9ffb
Commit
f0aa9ffb
authored
Jul 03, 2018
by
李博今
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
分离客户与客服。
客户可以不登录与客服交流 新生成的用户与客服直接交流显示为游客(BUG)
parent
d5fcafe8
Changes
9
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
152 additions
and
10 deletions
+152
-10
ImWebsocketServer.java
src/main/java/com/qiqiim/server/ImWebsocketServer.java
+8
-0
ImController.java
...va/com/qiqiim/webserver/user/controller/ImController.java
+46
-1
UserDepartmentDao.java
...java/com/qiqiim/webserver/user/dao/UserDepartmentDao.java
+9
-1
UserDepartmentDao.xml
.../java/com/qiqiim/webserver/user/dao/UserDepartmentDao.xml
+19
-1
UserDepartmentService.java
.../qiqiim/webserver/user/service/UserDepartmentService.java
+8
-2
UserDepartmentServiceImpl.java
...ebserver/user/service/impl/UserDepartmentServiceImpl.java
+51
-2
index.jsp
src/main/webapp/index.jsp
+7
-0
layim.js
src/main/webapp/layui/lay/modules/layim.js
+3
-3
login.jsp
src/main/webapp/login.jsp
+1
-0
No files found.
src/main/java/com/qiqiim/server/ImWebsocketServer.java
View file @
f0aa9ffb
...
...
@@ -89,6 +89,10 @@ public class ImWebsocketServer {
@Override
protected
void
decode
(
ChannelHandlerContext
ctx
,
WebSocketFrame
frame
,
List
<
Object
>
objs
)
throws
Exception
{
ByteBuf
buf
=
((
BinaryWebSocketFrame
)
frame
).
content
();
byte
[]
bytes
=
new
byte
[
buf
.
readableBytes
()];
buf
.
readBytes
(
bytes
);
System
.
out
.
println
(
new
String
(
bytes
)
+
"=====================decode========================"
);
buf
.
resetReaderIndex
();
objs
.
add
(
buf
);
buf
.
retain
();
}
...
...
@@ -105,6 +109,10 @@ public class ImWebsocketServer {
result
=
wrappedBuffer
(((
MessageLite
.
Builder
)
msg
).
build
().
toByteArray
());
}
// 然后下面再转成websocket二进制流,因为客户端不能直接解析protobuf编码生成的
byte
[]
bytes
=
new
byte
[
result
.
readableBytes
()];
result
.
readBytes
(
bytes
);
System
.
out
.
println
(
new
String
(
bytes
)
+
"=====================encode========================"
);
result
.
resetReaderIndex
();
WebSocketFrame
frame
=
new
BinaryWebSocketFrame
(
result
);
out
.
add
(
frame
);
}
...
...
src/main/java/com/qiqiim/webserver/user/controller/ImController.java
View file @
f0aa9ffb
...
...
@@ -102,6 +102,41 @@ public class ImController extends BaseController{
}
return
"redirect:login.jsp"
;
}
/**
* 用户假装登录
*/
@RequestMapping
(
"/fakeLogin"
)
public
String
fakeLogin
(
@RequestParam
Map
<
String
,
Object
>
params
,
HttpServletRequest
request
){
//生成新用户
UserAccountEntity
newUserAccount
=
new
UserAccountEntity
();
String
data
=
UUID
.
randomUUID
().
toString
().
replaceAll
(
"-"
,
""
);
newUserAccount
.
setAccount
(
data
);
newUserAccount
.
setPassword
(
data
);
UserInfoEntity
userInfoEntity
=
new
UserInfoEntity
();
userInfoEntity
.
setDeptid
(
2L
);
userInfoEntity
.
setName
(
data
);
newUserAccount
.
setUserInfo
(
userInfoEntity
);
newUserAccount
.
setIsdel
(
0
);
userAccountServiceImpl
.
save
(
newUserAccount
);
//将信息放入params
params
.
put
(
"account"
,
data
);
params
.
put
(
"password"
,
data
);
//根据新用户登录
Query
query
=
new
Query
(
params
);
UserAccountEntity
userAccount
=
userAccountServiceImpl
.
validateUser
(
query
);
if
(
userAccount
!=
null
){
setLoginUser
(
userAccount
);
String
template
=
check
(
request
);
if
(
template
.
equals
(
Constants
.
ViewTemplateConfig
.
mobiletemplate
)){
return
"layimmobile"
;
}
return
"layim"
;
}
return
"redirect:login.jsp"
;
}
/**
...
...
@@ -142,7 +177,17 @@ public class ImController extends BaseController{
map
.
put
(
"mine"
,
my
);
// map.put("group",groups);
//获取用户分组 及用户
List
<
ImFriendUserData
>
friends
=
userDepartmentServiceImpl
.
queryGroupAndUser
();
List
<
ImFriendUserData
>
friends
=
new
ArrayList
<>();
//管理员列表即为与其有过聊天记录的用户
if
(
user
.
getDeptid
()
==
1
){
friends
=
userDepartmentServiceImpl
.
adminsQueryGroupAndUser
(
user
.
getUid
());
}
else
{
Long
l
=
(
Long
)
request
.
getAttribute
(
"serviceId"
);
if
(
l
==
null
){
l
=
0L
;
}
friends
=
userDepartmentServiceImpl
.
usersQueryGroupAndUser
(
l
);
}
map
.
put
(
"friend"
,
friends
);
us
.
setData
(
map
);
return
JSONArray
.
toJSON
(
us
);
...
...
src/main/java/com/qiqiim/webserver/user/dao/UserDepartmentDao.java
View file @
f0aa9ffb
...
...
@@ -3,7 +3,9 @@ import java.util.List;
import
com.qiqiim.webserver.base.dao.BaseDao
;
import
com.qiqiim.webserver.user.model.ImFriendUserData
;
import
com.qiqiim.webserver.user.model.ImFriendUserInfoData
;
import
com.qiqiim.webserver.user.model.UserDepartmentEntity
;
import
org.apache.ibatis.annotations.Param
;
/**
* 部门
...
...
@@ -14,5 +16,11 @@ import com.qiqiim.webserver.user.model.UserDepartmentEntity;
*/
public
interface
UserDepartmentDao
extends
BaseDao
<
UserDepartmentEntity
>
{
public
List
<
ImFriendUserData
>
queryGroupAndUser
();
public
List
<
ImFriendUserData
>
queryGroupAndUser
();
public
List
<
ImFriendUserData
>
usersQueryGroupAndUser
();
public
List
<
ImFriendUserData
>
adminsQueryGroupAndUser
();
public
List
<
ImFriendUserInfoData
>
adminsGetHistoryUser
(
@Param
(
"id"
)
long
id
,
@Param
(
"userId"
)
long
userId
);
}
src/main/java/com/qiqiim/webserver/user/dao/UserDepartmentDao.xml
View file @
f0aa9ffb
...
...
@@ -23,6 +23,11 @@
<!-- 一对多查询 -->
<collection
property=
"list"
column=
"id"
select=
"queryFriendUser"
></collection>
</resultMap>
<resultMap
type=
"com.qiqiim.webserver.user.model.ImFriendUserData"
id=
"userFriendMapWithoutCollection"
>
<result
property=
"id"
column=
"id"
/>
<result
property=
"groupname"
column=
"groupname"
/>
</resultMap>
<sql
id=
"Base_Column_List"
>
id ,
...
...
@@ -48,7 +53,20 @@
<select
id=
"queryGroupAndUser"
resultMap=
"userFriendMap"
>
select id,name as groupname from user_department
</select>
<select
id=
"usersQueryGroupAndUser"
resultMap=
"userFriendMap"
>
select id,name as groupname from user_department where user_department.id = 1
</select>
<select
id=
"adminsQueryGroupAndUser"
resultMap=
"userFriendMapWithoutCollection"
>
select id,name as groupname from user_department where id != 1
</select>
<select
id=
"adminsGetHistoryUser"
resultType=
"com.qiqiim.webserver.user.model.ImFriendUserInfoData"
>
select DISTINCT uid as id ,name as username , signature as sign , profilephoto as avatar from user_info
left join user_message um on um.senduser = user_info.uid or um.receiveuser = user_info.uid
where deptid = #{id} and (senduser = #{userId} or receiveuser =#{userId})
</select>
<select
id=
"queryList"
resultType=
"com.qiqiim.webserver.user.model.UserDepartmentEntity"
>
select
<include
refid=
"Base_Column_List"
/>
from user_department
...
...
src/main/java/com/qiqiim/webserver/user/service/UserDepartmentService.java
View file @
f0aa9ffb
...
...
@@ -19,8 +19,14 @@ public interface UserDepartmentService {
List
<
UserDepartmentEntity
>
queryList
(
Map
<
String
,
Object
>
map
);
List
<
ImFriendUserData
>
queryGroupAndUser
();
List
<
ImFriendUserData
>
queryGroupAndUser
();
//用户看到的客服列表
List
<
ImFriendUserData
>
usersQueryGroupAndUser
(
long
userId
);
//客服看到的用户列表
List
<
ImFriendUserData
>
adminsQueryGroupAndUser
(
long
userId
);
int
queryTotal
(
Map
<
String
,
Object
>
map
);
void
save
(
UserDepartmentEntity
userDepartment
);
...
...
src/main/java/com/qiqiim/webserver/user/service/impl/UserDepartmentServiceImpl.java
View file @
f0aa9ffb
package
com
.
qiqiim
.
webserver
.
user
.
service
.
impl
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.Map
;
...
...
@@ -21,7 +22,7 @@ public class UserDepartmentServiceImpl implements UserDepartmentService {
private
UserDepartmentDao
userDepartmentDao
;
@Autowired
private
SessionManagerImpl
sessionManager
;
@Override
public
UserDepartmentEntity
queryObject
(
Long
id
){
...
...
@@ -74,5 +75,53 @@ public class UserDepartmentServiceImpl implements UserDepartmentService {
return
friendgroup
;
}
@Override
public
List
<
ImFriendUserData
>
usersQueryGroupAndUser
(
long
userId
)
{
List
<
ImFriendUserData
>
friendgroup
=
userDepartmentDao
.
usersQueryGroupAndUser
();
for
(
ImFriendUserData
fg:
friendgroup
){
if
(
userId
==
0
){
List
<
ImFriendUserInfoData
>
friends
=
fg
.
getList
();
if
(
friends
!=
null
&&
friends
.
size
()>
0
){
for
(
ImFriendUserInfoData
fr:
friends
){
boolean
exist
=
sessionManager
.
exist
(
fr
.
getId
().
toString
());
if
(
exist
)
fr
.
setStatus
(
"online"
);
}
}
}
else
{
List
<
ImFriendUserInfoData
>
removeList
=
new
ArrayList
<>();
for
(
ImFriendUserInfoData
imFriendUserInfoData
:
fg
.
getList
()){
if
(!
imFriendUserInfoData
.
getId
().
equals
(
userId
)){
removeList
.
add
(
imFriendUserInfoData
);
}
else
{
boolean
exist
=
sessionManager
.
exist
(
imFriendUserInfoData
.
getId
().
toString
());
if
(
exist
)
imFriendUserInfoData
.
setStatus
(
"online"
);
}
}
fg
.
getList
().
removeAll
(
removeList
);
}
}
return
friendgroup
;
}
@Override
public
List
<
ImFriendUserData
>
adminsQueryGroupAndUser
(
long
userId
)
{
List
<
ImFriendUserData
>
friendgroup
=
userDepartmentDao
.
adminsQueryGroupAndUser
();
for
(
ImFriendUserData
fg:
friendgroup
){
List
<
ImFriendUserInfoData
>
friends
=
userDepartmentDao
.
adminsGetHistoryUser
(
fg
.
getId
(),
userId
);
fg
.
setList
(
friends
);
if
(
friends
!=
null
&&
friends
.
size
()>
0
){
for
(
ImFriendUserInfoData
fr:
friends
){
boolean
exist
=
sessionManager
.
exist
(
fr
.
getId
().
toString
());
if
(
exist
)
fr
.
setStatus
(
"online"
);
}
}
}
return
friendgroup
;
}
}
src/main/webapp/index.jsp
View file @
f0aa9ffb
...
...
@@ -34,6 +34,13 @@
<legend>
LAYIM
</legend>
<div>
<a
class=
"layui-btn layui-btn-primary"
href=
"login.jsp"
target=
"_blank"
><i
class=
"layui-icon"
>

</i>
登录去聊天
</a>
<form
class=
"layui-form loginform"
action=
"fakeLogin"
method=
"post"
>
<div
class=
"layui-form-item"
>
<div
class=
"layui-input-block"
>
<button
class=
"layui-btn"
lay-submit=
""
lay-filter=
"login"
>
咨询客服
<tton>
</div>
</div>
</form>
<div
class=
"layui-text"
style=
"margin: 0; color: #FF5722;"
>
结合了LayIm,实现了PC端及手机端访问
<p>
单聊,群聊,文件上传显示,聊天记录查询,上下线提醒
...
...
src/main/webapp/layui/lay/modules/layim.js
View file @
f0aa9ffb
This diff is collapsed.
Click to expand it.
src/main/webapp/login.jsp
View file @
f0aa9ffb
...
...
@@ -35,6 +35,7 @@
</div>
</div>
</form>
</div>
</fieldset>
...
...
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