Skip to content
Toggle navigation
Projects
Groups
Snippets
Help
yangxiujun
/
paidan_demo
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Settings
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit b86cbc10
authored
Oct 25, 2023
by
Ren Ping
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat:消息模块开发
1 parent
c9e208f8
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
165 additions
and
25 deletions
project-order/src/main/java/com/dituhui/pea/order/controller/MsgController.java
project-order/src/main/java/com/dituhui/pea/order/dao/MsgDao.java
project-order/src/main/java/com/dituhui/pea/order/dao/MsgReceiverDao.java
project-order/src/main/java/com/dituhui/pea/order/dto/MsgDTO.java
project-order/src/main/java/com/dituhui/pea/order/dto/MsgResp.java
project-order/src/main/java/com/dituhui/pea/order/entity/MsgEntity.java
project-order/src/main/java/com/dituhui/pea/order/entity/MsgReceiverEntity.java
project-order/src/main/java/com/dituhui/pea/order/service/MsgService.java
project-order/src/main/java/com/dituhui/pea/order/service/impl/MsgServiceImpl.java
project-order/src/main/java/com/dituhui/pea/order/controller/MsgController.java
View file @
b86cbc1
package
com
.
dituhui
.
pea
.
order
.
controller
;
import
cn.hutool.core.util.StrUtil
;
import
com.dituhui.pea.common.PageResult
;
import
com.dituhui.pea.common.Result
;
import
com.dituhui.pea.order.dto.MsgDTO
;
...
...
@@ -8,7 +9,7 @@ import com.dituhui.pea.order.dto.MsgResp;
import
com.dituhui.pea.order.service.MsgService
;
import
com.dituhui.pea.order.utils.AssertUtil
;
import
com.dituhui.pea.order.utils.CommonUtil
;
import
lombok.RequiredArgsConstructor
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.*
;
import
javax.validation.Valid
;
...
...
@@ -21,11 +22,11 @@ import java.util.Objects;
* @date 2023/10/24
*/
@RestController
@RequiredArgsConstructor
@RequestMapping
(
"/pea-order"
)
public
class
MsgController
{
private
final
MsgService
msgService
;
@Autowired
private
MsgService
msgService
;
/**
* 消息列表
...
...
@@ -57,16 +58,50 @@ public class MsgController {
/**
* 删除消息
*
* @param userId
用户标识
* @param d
eleteD
to
* @param userId 用户标识
* @param dto
* @return {@link Result }<{@link Boolean }>
* @author RenPing
* @date 2023/10/24
*/
@
RequestMapping
(
value
=
"/msg/delete"
,
method
=
RequestMethod
.
POST
)
public
Result
<
Boolean
>
delete
(
@RequestHeader
(
name
=
"userId"
,
required
=
true
)
String
userId
,
@RequestBody
@Valid
MsgDTO
.
DeleteDto
d
eleteD
to
)
{
@
PostMapping
(
"/msg/delete"
)
public
Result
<
Boolean
>
delete
(
@RequestHeader
(
name
=
"userId"
,
required
=
true
)
String
userId
,
@RequestBody
@Valid
MsgDTO
.
DeleteDto
dto
)
{
AssertUtil
.
isNotEmpty
(
userId
,
"用户ID不能为空"
);
msgService
.
delete
(
deleteDto
.
getId
(),
userId
);
msgService
.
delete
(
dto
.
getId
(),
userId
);
return
Result
.
success
(
true
);
}
/**
* 设置消息已读
*
* @param userId 用户标识
* @param dto
* @return {@link Result }<{@link Boolean }>
* @author RenPing
* @date 2023/10/24
*/
@PostMapping
(
"/msg/read"
)
public
Result
<
Boolean
>
read
(
@RequestHeader
(
name
=
"userId"
,
required
=
true
)
String
userId
,
@RequestBody
@Valid
MsgDTO
.
DeleteDto
dto
)
{
AssertUtil
.
isNotEmpty
(
userId
,
"用户ID不能为空"
);
msgService
.
readMsg
(
dto
.
getId
(),
userId
);
return
Result
.
success
(
true
);
}
/**
* 新增消息
*
* @param dto 参数
* @return {@link Result }<{@link Boolean }>
* @author RenPing
* @date 2023/10/25
*/
@PostMapping
(
"/msg/add"
)
public
Result
<
Boolean
>
add
(
@RequestBody
@Valid
MsgDTO
.
addDto
dto
)
{
CommonUtil
.
setNullValue
(
dto
);
AssertUtil
.
checkArgument
(
StrUtil
.
isNotEmpty
(
dto
.
getClusterId
())
||
StrUtil
.
isNotEmpty
(
dto
.
getBranchId
())
||
StrUtil
.
isNotEmpty
(
dto
.
getGroupId
()),
"大区Id、分部Id、分组Id不能同时为空"
);
msgService
.
add
(
dto
);
return
Result
.
success
(
true
);
}
...
...
project-order/src/main/java/com/dituhui/pea/order/dao/MsgDao.java
View file @
b86cbc1
...
...
@@ -15,7 +15,7 @@ import java.util.List;
import
java.util.Map
;
import
java.util.Objects
;
public
interface
MsgDao
extends
JpaRepository
<
MsgEntity
,
Long
>
{
public
interface
MsgDao
extends
JpaRepository
<
MsgEntity
,
Integer
>
{
@Query
(
value
=
"select t.cluster_id,t.branch_id,t.group_id"
+
" from ("
+
" select tt.cluster_id,tt.branch_id,tt.group_id,min(tt.create_time) create_time,min(r.is_read) is_read"
+
...
...
@@ -39,7 +39,8 @@ public interface MsgDao extends JpaRepository<MsgEntity, Long> {
Page
<
Map
<
String
,
Objects
>>
getGroupList
(
@Param
(
"req"
)
MsgDTO
.
Request
req
,
Pageable
pageable
);
@Query
(
value
=
"select t.* from (select tt.*,r.is_read"
+
@Query
(
value
=
"select t.* from (select tt.*,r.is_read,"
+
" (select group_concat(u.nickname) from zzz_msg_receiver rr join sys_user u on u.id=rr.user_id where rr.msg_id=tt.id) receivers"
+
" from zzz_msg tt join zzz_msg_receiver r on r.msg_id=tt.id and r.user_id=:#{#req.userId}"
+
" where IF(:#{#msgGroupResp.clusterId} is not null, tt.cluster_id=:#{#msgGroupResp.clusterId}, tt.cluster_id is null)"
+
" and IF(:#{#msgGroupResp.branchId} is not null, tt.branch_id=:#{#msgGroupResp.branchId}, tt.branch_id is null)"
+
...
...
@@ -52,4 +53,28 @@ public interface MsgDao extends JpaRepository<MsgEntity, Long> {
)
List
<
Map
<
String
,
Objects
>>
getList
(
@Param
(
"req"
)
MsgDTO
.
Request
req
,
@Param
(
"msgGroupResp"
)
MsgGroupResp
msgGroupResp
,
Pageable
pageable
);
/**
* 根据小组或分部或大区获取角色为“分站派工”的用户
*
* @param clusterId 大区
* @param branchId 分部
* @param groupId 小组
* @return {@link List }<{@link String }>
* @author RenPing
* @date 2023/10/25
*/
@Query
(
value
=
"SELECT distinct u.id"
+
" from sys_user u"
+
" join sys_user_org uo on u.id=uo.user_id"
+
" join sys_user_role ur on ur.user_id=u.id"
+
" join sys_role r on r.id=ur.role_id and r.name='分站派工'"
+
" and IF(:groupId is not null, uo.org_id=:groupId and uo.org_level=2, 1=1)"
+
" and IF(:groupId is null and :branchId is not null, uo.org_id=:branchId and uo.org_level=1, 1=1)"
+
" and IF(:groupId is null and :branchId is null and :clusterId is not null, uo.org_id=:clusterId and uo.org_level=0, 1=1)"
,
nativeQuery
=
true
// 开启原生sql
)
List
<
String
>
getDispatchUserList
(
@Param
(
"clusterId"
)
String
clusterId
,
@Param
(
"branchId"
)
String
branchId
,
@Param
(
"groupId"
)
String
groupId
);
}
project-order/src/main/java/com/dituhui/pea/order/dao/MsgReceiverDao.java
View file @
b86cbc1
...
...
@@ -2,12 +2,6 @@ package com.dituhui.pea.order.dao;
import
com.dituhui.pea.order.entity.MsgReceiverEntity
;
import
org.springframework.data.jpa.repository.JpaRepository
;
import
org.springframework.data.jpa.repository.Modifying
;
import
org.springframework.data.jpa.repository.Query
;
public
interface
MsgReceiverDao
extends
JpaRepository
<
MsgReceiverEntity
,
Long
>
{
@Modifying
@Query
(
"delete from MsgReceiverEntity a where a.msgId=?1 and a.userId=?2"
)
void
delete
(
Integer
msgId
,
String
userId
);
public
interface
MsgReceiverDao
extends
JpaRepository
<
MsgReceiverEntity
,
Integer
>
{
}
project-order/src/main/java/com/dituhui/pea/order/dto/MsgDTO.java
View file @
b86cbc1
...
...
@@ -3,6 +3,8 @@ package com.dituhui.pea.order.dto;
import
com.dituhui.pea.pojo.PageRequest
;
import
org.springframework.format.annotation.DateTimeFormat
;
import
javax.validation.constraints.Max
;
import
javax.validation.constraints.Min
;
import
javax.validation.constraints.NotNull
;
import
java.time.LocalDate
;
...
...
@@ -70,7 +72,7 @@ public class MsgDTO {
public
static
class
addDto
{
/**
* 大区ID
* 大区ID
(大区Id、分部Id、分组Id只需传一个)
*/
private
String
clusterId
;
...
...
@@ -87,21 +89,28 @@ public class MsgDTO {
/**
* 消息类型,0:派工类,1:服务类,2:容量类
*/
@NotNull
(
message
=
"消息类型不能为空"
)
@Min
(
value
=
0
,
message
=
"消息类型格式不对"
)
@Max
(
value
=
2
,
message
=
"消息类型格式不对"
)
private
Integer
type
;
/**
* 消息内容
*/
@NotNull
(
message
=
"消息内容不能为空"
)
private
String
content
;
/**
* 单号集合,以
顿号
连接
* 单号集合,以
“、”
连接
*/
private
String
orderIds
;
/**
* 标签类型,0:紧急,1:正常
*/
@NotNull
(
message
=
"标签类型不能为空"
)
@Min
(
value
=
0
,
message
=
"标签类型格式不对"
)
@Max
(
value
=
1
,
message
=
"标签类型格式不对"
)
private
Integer
tag
;
}
}
\ No newline at end of file
project-order/src/main/java/com/dituhui/pea/order/dto/MsgResp.java
View file @
b86cbc1
...
...
@@ -4,6 +4,7 @@ import com.fasterxml.jackson.annotation.JsonFormat;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.util.Date
;
@Data
...
...
@@ -70,5 +71,10 @@ public class MsgResp {
*/
private
Integer
isRead
;
/**
* 接收人
*/
private
String
receivers
;
}
project-order/src/main/java/com/dituhui/pea/order/entity/MsgEntity.java
View file @
b86cbc1
package
com
.
dituhui
.
pea
.
order
.
entity
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
import
javax.persistence.*
;
import
java.time.LocalDateTime
;
...
...
@@ -16,6 +17,7 @@ import java.util.Date;
@Entity
@Data
@Table
(
name
=
"zzz_msg"
)
@Accessors
(
chain
=
true
)
public
class
MsgEntity
{
@Id
...
...
project-order/src/main/java/com/dituhui/pea/order/entity/MsgReceiverEntity.java
View file @
b86cbc1
...
...
@@ -21,7 +21,7 @@ import java.util.Date;
public
class
MsgReceiverEntity
{
@Id
@GeneratedValue
(
strategy
=
GenerationType
.
IDENTITY
)
private
int
id
;
private
Integer
id
;
/**
...
...
project-order/src/main/java/com/dituhui/pea/order/service/MsgService.java
View file @
b86cbc1
...
...
@@ -3,6 +3,7 @@ package com.dituhui.pea.order.service;
import
com.dituhui.pea.common.PageResult
;
import
com.dituhui.pea.order.dto.MsgDTO
;
import
com.dituhui.pea.order.dto.MsgGroupResp
;
import
org.springframework.transaction.annotation.Transactional
;
public
interface
MsgService
{
...
...
@@ -25,4 +26,24 @@ public interface MsgService {
* @date 2023/10/24
*/
void
delete
(
Integer
msgId
,
String
userId
);
/**
* 设置消息已读
*
* @param msgId 味精标识
* @param userId 用户标识
* @author RenPing
* @date 2023/10/25
*/
@Transactional
(
rollbackFor
=
Exception
.
class
)
void
readMsg
(
Integer
msgId
,
String
userId
);
/**
* 新增消息
*
* @param dto 参数
* @author RenPing
* @date 2023/10/25
*/
void
add
(
MsgDTO
.
addDto
dto
);
}
project-order/src/main/java/com/dituhui/pea/order/service/impl/MsgServiceImpl.java
View file @
b86cbc1
package
com
.
dituhui
.
pea
.
order
.
service
.
impl
;
import
cn.hutool.core.bean.BeanUtil
;
import
cn.hutool.core.util.ObjectUtil
;
import
com.alibaba.fastjson.JSONObject
;
import
com.dituhui.pea.common.PageResult
;
...
...
@@ -7,19 +8,20 @@ import com.dituhui.pea.order.dao.*;
import
com.dituhui.pea.order.dto.MsgDTO
;
import
com.dituhui.pea.order.dto.MsgGroupResp
;
import
com.dituhui.pea.order.dto.MsgResp
;
import
com.dituhui.pea.order.entity.MsgEntity
;
import
com.dituhui.pea.order.entity.MsgReceiverEntity
;
import
com.dituhui.pea.order.entity.OrgBranchEntity
;
import
com.dituhui.pea.order.entity.OrgGroupEntity
;
import
com.dituhui.pea.order.enums.MsgTagEnum
;
import
com.dituhui.pea.order.enums.MsgTypeEnum
;
import
com.dituhui.pea.order.service.MsgService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.domain.Page
;
import
org.springframework.data.domain.PageRequest
;
import
org.springframework.data.domain.Pageable
;
import
org.springframework.data.domain.Sort
;
import
org.springframework.data.domain.*
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Objects
;
...
...
@@ -84,6 +86,51 @@ public class MsgServiceImpl implements MsgService {
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
delete
(
Integer
msgId
,
String
userId
)
{
msgReceiverDao
.
delete
(
msgId
,
userId
);
List
<
MsgReceiverEntity
>
list
=
msgReceiverDao
.
findAll
(
Example
.
of
(
new
MsgReceiverEntity
().
setMsgId
(
msgId
).
setUserId
(
userId
)));
list
.
forEach
(
msgReceiverEntity
->
{
msgReceiverDao
.
deleteById
(
msgReceiverEntity
.
getId
());
});
}
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
readMsg
(
Integer
msgId
,
String
userId
)
{
List
<
MsgReceiverEntity
>
list
=
msgReceiverDao
.
findAll
(
Example
.
of
(
new
MsgReceiverEntity
().
setMsgId
(
msgId
).
setUserId
(
userId
)));
list
.
forEach
(
msgReceiverEntity
->
{
msgReceiverEntity
.
setIsRead
(
1
).
setUpdateTime
(
new
Date
());
msgReceiverDao
.
save
(
msgReceiverEntity
);
});
}
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
add
(
MsgDTO
.
addDto
dto
)
{
if
(
Objects
.
nonNull
(
dto
.
getGroupId
()))
{
OrgGroupEntity
group
=
groupDao
.
getByGroupId
(
dto
.
getGroupId
());
dto
.
setBranchId
(
group
.
getBranchId
());
dto
.
setClusterId
(
group
.
getClusterId
());
}
else
if
(
Objects
.
nonNull
(
dto
.
getBranchId
()))
{
OrgBranchEntity
branch
=
branchDao
.
getByBranchId
(
dto
.
getBranchId
());
dto
.
setClusterId
(
branch
.
getClusterId
());
}
else
if
(
Objects
.
nonNull
(
dto
.
getClusterId
()))
{
OrgBranchEntity
branch
=
branchDao
.
getByBranchId
(
dto
.
getBranchId
());
dto
.
setClusterId
(
branch
.
getClusterId
());
}
List
<
String
>
userList
=
msgDao
.
getDispatchUserList
(
dto
.
getClusterId
(),
dto
.
getBranchId
(),
dto
.
getGroupId
());
MsgEntity
msgEntity
=
new
MsgEntity
();
BeanUtil
.
copyProperties
(
dto
,
msgEntity
);
msgEntity
.
setCreateTime
(
new
Date
()).
setUpdateTime
(
new
Date
());
msgDao
.
save
(
msgEntity
);
userList
.
forEach
(
userId
->
{
MsgReceiverEntity
msgReceiverEntity
=
new
MsgReceiverEntity
()
.
setMsgId
(
msgEntity
.
getId
())
.
setUserId
(
userId
)
.
setIsRead
(
0
)
.
setCreateTime
(
new
Date
())
.
setUpdateTime
(
new
Date
());
msgReceiverDao
.
save
(
msgReceiverEntity
);
});
}
}
Write
Preview
Markdown
is supported
Attach a file
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 post a comment