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
fefc3f0a
Commit
fefc3f0a
authored
Jun 13, 2024
by
shiyu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
专场开始通知
parent
3045271a
Changes
12
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
111 additions
and
12 deletions
+111
-12
ch-admin-api/src/main/java/com/wwdz/ch/admin/controller/AdminUserController.java
...ava/com/wwdz/ch/admin/controller/AdminUserController.java
+2
-2
ch-admin-api/src/main/java/com/wwdz/ch/admin/impl/AdminUserServiceImpl.java
...ain/java/com/wwdz/ch/admin/impl/AdminUserServiceImpl.java
+2
-2
ch-admin-api/src/main/java/com/wwdz/ch/admin/service/AdminUserService.java
...main/java/com/wwdz/ch/admin/service/AdminUserService.java
+1
-1
ch-core/src/main/java/com/wwdz/ch/core/notify/AliSmsSender.java
...e/src/main/java/com/wwdz/ch/core/notify/AliSmsSender.java
+26
-0
ch-dao/src/main/java/com/wwdz/ch/db/dao/UserDao.java
ch-dao/src/main/java/com/wwdz/ch/db/dao/UserDao.java
+3
-0
ch-dao/src/main/java/com/wwdz/ch/db/dao/dts/DtsUserDao.java
ch-dao/src/main/java/com/wwdz/ch/db/dao/dts/DtsUserDao.java
+1
-1
ch-dao/src/main/java/com/wwdz/ch/db/dto/request/UserRequestDto.java
.../main/java/com/wwdz/ch/db/dto/request/UserRequestDto.java
+1
-1
ch-dao/src/main/java/com/wwdz/ch/db/impl/UserDaoImpl.java
ch-dao/src/main/java/com/wwdz/ch/db/impl/UserDaoImpl.java
+13
-0
ch-dao/src/main/java/com/wwdz/ch/db/impl/distribution/SpecialPerformanceDaoImpl.java
...dz/ch/db/impl/distribution/SpecialPerformanceDaoImpl.java
+2
-1
ch-dao/src/main/java/com/wwdz/ch/db/impl/dts/DtsUserDaoImpl.java
...src/main/java/com/wwdz/ch/db/impl/dts/DtsUserDaoImpl.java
+5
-1
ch-wx-api/src/main/java/com/wwdz/ch/wx/job/SpecialPerformanceNoticeJob.java
.../java/com/wwdz/ch/wx/job/SpecialPerformanceNoticeJob.java
+38
-3
ch-wx-api/src/test/java/com/wwdz/ch/wx/api/OfficialAccountApiTest.java
.../test/java/com/wwdz/ch/wx/api/OfficialAccountApiTest.java
+17
-0
No files found.
ch-admin-api/src/main/java/com/wwdz/ch/admin/controller/AdminUserController.java
View file @
fefc3f0a
...
...
@@ -36,13 +36,13 @@ public class AdminUserController {
// @RequiresPermissions("admin:user:list")
@RequiresPermissionsDesc
(
menu
=
{
"用户管理"
,
"会员管理"
},
button
=
"查询"
)
@GetMapping
(
"/list"
)
public
Object
list
(
String
username
,
String
mobile
,
@RequestParam
(
defaultValue
=
"1"
)
Integer
page
,
public
Object
list
(
String
username
,
String
mobile
,
Long
userId
,
@RequestParam
(
defaultValue
=
"1"
)
Integer
page
,
@RequestParam
(
defaultValue
=
"10"
)
Integer
limit
,
@Sort
@RequestParam
(
defaultValue
=
"add_time"
)
String
sort
,
@Order
@RequestParam
(
defaultValue
=
"desc"
)
String
order
)
{
logger
.
info
(
"【请求开始】操作人:["
+
AuthSupport
.
userName
()+
"] 用户管理->会员管理->查询,请求参数,username:{},code:{},page:{}"
,
username
,
mobile
,
page
);
try
{
Object
data
=
adminUserService
.
findList
(
username
,
mobile
,
page
,
limit
,
sort
,
order
);
Object
data
=
adminUserService
.
findList
(
username
,
mobile
,
userId
,
page
,
limit
,
sort
,
order
);
logger
.
info
(
"【请求结束】用户管理->会员管理->查询:响应结果:{}"
,
JSONObject
.
toJSONString
(
data
));
return
ResponseUtil
.
ok
(
data
);
}
catch
(
Exception
e
)
{
...
...
ch-admin-api/src/main/java/com/wwdz/ch/admin/impl/AdminUserServiceImpl.java
View file @
fefc3f0a
...
...
@@ -72,8 +72,8 @@ public class AdminUserServiceImpl implements AdminUserService {
SupplierItemDao
supplierItemDao
;
@Override
public
Object
findList
(
String
username
,
String
mobile
,
Integer
page
,
Integer
size
,
String
sort
,
String
order
)
{
List
<
User
>
userList
=
dtsUserDao
.
querySelective
(
username
,
mobile
,
page
,
size
,
sort
,
order
);
public
Object
findList
(
String
username
,
String
mobile
,
Long
userId
,
Integer
page
,
Integer
size
,
String
sort
,
String
order
)
{
List
<
User
>
userList
=
dtsUserDao
.
querySelective
(
username
,
mobile
,
userId
,
page
,
size
,
sort
,
order
);
long
total
=
PageInfo
.
of
(
userList
).
getTotal
();
List
<
UserVo
>
list
=
new
ArrayList
<>();
userList
.
forEach
(
user
->
{
...
...
ch-admin-api/src/main/java/com/wwdz/ch/admin/service/AdminUserService.java
View file @
fefc3f0a
...
...
@@ -10,7 +10,7 @@ import java.util.List;
public
interface
AdminUserService
{
Object
findList
(
String
username
,
String
mobile
,
Integer
page
,
Integer
size
,
String
sort
,
String
order
);
Object
findList
(
String
username
,
String
mobile
,
Long
userId
,
Integer
page
,
Integer
size
,
String
sort
,
String
order
);
List
<
User
>
findList
(
SysUserRequestDto
dto
);
...
...
ch-core/src/main/java/com/wwdz/ch/core/notify/AliSmsSender.java
View file @
fefc3f0a
...
...
@@ -125,6 +125,32 @@ public class AliSmsSender implements SmsSender {
}
public
Result
sendSms
(
String
phone
,
String
msg
)
{
try
{
Map
<
String
,
Object
>
map
=
new
HashMap
<>();
map
.
put
(
"msg"
,
msg
);
logger
.
info
(
"短信通知发送内容 : {} "
,
msg
);
com
.
aliyun
.
dysmsapi20170525
.
Client
client
=
createClient
();
com
.
aliyun
.
dysmsapi20170525
.
models
.
SendSmsRequest
sendSmsRequest
=
new
com
.
aliyun
.
dysmsapi20170525
.
models
.
SendSmsRequest
()
.
setPhoneNumbers
(
phone
)
.
setTemplateCode
(
templateCode
)
.
setTemplateParam
(
JsonUtils
.
fromMap
(
map
))
.
setSignName
(
"换藏小程序"
);
SendSmsResponse
sendSmsResponse
=
client
.
sendSmsWithOptions
(
sendSmsRequest
,
new
com
.
aliyun
.
teautil
.
models
.
RuntimeOptions
());
logger
.
info
(
"短信通知发送结果 : {} "
,
JsonUtils
.
from
(
sendSmsResponse
));
if
(
"OK"
.
equals
(
sendSmsResponse
.
getBody
().
code
))
{
return
Result
.
success
();
}
}
catch
(
Exception
e
)
{
logger
.
error
(
"AliSmsSender.sendWithTemplate(),phone={}, error:{}"
,
phone
,
e
);
}
return
Result
.
failed
();
}
public
static
void
main
(
String
[]
args
)
{
}
...
...
ch-dao/src/main/java/com/wwdz/ch/db/dao/UserDao.java
View file @
fefc3f0a
package
com.wwdz.ch.db.dao
;
import
com.wwdz.ch.db.domain.User
;
import
com.wwdz.ch.db.dto.request.UserRequestDto
;
import
java.util.List
;
...
...
@@ -15,6 +16,8 @@ public interface UserDao {
int
insertByMapper
(
User
user
);
List
<
User
>
findList
(
UserRequestDto
dto
);
/**
* 通过oid查询未删除的记录
...
...
ch-dao/src/main/java/com/wwdz/ch/db/dao/dts/DtsUserDao.java
View file @
fefc3f0a
...
...
@@ -17,7 +17,7 @@ public interface DtsUserDao {
int
updateById
(
User
user
);
List
<
User
>
querySelective
(
String
username
,
String
mobile
,
Integer
page
,
Integer
size
,
String
sort
,
String
order
);
List
<
User
>
querySelective
(
String
username
,
String
mobile
,
Long
userId
,
Integer
page
,
Integer
size
,
String
sort
,
String
order
);
int
count
();
...
...
ch-dao/src/main/java/com/wwdz/ch/db/dto/request/UserRequestDto.java
View file @
fefc3f0a
...
...
@@ -4,7 +4,7 @@ import com.xxdxxs.entity.Entity;
import
lombok.Data
;
@Data
public
class
UserRequestDto
implements
Entity
{
public
class
UserRequestDto
extends
BaseRequestDto
implements
Entity
{
private
String
user
;
private
Long
id
;
...
...
ch-dao/src/main/java/com/wwdz/ch/db/impl/UserDaoImpl.java
View file @
fefc3f0a
package
com.wwdz.ch.db.impl
;
import
com.alibaba.dubbo.config.annotation.Reference
;
import
com.github.pagehelper.PageHelper
;
import
com.wwdz.ch.db.dao.UserDao
;
import
com.wwdz.ch.db.domain.User
;
import
com.wwdz.ch.db.domain.UserExample
;
import
com.wwdz.ch.db.dto.request.UserRequestDto
;
import
com.wwdz.ch.db.mapper.UserMapper
;
import
com.wwdz.mall.common.vo.response.CloudServerResponse
;
import
com.wwdz.user.api.service.user.UserReadService
;
...
...
@@ -40,6 +42,17 @@ public class UserDaoImpl implements UserDao {
}
@Override
public
List
<
User
>
findList
(
UserRequestDto
dto
)
{
UserExample
example
=
new
UserExample
();
UserExample
.
Criteria
criteria
=
example
.
createCriteria
();
criteria
.
andDeletedEqualTo
(
false
);
example
.
setOrderByClause
(
"add_time desc"
);
PageHelper
.
startPage
(
dto
.
getPage
(),
dto
.
getLimit
());
return
userMapper
.
selectByExample
(
example
);
}
@Override
public
User
queryByOid
(
String
openId
)
{
CloudServerResponse
<
com
.
wwdz
.
user
.
api
.
model
.
user
.
User
>
cloudServerResponse
=
userReadService
.
getUserByOpenIdOrUnionId
(
null
,
openId
);
...
...
ch-dao/src/main/java/com/wwdz/ch/db/impl/distribution/SpecialPerformanceDaoImpl.java
View file @
fefc3f0a
...
...
@@ -25,7 +25,8 @@ public class SpecialPerformanceDaoImpl implements SpecialPerformanceDao {
SpecialPerformanceExample
.
Criteria
criteria
=
example
.
createCriteria
();
JdbcHelper
.
ifPresent
(
dto
.
getType
(),
criteria:
:
andTypeEqualTo
);
JdbcHelper
.
ifPresent
(
dto
.
getState
(),
criteria:
:
andStateEqualTo
);
JdbcHelper
.
ifPresent
(
dto
.
getStartQueryTime
(),
criteria:
:
andStartTimeGreaterThanOrEqualTo
);
JdbcHelper
.
ifPresent
(
dto
.
getStartQueryTime
(),
criteria:
:
andStartTimeLessThanOrEqualTo
);
JdbcHelper
.
ifPresent
(
dto
.
getEndQueryTime
(),
criteria:
:
andStartTimeGreaterThanOrEqualTo
);
example
.
setOrderByClause
(
" start_time desc"
);
PageHelper
.
startPage
(
dto
.
getPage
(),
dto
.
getLimit
());
return
specialPerformanceMapper
.
selectByExample
(
example
);
...
...
ch-dao/src/main/java/com/wwdz/ch/db/impl/dts/DtsUserDaoImpl.java
View file @
fefc3f0a
...
...
@@ -86,7 +86,7 @@ public class DtsUserDaoImpl implements DtsUserDao {
}
@Override
public
List
<
User
>
querySelective
(
String
username
,
String
mobile
,
Integer
page
,
Integer
size
,
String
sort
,
public
List
<
User
>
querySelective
(
String
username
,
String
mobile
,
Long
userId
,
Integer
page
,
Integer
size
,
String
sort
,
String
order
)
{
UserExample
example
=
new
UserExample
();
...
...
@@ -98,6 +98,10 @@ public class DtsUserDaoImpl implements DtsUserDao {
if
(!
StringUtils
.
isEmpty
(
mobile
))
{
criteria
.
andMobileEqualTo
(
mobile
);
}
if
(
userId
!=
null
)
{
criteria
.
andIdEqualTo
(
userId
);
}
// criteria.andDeletedEqualTo(false);
if
(!
StringUtils
.
isEmpty
(
sort
)
&&
!
StringUtils
.
isEmpty
(
order
))
{
...
...
ch-wx-api/src/main/java/com/wwdz/ch/wx/job/SpecialPerformanceNoticeJob.java
View file @
fefc3f0a
package
com.wwdz.ch.wx.job
;
import
com.github.pagehelper.PageInfo
;
import
com.wwdz.ch.core.api.WxAppletApi
;
import
com.wwdz.ch.core.consts.DistributionEnum
;
import
com.wwdz.ch.core.entity.AuctionOfferNoticeMsg
;
...
...
@@ -9,11 +10,15 @@ import com.wwdz.ch.core.type.Result;
import
com.wwdz.ch.core.util.PriceUtil
;
import
com.wwdz.ch.core.util.RedisUtils
;
import
com.wwdz.ch.core.util.StringUtil
;
import
com.wwdz.ch.db.dao.UserDao
;
import
com.wwdz.ch.db.dao.distribution.*
;
import
com.wwdz.ch.db.domain.User
;
import
com.wwdz.ch.db.domain.distribution.*
;
import
com.wwdz.ch.db.dto.request.UserRequestDto
;
import
com.wwdz.ch.db.dto.request.distribution.SpecialPerformanceRequestDto
;
import
com.wwdz.ch.wx.service.distribution.DistributionOrderService
;
import
com.xxdxxs.utils.DateUtils
;
import
com.xxdxxs.utils.StringUtils
;
import
org.redisson.api.RLock
;
import
org.redisson.api.RedissonClient
;
import
org.slf4j.Logger
;
...
...
@@ -62,12 +67,15 @@ public class SpecialPerformanceNoticeJob {
@Autowired
WxAppletApi
wxAppletApi
;
@Autowired
UserDao
userDao
;
private
final
static
String
SPECIAL_PERFORMANCE_URL
=
"/pages/saleSpecialList/index"
;
/**
* 隔10分钟运行一次
*/
//
@Scheduled(fixedDelay = 1000 * 60 * 10)
@Scheduled
(
fixedDelay
=
1000
*
60
*
10
)
public
void
execute
()
{
RLock
lock
=
redissonClient
.
getLock
(
SPECIAL_PERFORMANCE_SEND_MSG_KEY
);
if
(!
lock
.
tryLock
())
{
...
...
@@ -82,6 +90,7 @@ public class SpecialPerformanceNoticeJob {
Instant
startInstant
=
now
.
toInstant
().
plus
(
Duration
.
ofMinutes
(
20
));
Date
startTime
=
Date
.
from
(
startInstant
);
specialPerformanceRequestDto
.
setStartQueryTime
(
startTime
);
specialPerformanceRequestDto
.
setEndQueryTime
(
now
);
List
<
SpecialPerformance
>
specialPerformanceList
=
specialPerformanceDao
.
find
(
specialPerformanceRequestDto
);
logger
.
info
(
"即将开始的专场个数为 {}"
,
specialPerformanceList
.
size
());
if
(
CollectionUtils
.
isEmpty
(
specialPerformanceList
))
{
...
...
@@ -93,10 +102,36 @@ public class SpecialPerformanceNoticeJob {
logger
.
info
(
"当前即将开始的专场id:{}, 名称为 {} "
,
specialPerformance
.
getId
(),
specialPerformance
.
getTitle
());
//发送短信通知
String
url
=
wxAppletApi
.
getUrlLink
(
SPECIAL_PERFORMANCE_URL
,
"specialId="
+
specialPerformance
.
getId
());
String
msg
=
specialPerformance
.
getTitle
()
+
"即将开始,请前往"
+
url
+
"查看"
;
// aliSmsSender.sendSms(userId, msg);
String
msg
=
specialPerformance
.
getTitle
()
+
"将在"
+
DateUtils
.
toString
(
specialPerformance
.
getStartTime
())
+
"开始,请前往"
+
url
+
"查看"
;
boolean
hasNextPage
=
true
;
int
page
=
1
;
UserRequestDto
userRequestDto
=
new
UserRequestDto
();
while
(
hasNextPage
)
{
List
<
User
>
userList
=
userDao
.
findList
(
userRequestDto
);
PageInfo
pageInfo
=
new
PageInfo
(
userList
);
for
(
User
user
:
userList
)
{
String
phone
=
user
.
getMobile
();
if
(
StringUtils
.
hasLength
(
phone
))
{
aliSmsSender
.
sendSms
(
phone
,
msg
);
}
}
if
(
pageInfo
.
isHasNextPage
())
{
page
=
page
+
1
;
userRequestDto
.
setPage
(
page
);
logger
.
info
(
"要发送短信通知的用户数据总页数为 : {}, 当前为 : {}"
,
pageInfo
.
getPages
(),
page
);
}
else
{
hasNextPage
=
false
;
logger
.
info
(
"============= 发送专场开始短信循环结束 ============="
);
}
if
(
page
>
500
)
{
hasNextPage
=
false
;
logger
.
info
(
"============= 发送专场开始短信超出上限,停止发送 ============="
);
}
}
logger
.
info
(
"================专场id: {}, 即将开始通知任务,提醒短信发送成功 =============="
,
specialPerformance
.
getId
());
redisUtils
.
set
(
abortStartKey
,
specialPerformance
.
getId
(),
3600
*
24
);
}
else
{
logger
.
info
(
"================专场id: {}, 通知任务已经完成,无需重复发送 =============="
,
specialPerformance
.
getId
());
}
}
catch
(
Exception
e
)
{
logger
.
error
(
"专场即将开始通知任务 error {}"
,
e
);
...
...
ch-wx-api/src/test/java/com/wwdz/ch/wx/api/OfficialAccountApiTest.java
View file @
fefc3f0a
package
com.wwdz.ch.wx.api
;
import
com.wwdz.ch.core.api.OfficialAccountApi
;
import
com.wwdz.ch.core.api.WxAppletApi
;
import
com.wwdz.ch.core.entity.ConsignSaleSubscribeMsg
;
import
com.wwdz.ch.core.notify.AliSmsSender
;
import
com.xxdxxs.utils.DateUtils
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
...
...
@@ -18,6 +20,12 @@ public class OfficialAccountApiTest {
@Autowired
OfficialAccountApi
officialAccountApi
;
@Autowired
WxAppletApi
wxAppletApi
;
@Autowired
AliSmsSender
aliSmsSender
;
@Test
public
void
refreshAccessToken
()
{
officialAccountApi
.
getAccessToken
();
...
...
@@ -41,4 +49,13 @@ public class OfficialAccountApiTest {
consignSaleSubscribeMsg
.
setTime
(
DateUtils
.
toString
(
new
Date
()));
officialAccountApi
.
sendModelMsg
(
openId
,
consignSaleSubscribeMsg
);
}
@Test
public
void
send
()
{
String
SPECIAL_PERFORMANCE_URL
=
"/pages/saleSpecialList/index"
;
String
url
=
wxAppletApi
.
getUrlLink
(
SPECIAL_PERFORMANCE_URL
,
"specialId="
+
1
);
String
msg
=
"换藏小程序,"
+
"测试专场"
+
"即将开始,请前往"
+
url
+
"查看"
;
aliSmsSender
.
sendSms
(
60652774
,
msg
);
}
}
\ No newline at end of file
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