Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Q
qk_backend
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
quanku
qk_backend
Commits
2dcb8e1b
Commit
2dcb8e1b
authored
Sep 20, 2023
by
shiyu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
五分钟内重复关注不会发送消息
parent
0d6e0272
Changes
9
Show whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
123 additions
and
10 deletions
+123
-10
ch-dao/src/main/java/com/wwdz/ch/db/dao/FollowFansRecordDao.java
...src/main/java/com/wwdz/ch/db/dao/FollowFansRecordDao.java
+9
-0
ch-dao/src/main/java/com/wwdz/ch/db/dto/request/FollowFansRecordRequestDto.java
...om/wwdz/ch/db/dto/request/FollowFansRecordRequestDto.java
+6
-0
ch-dao/src/main/java/com/wwdz/ch/db/impl/FollowFansRecordDaoImpl.java
...ain/java/com/wwdz/ch/db/impl/FollowFansRecordDaoImpl.java
+13
-0
ch-dao/src/main/resources/generatorConfig_new.xml
ch-dao/src/main/resources/generatorConfig_new.xml
+4
-4
ch-wx-api/src/main/java/com/wwdz/ch/wx/impl/FollowFansRecordServiceImpl.java
...java/com/wwdz/ch/wx/impl/FollowFansRecordServiceImpl.java
+63
-2
ch-wx-api/src/main/java/com/wwdz/ch/wx/impl/MessageServiceImpl.java
...src/main/java/com/wwdz/ch/wx/impl/MessageServiceImpl.java
+4
-4
ch-wx-api/src/main/java/com/wwdz/ch/wx/service/FollowFansRecordService.java
.../java/com/wwdz/ch/wx/service/FollowFansRecordService.java
+8
-0
ch-wx-api/src/main/java/com/wwdz/ch/wx/util/StringUtil.java
ch-wx-api/src/main/java/com/wwdz/ch/wx/util/StringUtil.java
+5
-0
ch-wx-api/src/main/java/com/wwdz/ch/wx/web/FollowFansRecordController.java
...n/java/com/wwdz/ch/wx/web/FollowFansRecordController.java
+11
-0
No files found.
ch-dao/src/main/java/com/wwdz/ch/db/dao/FollowFansRecordDao.java
View file @
2dcb8e1b
...
@@ -11,11 +11,20 @@ public interface FollowFansRecordDao {
...
@@ -11,11 +11,20 @@ public interface FollowFansRecordDao {
/**
/**
* 取消关注
* 取消关注
* 根据关注记录的id来删除
* @param record
* @param record
* @return
* @return
*/
*/
boolean
delete
(
FollowFansRecord
record
);
boolean
delete
(
FollowFansRecord
record
);
/**
* 取消关注
* @param fansId
* @param followerId
* @return
*/
boolean
delete
(
long
fansId
,
long
followerId
);
List
<
FollowFansRecord
>
findList
(
FollowFansRecordRequestDto
dto
);
List
<
FollowFansRecord
>
findList
(
FollowFansRecordRequestDto
dto
);
...
...
ch-dao/src/main/java/com/wwdz/ch/db/dto/request/FollowFansRecordRequestDto.java
View file @
2dcb8e1b
...
@@ -39,4 +39,10 @@ public class FollowFansRecordRequestDto extends BaseRequestDto implements Entity
...
@@ -39,4 +39,10 @@ public class FollowFansRecordRequestDto extends BaseRequestDto implements Entity
* 状态
* 状态
*/
*/
private
Integer
state
;
private
Integer
state
;
/**
* 当前查看的用户id
* 进入别人的主页时需要传
*/
private
Long
currentUserId
;
}
}
ch-dao/src/main/java/com/wwdz/ch/db/impl/FollowFansRecordDaoImpl.java
View file @
2dcb8e1b
...
@@ -29,6 +29,19 @@ public class FollowFansRecordDaoImpl implements FollowFansRecordDao {
...
@@ -29,6 +29,19 @@ public class FollowFansRecordDaoImpl implements FollowFansRecordDao {
return
followFansRecordMapper
.
updateByPrimaryKeySelective
(
record
)
>
0
;
return
followFansRecordMapper
.
updateByPrimaryKeySelective
(
record
)
>
0
;
}
}
@Override
public
boolean
delete
(
long
fansId
,
long
followerId
)
{
FollowFansRecordExample
example
=
new
FollowFansRecordExample
();
FollowFansRecordExample
.
Criteria
criteria
=
example
.
createCriteria
();
criteria
.
andFollowerIdEqualTo
(
followerId
);
criteria
.
andFansIdEqualTo
(
fansId
);
criteria
.
andStateEqualTo
(
1
);
FollowFansRecord
followFansRecord
=
new
FollowFansRecord
();
followFansRecord
.
setState
(
0
);
return
followFansRecordMapper
.
updateByExampleSelective
(
followFansRecord
,
example
)
>
0
;
}
@Override
@Override
public
List
<
FollowFansRecord
>
findList
(
FollowFansRecordRequestDto
dto
)
{
public
List
<
FollowFansRecord
>
findList
(
FollowFansRecordRequestDto
dto
)
{
FollowFansRecordExample
example
=
new
FollowFansRecordExample
();
FollowFansRecordExample
example
=
new
FollowFansRecordExample
();
...
...
ch-dao/src/main/resources/generatorConfig_new.xml
View file @
2dcb8e1b
...
@@ -50,9 +50,9 @@
...
@@ -50,9 +50,9 @@
<!--数据库链接地址账号密码-->
<!--数据库链接地址账号密码-->
<jdbcConnection
driverClass=
"com.mysql.jdbc.Driver"
<jdbcConnection
driverClass=
"com.mysql.jdbc.Driver"
connectionURL=
"jdbc:mysql://pc-bp1
l2k9j6ck1gr923.mysql.polardb.rds.aliyuncs.com:3306/quanku
?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC&verifyServerCertificate=false&useSSL=false"
connectionURL=
"jdbc:mysql://pc-bp1
8q94o1mukb67hy.mysql.polardb.rds.aliyuncs.com:3306/quanku_dev
?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC&verifyServerCertificate=false&useSSL=false"
userId=
"
quanku
"
userId=
"
owner
"
password=
"
3N0W8i0b1Wm35MJ5
"
/>
password=
"
VS1xaA37hyu1wJSw
"
/>
<!-- 类型转换 -->
<!-- 类型转换 -->
<javaTypeResolver>
<javaTypeResolver>
...
@@ -72,7 +72,7 @@
...
@@ -72,7 +72,7 @@
<javaClientGenerator
type=
"XMLMAPPER"
targetPackage=
"com.wwdz.ch.db.mapper"
<javaClientGenerator
type=
"XMLMAPPER"
targetPackage=
"com.wwdz.ch.db.mapper"
targetProject=
"ch-dao/src/main/java"
/>
targetProject=
"ch-dao/src/main/java"
/>
<table
tableName=
"
category_temp
"
enableCountByExample=
"true"
enableUpdateByExample=
"true"
enableDeleteByExample=
"true"
enableSelectByExample=
"true"
selectByExampleQueryId=
"true"
>
<table
tableName=
"
message_record
"
enableCountByExample=
"true"
enableUpdateByExample=
"true"
enableDeleteByExample=
"true"
enableSelectByExample=
"true"
selectByExampleQueryId=
"true"
>
<generatedKey
column=
"id"
sqlStatement=
"Mysql"
identity=
"true"
/>
<generatedKey
column=
"id"
sqlStatement=
"Mysql"
identity=
"true"
/>
</table>
</table>
...
...
ch-wx-api/src/main/java/com/wwdz/ch/wx/impl/FollowFansRecordServiceImpl.java
View file @
2dcb8e1b
...
@@ -4,6 +4,7 @@ import com.wwdz.ch.core.consts.MessageEnum;
...
@@ -4,6 +4,7 @@ import com.wwdz.ch.core.consts.MessageEnum;
import
com.wwdz.ch.core.consts.ResultCode
;
import
com.wwdz.ch.core.consts.ResultCode
;
import
com.wwdz.ch.core.type.Result
;
import
com.wwdz.ch.core.type.Result
;
import
com.wwdz.ch.core.util.CacheUtil
;
import
com.wwdz.ch.core.util.CacheUtil
;
import
com.wwdz.ch.core.util.RedisUtils
;
import
com.wwdz.ch.db.dao.FollowFansRecordDao
;
import
com.wwdz.ch.db.dao.FollowFansRecordDao
;
import
com.wwdz.ch.db.domain.FollowFansRecord
;
import
com.wwdz.ch.db.domain.FollowFansRecord
;
import
com.wwdz.ch.db.dto.request.FollowFansRecordRequestDto
;
import
com.wwdz.ch.db.dto.request.FollowFansRecordRequestDto
;
...
@@ -11,6 +12,8 @@ import com.wwdz.ch.wx.entity.request.MessageRequestDto;
...
@@ -11,6 +12,8 @@ import com.wwdz.ch.wx.entity.request.MessageRequestDto;
import
com.wwdz.ch.wx.entity.vo.FollowFansRecordVo
;
import
com.wwdz.ch.wx.entity.vo.FollowFansRecordVo
;
import
com.wwdz.ch.wx.service.FollowFansRecordService
;
import
com.wwdz.ch.wx.service.FollowFansRecordService
;
import
com.wwdz.ch.wx.service.MessageService
;
import
com.wwdz.ch.wx.service.MessageService
;
import
com.wwdz.ch.wx.util.StringUtil
;
import
com.xxdxxs.utils.DateUtils
;
import
com.xxdxxs.utils.EntityMapper
;
import
com.xxdxxs.utils.EntityMapper
;
import
org.slf4j.Logger
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.slf4j.LoggerFactory
;
...
@@ -19,6 +22,7 @@ import org.springframework.stereotype.Service;
...
@@ -19,6 +22,7 @@ import org.springframework.stereotype.Service;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.transaction.interceptor.TransactionAspectSupport
;
import
org.springframework.transaction.interceptor.TransactionAspectSupport
;
import
java.time.LocalDateTime
;
import
java.util.*
;
import
java.util.*
;
import
java.util.stream.Collectors
;
import
java.util.stream.Collectors
;
...
@@ -37,6 +41,9 @@ public class FollowFansRecordServiceImpl implements FollowFansRecordService {
...
@@ -37,6 +41,9 @@ public class FollowFansRecordServiceImpl implements FollowFansRecordService {
@Autowired
@Autowired
CacheUtil
cacheUtil
;
CacheUtil
cacheUtil
;
@Autowired
RedisUtils
redisUtils
;
@Override
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
Result
follow
(
FollowFansRecordRequestDto
dto
)
{
public
Result
follow
(
FollowFansRecordRequestDto
dto
)
{
...
@@ -54,6 +61,10 @@ public class FollowFansRecordServiceImpl implements FollowFansRecordService {
...
@@ -54,6 +61,10 @@ public class FollowFansRecordServiceImpl implements FollowFansRecordService {
Map
<
String
,
Object
>
map
=
new
HashMap
<>();
Map
<
String
,
Object
>
map
=
new
HashMap
<>();
map
.
put
(
"recordId"
,
id
);
map
.
put
(
"recordId"
,
id
);
String
messageKey
=
StringUtil
.
formatMessageKey
(
dto
.
getFansId
(),
MessageEnum
.
TypeEnum
.
FOLLOW
.
getCode
(),
dto
.
getFollowerId
());
if
(
redisUtils
.
hasKey
(
messageKey
))
{
return
Result
.
success
(
map
);
}
//发送关注的消息
//发送关注的消息
MessageRequestDto
messageRequestDto
=
new
MessageRequestDto
();
MessageRequestDto
messageRequestDto
=
new
MessageRequestDto
();
messageRequestDto
.
setSenderId
(
dto
.
getFansId
());
messageRequestDto
.
setSenderId
(
dto
.
getFansId
());
...
@@ -61,6 +72,8 @@ public class FollowFansRecordServiceImpl implements FollowFansRecordService {
...
@@ -61,6 +72,8 @@ public class FollowFansRecordServiceImpl implements FollowFansRecordService {
messageRequestDto
.
setType
(
MessageEnum
.
TypeEnum
.
FOLLOW
.
getCode
());
messageRequestDto
.
setType
(
MessageEnum
.
TypeEnum
.
FOLLOW
.
getCode
());
messageRequestDto
.
setContent
(
"关注了您"
);
messageRequestDto
.
setContent
(
"关注了您"
);
messageService
.
add
(
messageRequestDto
);
messageService
.
add
(
messageRequestDto
);
//五分钟内再次关注不会发送消息
redisUtils
.
set
(
messageKey
,
LocalDateTime
.
now
(),
60
*
5
);
return
Result
.
success
(
map
);
return
Result
.
success
(
map
);
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
logger
.
error
(
"{} 关注 {} error {}"
,
dto
.
getFansId
(),
dto
.
getFollowerId
(),
e
);
logger
.
error
(
"{} 关注 {} error {}"
,
dto
.
getFansId
(),
dto
.
getFollowerId
(),
e
);
...
@@ -86,6 +99,22 @@ public class FollowFansRecordServiceImpl implements FollowFansRecordService {
...
@@ -86,6 +99,22 @@ public class FollowFansRecordServiceImpl implements FollowFansRecordService {
return
Result
.
failed
();
return
Result
.
failed
();
}
}
@Override
public
Result
cancelFollowByBothId
(
FollowFansRecordRequestDto
dto
)
{
try
{
if
(
dto
.
getFollowerId
()
==
null
||
dto
.
getFansId
()
==
null
)
{
return
Result
.
failed
(
ResultCode
.
PARAM_ERROR
);
}
followFansRecordDao
.
delete
(
dto
.
getFansId
(),
dto
.
getFollowerId
());
return
Result
.
success
();
}
catch
(
Exception
e
)
{
logger
.
error
(
"{} 取消关注error {}"
,
dto
.
getId
(),
e
);
}
return
Result
.
failed
();
}
@Override
@Override
public
Result
countFollowFans
(
FollowFansRecordRequestDto
dto
)
{
public
Result
countFollowFans
(
FollowFansRecordRequestDto
dto
)
{
try
{
try
{
...
@@ -135,7 +164,8 @@ public class FollowFansRecordServiceImpl implements FollowFansRecordService {
...
@@ -135,7 +164,8 @@ public class FollowFansRecordServiceImpl implements FollowFansRecordService {
}
}
followFansRecordVos
.
add
(
followFansRecordVo
);
followFansRecordVos
.
add
(
followFansRecordVo
);
});
});
return
Result
.
success
(
followFansRecordVos
);
List
<
FollowFansRecordVo
>
followFansRecordVoList
=
getCurrentFollowRelation
(
dto
,
followFansRecordVos
);
return
Result
.
success
(
followFansRecordVoList
);
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
logger
.
error
(
"{} 查询关注列表 {}"
,
dto
.
getId
(),
e
);
logger
.
error
(
"{} 查询关注列表 {}"
,
dto
.
getId
(),
e
);
}
}
...
@@ -170,7 +200,8 @@ public class FollowFansRecordServiceImpl implements FollowFansRecordService {
...
@@ -170,7 +200,8 @@ public class FollowFansRecordServiceImpl implements FollowFansRecordService {
}
}
followFansRecordVos
.
add
(
followFansRecordVo
);
followFansRecordVos
.
add
(
followFansRecordVo
);
});
});
return
Result
.
success
(
followFansRecordVos
);
List
<
FollowFansRecordVo
>
followFansRecordVoList
=
getCurrentFollowRelation
(
dto
,
followFansRecordVos
);
return
Result
.
success
(
followFansRecordVoList
);
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
logger
.
error
(
"{} 查询粉丝列表 {}"
,
dto
.
getId
(),
e
);
logger
.
error
(
"{} 查询粉丝列表 {}"
,
dto
.
getId
(),
e
);
}
}
...
@@ -178,6 +209,36 @@ public class FollowFansRecordServiceImpl implements FollowFansRecordService {
...
@@ -178,6 +209,36 @@ public class FollowFansRecordServiceImpl implements FollowFansRecordService {
}
}
public
List
<
FollowFansRecordVo
>
getCurrentFollowRelation
(
FollowFansRecordRequestDto
dto
,
List
<
FollowFansRecordVo
>
followFansRecordVos
)
{
if
(
dto
.
getCurrentUserId
()
!=
null
)
{
//查询当前用户关注的人
FollowFansRecordRequestDto
currentFollowDto
=
new
FollowFansRecordRequestDto
();
dto
.
setFansId
(
dto
.
getCurrentUserId
());
List
<
FollowFansRecord
>
currentFollowFansRecordList
=
followFansRecordDao
.
findList
(
currentFollowDto
);
List
<
Long
>
currentFollowIdList
=
currentFollowFansRecordList
.
stream
().
map
(
FollowFansRecord:
:
getFollowerId
).
collect
(
Collectors
.
toList
());
//查询当前用户的粉丝
FollowFansRecordRequestDto
currentFansDto
=
new
FollowFansRecordRequestDto
();
dto
.
setFollowerId
(
dto
.
getCurrentUserId
());
List
<
FollowFansRecord
>
currentFansRecordList
=
followFansRecordDao
.
findList
(
currentFansDto
);
List
<
Long
>
currentFansIdList
=
currentFansRecordList
.
stream
().
map
(
FollowFansRecord:
:
getFansId
).
collect
(
Collectors
.
toList
());
followFansRecordVos
.
forEach
(
followFansRecordVo
->
{
long
followerId
=
followFansRecordVo
.
getFollowerId
();
if
(
currentFollowIdList
.
contains
(
followerId
)
&&
currentFansIdList
.
contains
(
followerId
))
{
followFansRecordVo
.
setRelation
(
"互相关注"
);
}
else
if
(
currentFollowIdList
.
contains
(
followerId
)
&&
!
currentFansIdList
.
contains
(
followerId
))
{
followFansRecordVo
.
setRelation
(
"已关注"
);
}
else
if
(!
currentFollowIdList
.
contains
(
followerId
)
&&
currentFansIdList
.
contains
(
followerId
))
{
followFansRecordVo
.
setRelation
(
"回关"
);
}
else
{
followFansRecordVo
.
setRelation
(
""
);
}
});
}
return
followFansRecordVos
;
}
@Override
@Override
public
Result
findFollowRelation
(
FollowFansRecordRequestDto
dto
)
{
public
Result
findFollowRelation
(
FollowFansRecordRequestDto
dto
)
{
try
{
try
{
...
...
ch-wx-api/src/main/java/com/wwdz/ch/wx/impl/MessageServiceImpl.java
View file @
2dcb8e1b
...
@@ -5,10 +5,7 @@ import com.wwdz.ch.core.consts.MessageEnum;
...
@@ -5,10 +5,7 @@ import com.wwdz.ch.core.consts.MessageEnum;
import
com.wwdz.ch.core.consts.ResultCode
;
import
com.wwdz.ch.core.consts.ResultCode
;
import
com.wwdz.ch.core.type.PageSearchResult
;
import
com.wwdz.ch.core.type.PageSearchResult
;
import
com.wwdz.ch.core.type.Result
;
import
com.wwdz.ch.core.type.Result
;
import
com.wwdz.ch.core.util.CacheUtil
;
import
com.wwdz.ch.core.util.*
;
import
com.wwdz.ch.core.util.DateTimeUtil
;
import
com.wwdz.ch.core.util.MediaUtil
;
import
com.wwdz.ch.core.util.StringUtil
;
import
com.wwdz.ch.db.dao.FollowFansRecordDao
;
import
com.wwdz.ch.db.dao.FollowFansRecordDao
;
import
com.wwdz.ch.db.dao.ItemDao
;
import
com.wwdz.ch.db.dao.ItemDao
;
import
com.wwdz.ch.db.dao.MessageContentDao
;
import
com.wwdz.ch.db.dao.MessageContentDao
;
...
@@ -61,6 +58,9 @@ public class MessageServiceImpl implements MessageService {
...
@@ -61,6 +58,9 @@ public class MessageServiceImpl implements MessageService {
@Autowired
@Autowired
CacheUtil
cacheUtil
;
CacheUtil
cacheUtil
;
@Autowired
RedisUtils
redisUtils
;
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Override
@Override
...
...
ch-wx-api/src/main/java/com/wwdz/ch/wx/service/FollowFansRecordService.java
View file @
2dcb8e1b
...
@@ -21,6 +21,14 @@ public interface FollowFansRecordService {
...
@@ -21,6 +21,14 @@ public interface FollowFansRecordService {
Result
cancelFollow
(
FollowFansRecordRequestDto
dto
);
Result
cancelFollow
(
FollowFansRecordRequestDto
dto
);
/**
* 更具双方id取消关注某人
* @param dto
* @return
*/
Result
cancelFollowByBothId
(
FollowFansRecordRequestDto
dto
);
/**
/**
* 查询关注和粉丝人数
* 查询关注和粉丝人数
* @param dto
* @param dto
...
...
ch-wx-api/src/main/java/com/wwdz/ch/wx/util/StringUtil.java
View file @
2dcb8e1b
...
@@ -65,4 +65,9 @@ public class StringUtil {
...
@@ -65,4 +65,9 @@ public class StringUtil {
}
}
return
countString
;
return
countString
;
}
}
public
static
String
formatMessageKey
(
long
sendId
,
int
type
,
long
receiverId
)
{
return
""
+
sendId
+
":"
+
type
+
":"
+
receiverId
;
}
}
}
ch-wx-api/src/main/java/com/wwdz/ch/wx/web/FollowFansRecordController.java
View file @
2dcb8e1b
...
@@ -46,6 +46,17 @@ public class FollowFansRecordController {
...
@@ -46,6 +46,17 @@ public class FollowFansRecordController {
return
followFansRecordService
.
cancelFollow
(
dto
);
return
followFansRecordService
.
cancelFollow
(
dto
);
}
}
@ApiOperation
(
value
=
"取消关注"
)
@PostMapping
(
"/cancelFollowByBothId"
)
public
Result
cancelFollowByBothId
(
@RequestBody
FollowFansRecordRequestDto
dto
)
{
logger
.
info
(
"取消关注,请求参数:{}"
,
JSON
.
toJSONString
(
dto
));
if
(
dto
.
getFollowerId
()
==
null
||
dto
.
getFansId
()
==
null
)
{
return
Result
.
failed
(
ResultCode
.
PARAM_ERROR
);
}
return
followFansRecordService
.
cancelFollowByBothId
(
dto
);
}
@ApiOperation
(
value
=
"统计关注和粉丝数量"
)
@ApiOperation
(
value
=
"统计关注和粉丝数量"
)
@PostMapping
(
"/countFollowFans"
)
@PostMapping
(
"/countFollowFans"
)
public
Result
countFollowFans
(
@RequestBody
FollowFansRecordRequestDto
dto
)
{
public
Result
countFollowFans
(
@RequestBody
FollowFansRecordRequestDto
dto
)
{
...
...
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