Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
roncoo
roncoo-education
提交
c185a940
R
roncoo-education
项目概览
roncoo
/
roncoo-education
10 个月 前同步成功
通知
146
Star
5
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
1
Wiki
分析
仓库
DevOps
项目成员
Pages
R
roncoo-education
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
1
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
c185a940
编写于
3月 06, 2019
作者:
大白八神
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
添加站内信推送定时任务
上级
7b5c8585
变更
13
隐藏空白更改
内联
并排
Showing
13 changed file
with
85 addition
and
125 deletion
+85
-125
roncoo-education-system/roncoo-education-system-common/src/main/java/com/roncoo/education/system/common/bean/vo/MsgPushVO.java
...com/roncoo/education/system/common/bean/vo/MsgPushVO.java
+15
-15
roncoo-education-system/roncoo-education-system-service/src/main/java/com/roncoo/education/system/service/controller/biz/BossMsgBiz.java
...o/education/system/service/controller/biz/BossMsgBiz.java
+5
-11
roncoo-education-system/roncoo-education-system-service/src/main/java/com/roncoo/education/system/service/controller/biz/BossMsgUserBiz.java
...ucation/system/service/controller/biz/BossMsgUserBiz.java
+17
-10
roncoo-education-user/roncoo-education-user-common/src/main/java/com/roncoo/education/user/common/interfaces/BossUserExt.java
.../roncoo/education/user/common/interfaces/BossUserExt.java
+3
-3
roncoo-education-user/roncoo-education-user-service/src/main/java/com/roncoo/education/user/service/controller/BossUserExtController.java
...cation/user/service/controller/BossUserExtController.java
+2
-2
roncoo-education-user/roncoo-education-user-service/src/main/java/com/roncoo/education/user/service/controller/biz/BossUserExtBiz.java
...education/user/service/controller/biz/BossUserExtBiz.java
+1
-1
roncoo-education-user/roncoo-education-user-service/src/main/java/com/roncoo/education/user/service/dao/impl/UserDaoImpl.java
...m/roncoo/education/user/service/dao/impl/UserDaoImpl.java
+1
-1
roncoo-education-util/src/main/java/com/roncoo/education/util/base/BaseController.java
...n/java/com/roncoo/education/util/base/BaseController.java
+2
-0
roncoo-education-util/src/main/java/com/roncoo/education/util/enums/MsgTypeEnum.java
...ain/java/com/roncoo/education/util/enums/MsgTypeEnum.java
+25
-0
roncoo-education-web-boss/src/main/resources/templates/system/msg/add.ftl
...-web-boss/src/main/resources/templates/system/msg/add.ftl
+9
-11
roncoo-education-web-boss/src/main/resources/templates/system/msg/list.ftl
...web-boss/src/main/resources/templates/system/msg/list.ftl
+0
-7
roncoo-education-web-boss/src/main/resources/templates/system/msg/view.ftl
...web-boss/src/main/resources/templates/system/msg/view.ftl
+4
-55
roncoo-education-web-boss/src/main/resources/templates/system/msgUser/list.ftl
...boss/src/main/resources/templates/system/msgUser/list.ftl
+1
-9
未找到文件。
roncoo-education-system/roncoo-education-system-common/src/main/java/com/roncoo/education/system/common/bean/vo/MsgPushVO.java
浏览文件 @
c185a940
...
...
@@ -8,25 +8,25 @@ import lombok.experimental.Accessors;
/**
* 站内信息表,发送用
*
* @author
LHR
* @author
wuyun
*/
@Data
@Accessors
(
chain
=
true
)
public
class
MsgPushVO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
private
static
final
long
serialVersionUID
=
1L
;
/**
* 主键
*/
private
Long
id
;
/**
* 标题
*/
private
String
msgTitle
;
/**
*
*/
private
Integer
isTop
;
/**
* 主键
*/
private
Long
id
;
/**
* 标题
*/
private
String
msgTitle
;
/**
* 是否置顶
*/
private
Integer
isTop
;
}
roncoo-education-system/roncoo-education-system-service/src/main/java/com/roncoo/education/system/service/controller/biz/BossMsgBiz.java
浏览文件 @
c185a940
...
...
@@ -18,7 +18,6 @@ import com.roncoo.education.system.service.dao.impl.mapper.entity.Msg;
import
com.roncoo.education.system.service.dao.impl.mapper.entity.MsgExample
;
import
com.roncoo.education.system.service.dao.impl.mapper.entity.MsgExample.Criteria
;
import
com.roncoo.education.system.service.dao.impl.mapper.entity.MsgUser
;
import
com.roncoo.education.user.common.bean.qo.UserExtQO
;
import
com.roncoo.education.user.common.bean.vo.UserExtMsgVO
;
import
com.roncoo.education.user.feign.IBossUserExt
;
import
com.roncoo.education.util.base.BaseBiz
;
...
...
@@ -116,7 +115,7 @@ public class BossMsgBiz extends BaseBiz {
private
void
pushToUserByMsgPush
(
MsgPushVO
msgPush
)
{
// 获取缓存的条数
int
num
=
getCacheNum
(
msgPush
);
int
num
=
getCacheNum
();
for
(
int
i
=
1
;
i
<
num
+
1
;
i
++)
{
List
<
UserExtMsgVO
>
list
=
cacheRedis
.
list
(
RedisPreEnum
.
SYS_MSG_SEND
.
getCode
()
+
"_"
+
i
,
UserExtMsgVO
.
class
);
if
(
CollectionUtil
.
isNotEmpty
(
list
))
{
...
...
@@ -129,21 +128,15 @@ public class BossMsgBiz extends BaseBiz {
}
private
int
getCacheNum
(
MsgPushVO
msgPush
)
{
private
int
getCacheNum
()
{
boolean
flag
=
cacheRedis
.
hasKey
(
RedisPreEnum
.
SYS_MSG_SEND_NUM
.
getCode
());
if
(!
flag
)
{
// 找不到,去缓存用户信息
cacheUserForMsg
(
msgPush
);
bossUserExt
.
cachUserForMsg
(
);
}
int
num
=
cacheRedis
.
get
(
RedisPreEnum
.
SYS_MSG_SEND_NUM
.
getCode
(),
int
.
class
);
return
num
;
}
private
void
cacheUserForMsg
(
MsgPushVO
msgPush
)
{
UserExtQO
userEducationInfoQO
=
new
UserExtQO
();
userEducationInfoQO
.
setStatusId
(
StatusIdEnum
.
YES
.
getCode
());
bossUserExt
.
cachUserForMsg
(
userEducationInfoQO
);
}
private
void
updateMsg
(
Long
id
)
{
Msg
msgNew
=
new
Msg
();
msgNew
.
setId
(
id
);
...
...
@@ -170,7 +163,7 @@ public class BossMsgBiz extends BaseBiz {
public
int
push
()
{
List
<
Msg
>
list
=
dao
.
listByStatusIdAndIsSendAndIsTimeSendAndSendTime
(
StatusIdEnum
.
YES
.
getCode
(),
IsSendEnum
.
NO
.
getCode
(),
IsTimeSendEnum
.
YES
.
getCode
(),
new
Date
());
List
<
MsgPushVO
>
msgList
=
ArrayListUtil
.
copy
(
list
,
MsgPushVO
.
class
);
if
(
CollectionUtil
.
isEmpty
(
msgList
))
{
if
(
CollectionUtil
.
is
Not
Empty
(
msgList
))
{
for
(
MsgPushVO
vo
:
msgList
)
{
// 进行推送前,将当前站内信推送状态置为已通知
updateMsg
(
vo
.
getId
());
...
...
@@ -178,6 +171,7 @@ public class BossMsgBiz extends BaseBiz {
callbackExecutor
.
execute
(
new
Runnable
()
{
@Override
public
void
run
()
{
System
.
err
.
println
(
vo
);
pushToUserByMsgPush
(
vo
);
}
});
...
...
roncoo-education-system/roncoo-education-system-service/src/main/java/com/roncoo/education/system/service/controller/biz/BossMsgUserBiz.java
浏览文件 @
c185a940
...
...
@@ -3,6 +3,7 @@ package com.roncoo.education.system.service.controller.biz;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
com.aliyun.oas.utils.StringUtil
;
import
com.roncoo.education.system.common.bean.qo.MsgUserQO
;
import
com.roncoo.education.system.common.bean.vo.MsgUserVO
;
import
com.roncoo.education.system.service.dao.MsgUserDao
;
...
...
@@ -14,7 +15,7 @@ import com.roncoo.education.util.base.PageUtil;
import
com.roncoo.education.util.tools.BeanUtil
;
/**
* 站内信用户记录表
* 站内信用户记录表
*
* @author wuyun
*/
...
...
@@ -25,15 +26,21 @@ public class BossMsgUserBiz {
private
MsgUserDao
dao
;
public
Page
<
MsgUserVO
>
listForPage
(
MsgUserQO
qo
)
{
MsgUserExample
example
=
new
MsgUserExample
();
Criteria
c
=
example
.
createCriteria
();
example
.
setOrderByClause
(
" id desc "
);
Page
<
MsgUser
>
page
=
dao
.
listForPage
(
qo
.
getPageCurrent
(),
qo
.
getPageSize
(),
example
);
return
PageUtil
.
transform
(
page
,
MsgUserVO
.
class
);
MsgUserExample
example
=
new
MsgUserExample
();
Criteria
c
=
example
.
createCriteria
();
if
(
StringUtil
.
isNotEmpty
(
qo
.
getMsgTitle
()))
{
c
.
andMsgTitleLike
(
PageUtil
.
rightLike
(
qo
.
getMsgTitle
()));
}
if
(
StringUtil
.
isNotEmpty
(
qo
.
getMobile
()))
{
c
.
andMobileLike
(
PageUtil
.
rightLike
(
qo
.
getMobile
()));
}
example
.
setOrderByClause
(
" status_id desc, id desc "
);
Page
<
MsgUser
>
page
=
dao
.
listForPage
(
qo
.
getPageCurrent
(),
qo
.
getPageSize
(),
example
);
return
PageUtil
.
transform
(
page
,
MsgUserVO
.
class
);
}
public
int
save
(
MsgUserQO
qo
)
{
MsgUser
record
=
BeanUtil
.
copyProperties
(
qo
,
MsgUser
.
class
);
MsgUser
record
=
BeanUtil
.
copyProperties
(
qo
,
MsgUser
.
class
);
return
dao
.
save
(
record
);
}
...
...
@@ -42,13 +49,13 @@ public class BossMsgUserBiz {
}
public
MsgUserVO
getById
(
Long
id
)
{
MsgUser
record
=
dao
.
getById
(
id
);
MsgUser
record
=
dao
.
getById
(
id
);
return
BeanUtil
.
copyProperties
(
record
,
MsgUserVO
.
class
);
}
public
int
updateById
(
MsgUserQO
qo
)
{
MsgUser
record
=
BeanUtil
.
copyProperties
(
qo
,
MsgUser
.
class
);
MsgUser
record
=
BeanUtil
.
copyProperties
(
qo
,
MsgUser
.
class
);
return
dao
.
updateById
(
record
);
}
}
roncoo-education-user/roncoo-education-user-common/src/main/java/com/roncoo/education/user/common/interfaces/BossUserExt.java
浏览文件 @
c185a940
...
...
@@ -48,7 +48,7 @@ public interface BossUserExt {
* @return
* @author wuyun
*/
@RequestMapping
(
value
=
"/boss/user/userE
ducationInfo
/sumByCounts"
,
method
=
RequestMethod
.
POST
)
@RequestMapping
(
value
=
"/boss/user/userE
xt
/sumByCounts"
,
method
=
RequestMethod
.
POST
)
List
<
UserEchartsVO
>
sumByCounts
(
@RequestBody
UserExtEchartsQO
userExtEchartsQO
);
/**
...
...
@@ -56,6 +56,6 @@ public interface BossUserExt {
*
* @author wuyun
*/
@RequestMapping
(
value
=
"/boss/user/userE
ducationInfo
/cachUserForMsg"
)
void
cachUserForMsg
(
@RequestBody
UserExtQO
qo
);
@RequestMapping
(
value
=
"/boss/user/userE
xt
/cachUserForMsg"
)
void
cachUserForMsg
();
}
roncoo-education-user/roncoo-education-user-service/src/main/java/com/roncoo/education/user/service/controller/BossUserExtController.java
浏览文件 @
c185a940
...
...
@@ -64,8 +64,8 @@ public class BossUserExtController extends BaseController implements BossUserExt
}
@Override
public
void
cachUserForMsg
(
@RequestBody
UserExtQO
qo
)
{
biz
.
cachUserForMsg
(
qo
);
public
void
cachUserForMsg
()
{
biz
.
cachUserForMsg
();
}
}
roncoo-education-user/roncoo-education-user-service/src/main/java/com/roncoo/education/user/service/controller/biz/BossUserExtBiz.java
浏览文件 @
c185a940
...
...
@@ -111,7 +111,7 @@ public class BossUserExtBiz extends BaseBiz {
*
* @author wuyun
*/
public
void
cachUserForMsg
(
UserExtQO
qo
)
{
public
void
cachUserForMsg
()
{
int
pageSize
=
1000
;
Page
<
UserExtMsgVO
>
page
=
userDao
.
pageByStatusIdForMsg
(
StatusIdEnum
.
YES
.
getCode
(),
1
,
pageSize
);
// 缓存key条数
...
...
roncoo-education-user/roncoo-education-user-service/src/main/java/com/roncoo/education/user/service/dao/impl/UserDaoImpl.java
浏览文件 @
c185a940
...
...
@@ -76,7 +76,7 @@ public class UserDaoImpl extends AbstractBaseJdbc implements UserDao {
@Override
public
Page
<
UserExtMsgVO
>
pageByStatusIdForMsg
(
Integer
statusId
,
int
pageCurrent
,
int
pageSize
)
{
StringBuffer
sql
=
new
StringBuffer
(
"select user_no as userNo ,mobile from user_ext where 1"
);
StringBuffer
sql
=
new
StringBuffer
(
"select user_no as userNo ,mobile from user_ext where 1
=1
"
);
if
(
statusId
!=
null
)
{
sql
.
append
(
" and status_id ="
).
append
(
statusId
);
}
...
...
roncoo-education-util/src/main/java/com/roncoo/education/util/base/BaseController.java
浏览文件 @
c185a940
...
...
@@ -31,6 +31,7 @@ import com.roncoo.education.util.enums.IsPayEnum;
import
com.roncoo.education.util.enums.IsPutawayEnum
;
import
com.roncoo.education.util.enums.IsSendEnum
;
import
com.roncoo.education.util.enums.IsShowServiceEnum
;
import
com.roncoo.education.util.enums.MsgTypeEnum
;
import
com.roncoo.education.util.enums.NavEnum
;
import
com.roncoo.education.util.enums.OrderStatusEnum
;
import
com.roncoo.education.util.enums.PayTypeEnum
;
...
...
@@ -95,6 +96,7 @@ public class BaseController extends Base {
modelMap
.
put
(
"fileTypeEnums"
,
FileTypeEnum
.
values
());
modelMap
.
put
(
"isDefaultEnums"
,
IsDefaultEnum
.
values
());
modelMap
.
put
(
"isSendEnums"
,
IsSendEnum
.
values
());
modelMap
.
put
(
"msgTypeEnums"
,
MsgTypeEnum
.
values
());
}
/**
...
...
roncoo-education-util/src/main/java/com/roncoo/education/util/enums/MsgTypeEnum.java
0 → 100644
浏览文件 @
c185a940
/**
* Copyright 2015-2017 广州市领课网络科技有限公司
*/
package
com.roncoo.education.util.enums
;
import
lombok.AllArgsConstructor
;
import
lombok.Getter
;
/**
* 短信类型
*
* @author wuyun
*
*/
@Getter
@AllArgsConstructor
public
enum
MsgTypeEnum
{
SYSTEM
(
1
,
"系统消息"
),
OTHER
(
2
,
"其他"
);
private
Integer
code
;
private
String
desc
;
}
roncoo-education-web-boss/src/main/resources/templates/system/msg/add.ftl
浏览文件 @
c185a940
<#assign base=request.contextPath />
<div class="bjui-pageContent">
<form action="${base}/system/msg/save" data-toggle="validate" method="post">
<input type="hidden" name="msgType" value="1">
<div class="form-group dssj" style="display:none; z-index:100">
<label class="control-label x85">提醒时间:</label>
<input type="text" name="sendTimeString" data-toggle="datepicker" data-pattern="yyyy-MM-dd HH:mm:ss" size="20">
<div class="form-group">
<label class="control-label x85">标题:</label>
<input type="text" name="msgTitle" value="" placeholder="短信标题" size="20">
</div>
</br>
</br>
<div class="form-group">
<label class="control-label x85">定时发送:</label>
<input type="radio" name="isTimeSend" class="dsfs" value=1 data-toggle="icheck" data-label="开启"/>
<input type="radio" name="isTimeSend" class="dsfs" value=0 data-toggle="icheck" data-label="关闭" checked="true" />
<span class="fa fa-info-circle red"> 是否开启定时发送</span>
</div>
</br>
<div class="form-group dssj" style="display:none; z-index:100">
<label class="control-label x85">提醒时间:</label>
<input type="text" name="sendTimeString" data-toggle="datepicker" data-pattern="yyyy-MM-dd HH:mm:ss" size="20">
</div>
</br>
<div class="form-group">
<label for="statusId" class="control-label x85">是否置顶:</label>
<input type="radio" name="isTop" class="actCouponAdd" value=1 data-toggle="icheck" data-label="是"/>
<input type="radio" name="isTop" class="actCouponAdd" value=0 data-toggle="icheck" data-label="否" checked="true" />
</div>
</br>
<div class="form-group">
<label class="control-label x85">标题:</label>
<input type="text" name="msgTitle" value="" placeholder="短信标题" size="20">
</div>
</br>
<div class="form-group">
<label class="control-label x85">内容:</label>
...
...
roncoo-education-web-boss/src/main/resources/templates/system/msg/list.ftl
浏览文件 @
c185a940
...
...
@@ -5,13 +5,6 @@
<div class="bjui-searchBar">
<label>活动标题:<label>
<input size="15" name="msgTitle" value="${bean.msgTitle!}"/>
<label>状态:</label>
<select name="statusId" data-toggle="selectpicker" data-width="75">
<option value="">全部</option>
<#list statusIdEnums as b>
<option value="${b.code}"<#if bean.statusId?? && bean.statusId == b.code>selected="selected"</#if>>${b.desc!}</option>
</#list>
</select>
<button type="submit" class="btn-default" data-icon="search">查询</button>
<a class="btn btn-orange" href="javascript:;" data-toggle="reloadsearch" data-clear-query="true" data-icon="undo">清空查询</a>
...
...
roncoo-education-web-boss/src/main/resources/templates/system/msg/view.ftl
浏览文件 @
c185a940
<div class="bjui-pageContent">
<div class="form-group">
<div class="col-lg-6">
<label class="control-label">创建时间:</label>${bean.gmtCreate!}
</div>
</div>
<div class="form-group">
<div class="col-lg-6">
<label class="control-label">修改时间:</label>${bean.gmtModified!}
</div>
</div>
<div class="form-group">
<div class="col-lg-6">
<label class="control-label">状态(1有效, 0无效):</label>${bean.statusId!}
</div>
</div>
<div class="form-group">
<div class="col-lg-6">
<label class="control-label">短信类型:</label>${bean.msgType!}
</div>
</div>
<div class="form-group">
<div class="col-lg-6">
<label class="control-label">短信标题:</label>${bean.msgTitle!}
</div>
</div>
<div class="form-group">
<div class="col-lg-6">
<label class="control-label">短信内容:</label>${bean.msgText!}
</div>
</div>
<div class="form-group">
<div class="col-lg-6">
<label class="control-label">是否定时发送(1是,0否):</label>${bean.isTimeSend!}
</div>
</div>
<div class="form-group">
<div class="col-lg-6">
<label class="control-label">发送时间:</label>${bean.sendTime!}
</div>
</div>
<div class="form-group">
<div class="col-lg-6">
<label class="control-label">是否已发送(1是;0否):</label>${bean.isSend!}
</div>
</div>
<div class="form-group">
<div class="col-lg-6">
<label class="control-label">是否置顶(1是;0否):</label>${bean.isTop!}
</div>
</div>
<div class="form-group">
<div class="col-lg-6">
<label class="control-label">后台备注:</label>${bean.backRemark!}
</div>
</div>
<fieldset>
<legend>${bean.msgTitle!}</legend>
${bean.msgText!}
</fieldset>
</div>
<div class="bjui-pageFooter">
<ul>
...
...
roncoo-education-web-boss/src/main/resources/templates/system/msgUser/list.ftl
浏览文件 @
c185a940
...
...
@@ -7,17 +7,9 @@
<input size="15" name="msgTitle" value="${bean.msgTitle!}"/>
<label>用户手机:<label>
<input size="15" name="mobile" value="${bean.mobile!}"/>
<label>状态:</label>
<select name="statusId" data-toggle="selectpicker" data-width="75">
<option value="">全部</option>
<#list statusIdEnums as b>
<option value="${b.code}"<#if bean.statusId?? && bean.statusId == b.code>selected="selected"</#if>>${b.desc!}</option>
</#list>
</select>
<button type="submit" class="btn-default" data-icon="search">查询</button>
<a class="btn btn-orange" href="javascript:;" data-toggle="reloadsearch" data-clear-query="true" data-icon="undo">清空查询</a>
<a href="${base}/system/msgUser/add" class="btn btn-default" data-toggle="dialog" data-icon="plus" data-id="msgUser-add" data-options="{title:'添加', height:500}">添加 </a>
</div>
</form>
</div>
...
...
@@ -41,7 +33,7 @@
<td>${bean.mobile!}</td>
<td><#list msgTypeEnums as mm><#if bean.msgType?? && bean.msgType==mm.code>${mm.desc}</#if></#list></td>
<td>${bean.msgTitle!}</td>
<td><#list isDefaultEnum as em><#if bean.isRead?? && bean.isRead==em.code>${em.desc}</#if></#list></td>
<td><#list isDefaultEnum
s
as em><#if bean.isRead?? && bean.isRead==em.code>${em.desc}</#if></#list></td>
<td>
<a href="${base}/system/msgUser/delete?id=${bean.id}" class="btn btn-red" data-toggle="doajax" data-id="msgUser-delete" data-confirm-msg="确定要删除吗?">删除</a>
<@shiro.hasPermission name="/system/msg/view">
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录