消息接收人可以设置接收消息时间段

This commit is contained in:
刘祥超
2021-08-24 17:46:00 +08:00
parent d5eceb05ce
commit e9dadd5571
12 changed files with 258 additions and 30 deletions

View File

@@ -5,6 +5,7 @@ import (
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
"github.com/iwind/TeaGo/actions"
"regexp"
)
type CreatePopupAction struct {
@@ -29,6 +30,14 @@ func (this *CreatePopupAction) RunPost(params struct {
GroupIds string
Description string
TimeFromHour string
TimeFromMinute string
TimeFromSecond string
TimeToHour string
TimeToMinute string
TimeToSecond string
Must *actions.Must
CSRF *actionutils.CSRF
}) {
@@ -40,12 +49,26 @@ func (this *CreatePopupAction) RunPost(params struct {
groupIds := utils.SplitNumbers(params.GroupIds)
var digitReg = regexp.MustCompile(`^\d+$`)
var timeFrom = ""
if digitReg.MatchString(params.TimeFromHour) && digitReg.MatchString(params.TimeFromMinute) && digitReg.MatchString(params.TimeFromSecond) {
timeFrom = params.TimeFromHour + ":" + params.TimeFromMinute + ":" + params.TimeFromSecond
}
var timeTo = ""
if digitReg.MatchString(params.TimeToHour) && digitReg.MatchString(params.TimeToMinute) && digitReg.MatchString(params.TimeToSecond) {
timeTo = params.TimeToHour + ":" + params.TimeToMinute + ":" + params.TimeToSecond
}
resp, err := this.RPC().MessageRecipientRPC().CreateMessageRecipient(this.AdminContext(), &pb.CreateMessageRecipientRequest{
AdminId: params.AdminId,
MessageMediaInstanceId: params.InstanceId,
User: params.User,
MessageRecipientGroupIds: groupIds,
Description: params.Description,
TimeFrom: timeFrom,
TimeTo: timeTo,
})
if err != nil {
this.ErrorPage(err)

View File

@@ -44,6 +44,8 @@ func (this *RecipientAction) RunGet(params struct {
},
"user": recipient.User,
"description": recipient.Description,
"timeFrom": recipient.TimeFrom,
"timeTo": recipient.TimeTo,
}
this.Show()

View File

@@ -6,6 +6,8 @@ import (
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
"github.com/iwind/TeaGo/actions"
"github.com/iwind/TeaGo/maps"
"regexp"
"strings"
)
type UpdateAction struct {
@@ -30,6 +32,27 @@ func (this *UpdateAction) RunGet(params struct {
return
}
var timeFromHour = ""
var timeFromMinute = ""
var timeFromSecond = ""
if len(recipient.TimeFrom) > 0 {
var pieces = strings.Split(recipient.TimeFrom, ":")
timeFromHour = pieces[0]
timeFromMinute = pieces[1]
timeFromSecond = pieces[2]
}
var timeToHour = ""
var timeToMinute = ""
var timeToSecond = ""
if len(recipient.TimeTo) > 0 {
var pieces = strings.Split(recipient.TimeTo, ":")
timeToHour = pieces[0]
timeToMinute = pieces[1]
timeToSecond = pieces[2]
}
this.Data["recipient"] = maps.Map{
"id": recipient.Id,
"admin": maps.Map{
@@ -43,8 +66,14 @@ func (this *UpdateAction) RunGet(params struct {
"id": recipient.MessageMediaInstance.Id,
"name": recipient.MessageMediaInstance.Name,
},
"user": recipient.User,
"description": recipient.Description,
"user": recipient.User,
"description": recipient.Description,
"timeFromHour": timeFromHour,
"timeFromMinute": timeFromMinute,
"timeFromSecond": timeFromSecond,
"timeToHour": timeToHour,
"timeToMinute": timeToMinute,
"timeToSecond": timeToSecond,
}
this.Show()
@@ -61,6 +90,14 @@ func (this *UpdateAction) RunPost(params struct {
Description string
IsOn bool
TimeFromHour string
TimeFromMinute string
TimeFromSecond string
TimeToHour string
TimeToMinute string
TimeToSecond string
Must *actions.Must
CSRF *actionutils.CSRF
}) {
@@ -74,6 +111,18 @@ func (this *UpdateAction) RunPost(params struct {
groupIds := utils.SplitNumbers(params.GroupIds)
var digitReg = regexp.MustCompile(`^\d+$`)
var timeFrom = ""
if digitReg.MatchString(params.TimeFromHour) && digitReg.MatchString(params.TimeFromMinute) && digitReg.MatchString(params.TimeFromSecond) {
timeFrom = params.TimeFromHour + ":" + params.TimeFromMinute + ":" + params.TimeFromSecond
}
var timeTo = ""
if digitReg.MatchString(params.TimeToHour) && digitReg.MatchString(params.TimeToMinute) && digitReg.MatchString(params.TimeToSecond) {
timeTo = params.TimeToHour + ":" + params.TimeToMinute + ":" + params.TimeToSecond
}
_, err := this.RPC().MessageRecipientRPC().UpdateMessageRecipient(this.AdminContext(), &pb.UpdateMessageRecipientRequest{
MessageRecipientId: params.RecipientId,
AdminId: params.AdminId,
@@ -82,6 +131,8 @@ func (this *UpdateAction) RunPost(params struct {
MessageRecipientGroupIds: groupIds,
Description: params.Description,
IsOn: params.IsOn,
TimeFrom: timeFrom,
TimeTo: timeTo,
})
if err != nil {
this.ErrorPage(err)

View File

@@ -34,11 +34,69 @@
</td>
</tr>
<tr>
<td>备注</td>
<td>
<textarea rows="3" name="description" maxlength="100"></textarea>
</td>
<td colspan="2"><more-options-indicator></more-options-indicator></td>
</tr>
<tbody v-show="moreOptionsVisible">
<tr>
<td>发送时间</td>
<td>
<div class="ui fields inline">
<div class="ui field">
开始时间:
</div>
<div class="ui field">
<div class="ui input right labeled">
<input type="text" name="timeFromHour" size="2" maxlength="2" placeholder="" v-model="timeFromHour"/>
<span class="ui label"></span>
</div>
</div>
<div class="ui field">
<div class="ui input right labeled">
<input type="text" name="timeFromMinute" size="2" maxlength="2" placeholder="" v-model="timeFromMinute"/>
<span class="ui label"></span>
</div>
</div>
<div class="ui field">
<div class="ui input right labeled">
<input type="text" name="timeFromSecond" size="2" maxlength="2" placeholder="" v-model="timeFromSecond"/>
<span class="ui label"></span>
</div>
</div>
</div>
<div class="ui divider"></div>
<div class="ui fields inline">
<div class="ui field">
结束时间:
</div>
<div class="ui field">
<div class="ui input right labeled">
<input type="text" name="timeToHour" size="2" maxlength="2" placeholder="" v-model="timeToHour"/>
<span class="ui label"></span>
</div>
</div>
<div class="ui field">
<div class="ui input right labeled">
<input type="text" name="timeToMinute" size="2" maxlength="2" placeholder="" v-model="timeToMinute"/>
<span class="ui label"></span>
</div>
</div>
<div class="ui field">
<div class="ui input right labeled">
<input type="text" name="timeToSecond" size="2" maxlength="2" placeholder="" v-model="timeToSecond"/>
<span class="ui label"></span>
</div>
</div>
</div>
<p class="comment">24小时制即小时从0到23。如果填写了发送时间系统只会在这个时间段内给当前接收人发送消息。 <a href="" v-if="timeFromHour.length > 0 || timeFromMinute.length > 0 || timeFromSecond.length > 0 || timeToHour.length > 0 || timeToMinute.length > 0 || timeToSecond.length > 0" @click.prevent="clearTime">[清除]</a></p>
</td>
</tr>
<tr>
<td>备注</td>
<td>
<textarea rows="3" name="description" maxlength="100"></textarea>
</td>
</tr>
</tbody>
</table>
<submit-btn></submit-btn>

View File

@@ -1,11 +1,30 @@
Tea.context(function () {
this.userDescription = ""
this.userDescription = ""
this.changeInstance = function (instance) {
if (instance != null) {
this.userDescription = instance.media.userDescription
} else {
this.userDescription = ""
}
}
this.changeInstance = function (instance) {
if (instance != null) {
this.userDescription = instance.media.userDescription
} else {
this.userDescription = ""
}
}
/**
* 发送时间
*/
this.timeFromHour = ""
this.timeFromMinute = ""
this.timeFromSecond = ""
this.timeToHour = ""
this.timeToMinute = ""
this.timeToSecond = ""
this.clearTime = function () {
this.timeFromHour = ""
this.timeFromMinute = ""
this.timeFromSecond = ""
this.timeToHour = ""
this.timeToMinute = ""
this.timeToSecond = ""
}
})

View File

@@ -1,7 +1,7 @@
Tea.context(function () {
this.createRecipient = function () {
teaweb.popup(Tea.url(".createPopup"), {
height: "26em",
height: "27em",
callback: function () {
teaweb.success("保存成功", function () {
teaweb.reload()

View File

@@ -348,14 +348,14 @@
<div class="ui fields inline">
<div class="ui field">
<div class="ui right labeled input">
<input type="text" name="rateCount" size="4"/>
<input type="text" name="rateCount" size="4" maxlength="4"/>
<span class="ui label"></span>
</div>
</div>
<div class="ui field">/</div>
<div class="ui field">
<div class="ui right labeled input">
<input type="text" name="rateMinutes" size="4"/>
<input type="text" name="rateMinutes" size="4" maxlength="4"/>
<span class="ui label">分钟</span>
</div>
</div>

View File

@@ -18,7 +18,7 @@
</tr>
</thead>
<tr v-for="instance in instances">
<td>{{instance.name}}</td>
<td><a :href="'/admins/recipients/instances/instance?instanceId=' + instance.id">{{instance.name}}</a></td>
<td>{{instance.media.name}}</td>
<td>
<span v-if="instance.description.length > 0">{{instance.description}}</span>

View File

@@ -348,14 +348,14 @@
<div class="ui fields inline">
<div class="ui field">
<div class="ui right labeled input">
<input type="text" name="rateCount" size="4" v-model="instance.rate.count"/>
<input type="text" name="rateCount" size="4" v-model="instance.rate.count" maxlength="4"/>
<span class="ui label"></span>
</div>
</div>
<div class="ui field">/</div>
<div class="ui field">
<div class="ui right labeled input">
<input type="text" name="rateMinutes" size="4" v-model="instance.rate.minutes"/>
<input type="text" name="rateMinutes" size="4" v-model="instance.rate.minutes" maxlength="4"/>
<span class="ui label">分钟</span>
</div>
</div>

View File

@@ -40,6 +40,13 @@
</div>
</td>
</tr>
<tr>
<td>发送时间</td>
<td>
<span v-if="recipient.timeFrom.length > 0 && recipient.timeTo.length > 0">{{recipient.timeFrom}} - {{recipient.timeTo}}</span>
<span v-else class="disabled">-</span>
</td>
</tr>
<tr>
<td>备注</td>
<td>

View File

@@ -35,17 +35,76 @@
</td>
</tr>
<tr>
<td>备注</td>
<td>
<textarea rows="3" name="description" maxlength="100" v-model="recipient.description"></textarea>
</td>
</tr>
<tr>
<td>是否启用</td>
<td>
<checkbox name="isOn" value="1" v-model="recipient.isOn"></checkbox>
</td>
<td colspan="2"><more-options-indicator></more-options-indicator></td>
</tr>
<tbody v-show="moreOptionsVisible">
<tr>
<td>发送时间</td>
<td>
<div class="ui fields inline">
<div class="ui field">
开始时间:
</div>
<div class="ui field">
<div class="ui input right labeled">
<input type="text" name="timeFromHour" size="2" maxlength="2" placeholder="" v-model="recipient.timeFromHour"/>
<span class="ui label"></span>
</div>
</div>
<div class="ui field">
<div class="ui input right labeled">
<input type="text" name="timeFromMinute" size="2" maxlength="2" placeholder="" v-model="recipient.timeFromMinute"/>
<span class="ui label"></span>
</div>
</div>
<div class="ui field">
<div class="ui input right labeled">
<input type="text" name="timeFromSecond" size="2" maxlength="2" placeholder="" v-model="recipient.timeFromSecond"/>
<span class="ui label"></span>
</div>
</div>
</div>
<div class="ui divider"></div>
<div class="ui fields inline">
<div class="ui field">
结束时间:
</div>
<div class="ui field">
<div class="ui input right labeled">
<input type="text" name="timeToHour" size="2" maxlength="2" placeholder="" v-model="recipient.timeToHour"/>
<span class="ui label"></span>
</div>
</div>
<div class="ui field">
<div class="ui input right labeled">
<input type="text" name="timeToMinute" size="2" maxlength="2" placeholder="" v-model="recipient.timeToMinute"/>
<span class="ui label"></span>
</div>
</div>
<div class="ui field">
<div class="ui input right labeled">
<input type="text" name="timeToSecond" size="2" maxlength="2" placeholder="" v-model="recipient.timeToSecond"/>
<span class="ui label"></span>
</div>
</div>
</div>
<p class="comment">24小时制即小时从0到23。如果填写了发送时间系统只会在这个时间段内给当前接收人发送消息。
<a href="" v-if="recipient.timeFromHour.length > 0 || recipient.timeFromMinute.length > 0 || recipient.timeFromSecond.length > 0 || recipient.timeToHour.length > 0 || recipient.timeToMinute.length > 0 || recipient.timeToSecond.length > 0" @click.prevent="clearTime">[清除]</a> </p>
</td>
</tr>
<tr>
<td>备注</td>
<td>
<textarea rows="3" name="description" maxlength="100" v-model="recipient.description"></textarea>
</td>
</tr>
<tr>
<td>是否启用</td>
<td>
<checkbox name="isOn" value="1" v-model="recipient.isOn"></checkbox>
</td>
</tr>
</tbody>
</table>
<submit-btn></submit-btn>

View File

@@ -17,4 +17,13 @@ Tea.context(function () {
})
})
}
this.clearTime = function () {
this.recipient.timeFromHour = ""
this.recipient.timeFromMinute = ""
this.recipient.timeFromSecond = ""
this.recipient.timeToHour = ""
this.recipient.timeToMinute = ""
this.recipient.timeToSecond = ""
}
})