增加功能:重置密码弹出框增加重置原因信息 #IS7V2

This commit is contained in:
Argo Zhang 2019-03-05 14:53:34 +08:00
parent 45cfc54c15
commit 642b74edfc
9 changed files with 59 additions and 5 deletions

View File

@ -45,7 +45,7 @@ namespace Bootstrap.Admin.Controllers.Api
} }
/// <summary> /// <summary>
/// /// 重置密码调用
/// </summary> /// </summary>
/// <param name="userName"></param> /// <param name="userName"></param>
/// <param name="user"></param> /// <param name="user"></param>

View File

@ -75,6 +75,9 @@ namespace Bootstrap.Admin.Controllers.Api
case "group": case "group":
ret = UserHelper.RetrievesByGroupId(id); ret = UserHelper.RetrievesByGroupId(id);
break; break;
case "reset":
ret = UserHelper.RetrieveResetReasonsByUserName(id).Select(u => new { u.Key, u.Value });
break;
} }
return ret; return ret;
} }

View File

@ -162,7 +162,7 @@
<span class="fa fa-user-plus"></span> <span class="fa fa-user-plus"></span>
</div> </div>
</div> </div>
<input type="text" id="f_userName" autocomplete="off" class="form-control" placeholder="登陆账号不可为空" minlength="4" maxlength="50" remote="api/Register" data-remote-msg="此用户已存在" data-valid="true" /> <input type="text" id="f_userName" autocomplete="off" class="form-control" placeholder="登陆账号不可为空" minlength="4" maxlength="50" data-valid="true" />
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
@ -178,7 +178,7 @@
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="f_desc">申请理由:</label> <label for="f_desc">申请理由:</label>
<textarea id="f_desc" class="form-control" placeholder="申请理由500字以内" rows="3" maxlength="500" data-valid="true"></textarea> <textarea id="f_desc" class="form-control" placeholder="申请理由500字以内" rows="3" maxlength="500" data-valid="true">我是用户XXX我的手机号是XXXXXX由于密码忘记请将密码重置为123登录后我自行更改谢谢管理员</textarea>
</div> </div>
</div> </div>
<div class="modal-footer"> <div class="modal-footer">

View File

@ -80,7 +80,7 @@
</div> </div>
<div class="modal-body"> <div class="modal-body">
<form class="form-inline"> <form class="form-inline">
<div class="row" id="resetForm"> <div class="form-row" id="resetForm">
<div class="form-group col-sm-6"> <div class="form-group col-sm-6">
<label class="control-label" for="password">登录密码</label> <label class="control-label" for="password">登录密码</label>
<input type="password" class="form-control" id="resetPassword" placeholder="不可为空50字以内" maxlength="50" data-valid="true" /> <input type="password" class="form-control" id="resetPassword" placeholder="不可为空50字以内" maxlength="50" data-valid="true" />
@ -89,6 +89,10 @@
<label class="control-label" for="confirm">确认密码</label> <label class="control-label" for="confirm">确认密码</label>
<input type="password" class="form-control" id="resetConfirm" placeholder="与登陆密码一致50字以内" maxlength="50" equalTo="#resetPassword" data-valid="true" /> <input type="password" class="form-control" id="resetConfirm" placeholder="与登陆密码一致50字以内" maxlength="50" equalTo="#resetPassword" data-valid="true" />
</div> </div>
<div class="form-group col-sm-12">
<label class="control-label" for="resetReason">重置原因</label>
<textarea class="form-control flex-sm-fill" id="resetReason" rows="3" readonly="readonly"></textarea>
</div>
</div> </div>
</form> </form>
</div> </div>

View File

@ -7,6 +7,7 @@
var $dialogGroupForm = $('#groupForm'); var $dialogGroupForm = $('#groupForm');
var $dialogReset = $('#dialogReset'); var $dialogReset = $('#dialogReset');
var $dialogResetHeader = $('#myResetModalLabel'); var $dialogResetHeader = $('#myResetModalLabel');
var $resetReason = $('#resetReason');
var $table = $('table'); var $table = $('table');
$table.lgbTable({ $table.lgbTable({
@ -102,7 +103,17 @@
$table.bootstrapTable('uncheckAll'); $table.bootstrapTable('uncheckAll');
$table.bootstrapTable('check', index); $table.bootstrapTable('check', index);
$dialogResetHeader.text($.format("{0} - 重置密码窗口", row.UserName)); $dialogResetHeader.text($.format("{0} - 重置密码窗口", row.UserName));
$dialogReset.modal('show'); $.bc({
id: row.UserName, url: User.url, method: 'post', query: { type: "reset" }, callback: function (result) {
if ($.isArray(result)) {
var reason = result.map(function (v, index) {
return $.format("{0}: {1}", v.Key, v.Value);
}).join('\n');
$resetReason.text(reason);
$dialogReset.modal('show');
}
}
});
} }
} }
} }

View File

@ -247,5 +247,12 @@ namespace Bootstrap.DataAccess
/// <param name="userName"></param> /// <param name="userName"></param>
/// <returns></returns> /// <returns></returns>
public static ResetUser RetrieveResetUserByUserName(string userName) => DbContextManager.Create<ResetUser>().RetrieveUserByUserName(userName); public static ResetUser RetrieveResetUserByUserName(string userName) => DbContextManager.Create<ResetUser>().RetrieveUserByUserName(userName);
/// <summary>
/// 通过登录账户获得重置密码原因
/// </summary>
/// <param name="userName"></param>
/// <returns></returns>
public static IEnumerable<KeyValuePair<DateTime, string>> RetrieveResetReasonsByUserName(string userName) => DbContextManager.Create<ResetUser>().RetrieveResetReasonsByUserName(userName);
} }
} }

View File

@ -1,5 +1,7 @@
using PetaPoco; using PetaPoco;
using System; using System;
using System.Collections.Generic;
using System.Linq;
namespace Bootstrap.DataAccess namespace Bootstrap.DataAccess
{ {
@ -58,5 +60,12 @@ namespace Bootstrap.DataAccess
/// <param name="userName"></param> /// <param name="userName"></param>
/// <returns></returns> /// <returns></returns>
public virtual void DeleteByUserName(string userName) => DbManager.Create().Delete<ResetUser>("where UserName = @0", userName); public virtual void DeleteByUserName(string userName) => DbManager.Create().Delete<ResetUser>("where UserName = @0", userName);
/// <summary>
///
/// </summary>
/// <param name="userName"></param>
/// <returns></returns>
public virtual IEnumerable<KeyValuePair<DateTime, string>> RetrieveResetReasonsByUserName(string userName) => DbManager.Create().Fetch<ResetUser>("where UserName = @0 order by ResetTime desc", userName).Select(user => new KeyValuePair<DateTime, string>(user.ResetTime, user.Reason));
} }
} }

View File

@ -59,6 +59,9 @@ namespace Bootstrap.Admin.Api
var gid = new Group().Retrieves().Where(r => r.GroupName == "Admin").First().Id; var gid = new Group().Retrieves().Where(r => r.GroupName == "Admin").First().Id;
ret = await Client.PostAsJsonAsync<string, IEnumerable<object>>($"{gid}?type=group", string.Empty); ret = await Client.PostAsJsonAsync<string, IEnumerable<object>>($"{gid}?type=group", string.Empty);
Assert.NotNull(ret); Assert.NotNull(ret);
ret = await Client.PostAsJsonAsync<string, IEnumerable<object>>("UnitTest?type=reset", string.Empty);
Assert.NotNull(ret);
} }
[Fact] [Fact]

View File

@ -57,5 +57,22 @@ namespace Bootstrap.DataAccess
var count = db.ExecuteScalar<int>("select count(Id) from ResetUsers"); var count = db.ExecuteScalar<int>("select count(Id) from ResetUsers");
Assert.Equal(0, count); Assert.Equal(0, count);
} }
[Fact]
public void RetrieveResetReasonsByUserName_Ok()
{
var resetUser = new ResetUser()
{
UserName = "UnitTest",
Reason = "UnitTest",
DisplayName = "UnitTest",
ResetTime = DateTime.Now
};
var db = DbManager.Create();
db.Save(resetUser);
var reasons = resetUser.RetrieveResetReasonsByUserName(resetUser.UserName);
Assert.NotEmpty(reasons);
}
} }
} }