Commit 5a7fd660 authored by liudong1993's avatar liudong1993

Merge branch 'master' of http://gitlab.oytour.com/Kui2/education

parents b5040071 0780597e
......@@ -274,6 +274,15 @@ namespace Edu.Common
}
}
public static int IsSendMsg
{
get
{
int.TryParse(ReadConfigKey("IsSendMsg"), out int _isSendMsg);
return _isSendMsg;
}
}
/// <summary>
/// 导出文件保存路径
/// </summary>
......
......@@ -16,6 +16,11 @@ namespace Edu.Common.Enum.Public
/// 阿里云
/// </summary>
[EnumField("阿里云")]
Alicloud = 2
Alicloud = 2,
/// <summary>
/// 系统
/// </summary>
[EnumField("系统")]
System = 3
}
}
using System;
using System.Collections.Generic;
using System.Text;
using Edu.Common.Plugin;
namespace Edu.Common.Enum.System
{
public enum BaseTemplateTypeEnum
{
/// <summary>
/// 订单下单成功通知
/// </summary>
[EnumField("订单下单成功通知")]
OrderSuccess = 1,
/// <summary>
/// 订单下单失败通知
/// </summary>
[EnumField("订单下单失败通知")]
OrderFail = 2
}
}
using System;
using System.Collections.Generic;
using System.Text;
using Edu.Common.Plugin;
namespace Edu.Common.Enum.System
{
public enum MsgSendStatusEnum
{
//发送状态1:等待回执,2:发送失败,3:发送成功。
/// <summary>
/// 等待回执
/// </summary>
[EnumField("等待回执")]
InReceipt = 1,
/// <summary>
/// 发送失败
/// </summary>
[EnumField("发送失败")]
Fail = 2,
/// <summary>
/// 发送成功
/// </summary>
[EnumField("发送成功")]
Success = 3,
}
}
using System;
using System.Collections.Generic;
using System.Text;
using Edu.Common.Enum.Public;
using Edu.Common.Enum.System;
using VT.FW.DB;
namespace Edu.Model.Entity.System
{
/// <summary>
/// 短信发送记录实体表
/// </summary>
[Serializable]
[DB(ConnectionName = "DefaultConnection")]
public class RB_Msg_BaseTemplate
{
public int ID { get; set; }
/// <summary>
/// 集团编号
/// </summary>
public int Group_Id { get; set; }
/// <summary>
/// 模板状态,0-正常,1-禁用
/// </summary>
public int TemplateStaus { get; set; }
public BaseTemplateTypeEnum BaseTemplateType { get; set; }
/// <summary>
/// 存储位置,1-腾讯云,2-阿里,3-其他
/// </summary>
public StoreTypeEnum StoreType { get; set; }
/// <summary>
/// 签名
/// </summary>
public string Sign { get; set; }
/// <summary>
/// 消息配置信息
/// </summary>
public string TemplateId { get; set; }
/// <summary>
/// 创建人
/// </summary>
public int CreateBy { get; set; }
/// <summary>
/// 创建时间
/// </summary>
public DateTime CreateDate { get; set; }
}
}
using System;
using System.Collections.Generic;
using System.Text;
using Edu.Common.Enum.System;
using VT.FW.DB;
namespace Edu.Model.Entity.System
......@@ -36,10 +37,10 @@ namespace Edu.Model.Entity.System
public DateTime CreateDate { get; set; }
/// <summary>
/// 发送状态1-失败,2-成功
/// 发送状态1:等待回执,2:发送失败,3:发送成功。
/// </summary>
public int SendStatus { get; set; }
public MsgSendStatusEnum? SendStatus { get; set; }
/// <summary>
......@@ -67,5 +68,17 @@ namespace Edu.Model.Entity.System
/// 接收人电话
/// </summary>
public string ReceiverPhone { get; set; }
/// <summary>
/// 存储位置,1-腾讯云,2-阿里,3-其他
/// </summary>
public Common.Enum.Public.StoreTypeEnum StoreType { get; set; }
/// <summary>
/// 消息配置信息
/// </summary>
public string MsgConfigure { get; set; }
}
}
......@@ -56,6 +56,10 @@ namespace Edu.Model.Public
/// </summary>
public string CustomDomain { get; set; }
/// <summary>
/// 上传域名
/// </summary>
public string UploadDomain { get; set; }
/// <summary>
/// 自定义域名
......
using System;
using System.Collections.Generic;
using System.Text;
using Edu.Model.Entity.System;
namespace Edu.Model.ViewModel.System
{
public class RB_Msg_BaseTemplate_ViewModel: RB_Msg_BaseTemplate
{
/// <summary>
/// 创建时间字符串
/// </summary>
public string CreateDateStr
{
get
{
return Common.ConvertHelper.FormatTime(this.CreateDate);
}
}
public string BaseTemplateTypeStr { get; set; }
}
}
......@@ -28,5 +28,8 @@ namespace Edu.Model.ViewModel.System
/// </summary>
public string EndDate { get; set; }
public RB_Msg_Base_ViewModel MsgBase { get; set; }
}
}
using Edu.Common.Enum.User;
using System;
namespace Edu.Model.ViewModel.User
{
/// <summary>
/// 后台员工管理实体类
/// </summary>
public class AdminEmp_ViewModel
{
/// <summary>
/// 表主键编号
/// </summary>
public int TabKeyId { get; set; }
/// <summary>
/// 头像
/// </summary>
public string EmployeeIcon { get; set; }
/// <summary>
/// 员工姓名
/// </summary>
public string EmployeeName { get; set; }
/// <summary>
/// 学校编号
/// </summary>
public int School_Id { get; set; }
/// <summary>
/// 集团编号
/// </summary>
public int Group_Id { get; set; }
/// <summary>
/// 部门编号
/// </summary>
public int Dept_Id { get; set; }
/// <summary>
/// 岗位编号
/// </summary>
public int Post_Id { get; set; }
/// <summary>
/// 性别
/// </summary>
public int Sex { get; set; }
/// <summary>
/// 员工电话
/// </summary>
public string EmployeePhone { get; set; }
/// <summary>
/// 员工生日
/// </summary>
public DateTime BirthDate { get; set; }
/// <summary>
/// 学历
/// </summary>
public EducationEnum Education { get; set; }
/// <summary>
/// 在职状态
/// </summary>
public LeaveStatusEnum LeaveStatus { get; set; }
/// <summary>
/// 账号类型
/// </summary>
public AccountTypeEnum AccountType { get; set; }
/// <summary>
/// 账号
/// </summary>
public string Account { get; set; }
/// <summary>
/// 员工编号
/// </summary>
public int EmployeeId { get; set; }
/// <summary>
/// 离职时间
/// </summary>
public DateTime? LeaveTime { get; set; }
/// <summary>
/// 集团名称
/// </summary>
public string GroupName { get; set; }
/// <summary>
/// 校区名称
/// </summary>
public string SchoolName { get; set; }
/// <summary>
/// 部门名称
/// </summary>
public string DeptName { get; set; }
/// <summary>
/// 岗位名称
/// </summary>
public string PostName { get; set; }
/// <summary>
/// 行政备注
/// </summary>
public string Remarks { get; set; }
/// <summary>
/// 入职时间
/// </summary>
public DateTime EntryTime { get; set; }
/// <summary>
/// 入职开始时间
/// </summary>
public string StartEntryTime { get; set; }
/// <summary>
/// 入职结束时间
/// </summary>
public string EndEntryTime { get; set; }
/// <summary>
/// 开始离职时间
/// </summary>
public string StartLeaveTime { get; set; }
/// <summary>
/// 结束离职时间
/// </summary>
public string EndLeaveTime { get; set; }
/// <summary>
/// 开始生日日期
/// </summary>
public string StartBirthDate { get; set; }
/// <summary>
/// 结束生日日期
/// </summary>
public string EndBirthDate { get; set; }
/// <summary>
/// 是否近7日生日
/// </summary>
public int IsBirth { get; set; }
}
}
using System;
using Edu.Common.Enum.User;
using System;
using System.Collections.Generic;
using System.Text;
......@@ -73,5 +74,45 @@ namespace Edu.Model.ViewModel.User
/// 部门层级
/// </summary>
public int DeptTier { get; set; }
/// <summary>
/// 性别(0-男,1-女)
/// </summary>
public int Sex { get; set; }
/// <summary>
/// 出生日期
/// </summary>
public DateTime BirthDate { get; set; }
/// <summary>
/// 学历
/// </summary>
public EducationEnum Education { get; set; }
/// <summary>
/// 入职时间
/// </summary>
public DateTime EntryTime { get; set; }
/// <summary>
/// 地址
/// </summary>
public string Address { get; set; }
/// <summary>
/// 在职状态
/// </summary>
public LeaveStatusEnum LeaveStatus { get; set; }
/// <summary>
/// 离职时间
/// </summary>
public DateTime? LeaveTime { get; set; }
/// <summary>
/// 是否近7日生日
/// </summary>
public int IsBirth { get; set; }
}
}
......@@ -9,6 +9,13 @@
<ProjectReference Include="..\Edu.Common\Edu.Common.csproj" />
<ProjectReference Include="..\Edu.Model\Edu.Model.csproj" />
<ProjectReference Include="..\Edu.Repository\Edu.Repository.csproj" />
<ProjectReference Include="..\Edu.ThirdCore\Edu.ThirdCore.csproj" />
</ItemGroup>
<ItemGroup>
<Reference Include="aliyun-net-sdk-dysmsapi">
<HintPath>..\Edu.ThirdCore\lib\aliyun-net-sdk-dysmsapi.dll</HintPath>
</Reference>
</ItemGroup>
</Project>
This diff is collapsed.
......@@ -22,6 +22,11 @@ namespace Edu.Module.User
/// </summary>
private readonly RB_DepartmentRepository departmentRepository = new RB_DepartmentRepository();
/// <summary>
/// 管理者仓储层对象
/// </summary>
private readonly RB_ManagerRepository managerRepository = new RB_ManagerRepository();
/// <summary>
/// 获取员工列表【管理者、讲师、助教】
/// </summary>
......@@ -32,6 +37,19 @@ namespace Edu.Module.User
return accountRepository.GetEmployeeListRepository(query);
}
/// <summary>
/// 获取员工分页列表
/// </summary>
/// <param name="pageIndex"></param>
/// <param name="pageSize"></param>
/// <param name="rowsCount"></param>
/// <param name="query"></param>
/// <returns></returns>
public List<Employee_ViewModel> GetEmployeePageListModule(int pageIndex, int pageSize, out long rowsCount, Employee_ViewModel query)
{
return accountRepository.GetEmployeePageListRepository(pageIndex, pageSize, out rowsCount, query);
}
/// <summary>
/// 根据员工部门获取员工列表
/// </summary>
......@@ -77,5 +95,15 @@ namespace Edu.Module.User
}
return employeeList;
}
/// <summary>
/// 根据编号获取员工信息
/// </summary>
/// <param name="Id"></param>
/// <returns></returns>
public Employee_ViewModel GetEmployeeModule(int Id)
{
return accountRepository.GetEmployeeInfo(Id);
}
}
}
\ No newline at end of file
......@@ -53,28 +53,6 @@ namespace Edu.Module.User
return managerRepository.GetManagerListRepository(query);
}
/// <summary>
/// 员工分页列表(管理者、讲师、助教)
/// </summary>
/// <param name="pageIndex"></param>
/// <param name="pageSize"></param>
/// <param name="rowsCount"></param>
/// <param name="query"></param>
/// <returns></returns>
public List<AdminEmp_ViewModel> GetAdminEmpPageListModule(int pageIndex, int pageSize, out long rowsCount, AdminEmp_ViewModel query)
{
var list = managerRepository.GetAdminEmpPageListRepository(pageIndex, pageSize, out rowsCount, query);
if (list != null && list.Count > 0)
{
string postIds = string.Join(",", list.Where(qitem => qitem.Post_Id > 0).Select(qitem => qitem.Post_Id));
foreach (var item in list)
{
}
}
return list;
}
/// <summary>
/// 新增修改管理者
/// </summary>
......
......@@ -7,7 +7,7 @@ using Edu.Model.ViewModel.System;
namespace Edu.Repository.System
{
public class RB_Msg_BaseRepository:BaseRepository<RB_Msg_Base>
public class RB_Msg_BaseRepository : BaseRepository<RB_Msg_Base>
{
/// <summary>
/// 表名称
......@@ -22,7 +22,7 @@ namespace Edu.Repository.System
public List<RB_Msg_Base_Function_ViewModel> GetListRepository(RB_Msg_Base_Function_ViewModel query)
{
StringBuilder builder = new StringBuilder();
builder.Append($" SELECT * FROM {TableName} ");
builder.Append($" SELECT * FROM {TableName} where Status=0 ");
if (query != null)
{
if (query.Group_Id > 0)
......@@ -31,7 +31,7 @@ namespace Edu.Repository.System
}
if (query.StoreType > 0)
{
builder.Append($" AND {nameof(RB_Msg_Base.StoreType)}={query.StoreType}");
builder.Append($" AND {nameof(RB_Msg_Base.StoreType)}={(int)query.StoreType}");
}
......@@ -48,7 +48,7 @@ namespace Edu.Repository.System
public List<RB_Msg_Base_Function_ViewModel> GetPageListRepository(int pageIndex, int pageSize, out long rowsCount, RB_Msg_Base_Function_ViewModel query)
{
StringBuilder builder = new StringBuilder();
builder.Append($" SELECT * FROM {TableName} where 1=1 ");
builder.Append($" SELECT * FROM {TableName} where Status=0 ");
if (query != null)
{
if (query.Group_Id > 0)
......@@ -57,7 +57,7 @@ namespace Edu.Repository.System
}
if (query.StoreType > 0)
{
builder.Append($" AND {nameof(RB_Msg_Base.StoreType)}={query.StoreType}");
builder.Append($" AND {nameof(RB_Msg_Base.StoreType)}={(int)query.StoreType}");
}
}
......
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Edu.Model.Entity.System;
using Edu.Model.ViewModel.System;
namespace Edu.Repository.System
{
/// <summary>
/// 短信模板仓储层
/// </summary>
public class RB_Msg_BaseTemplateRepository : BaseRepository<RB_Msg_BaseTemplate>
{
/// <summary>
/// 表名称
/// </summary>
public string TableName { get { return nameof(RB_Msg_BaseTemplate); } }
/// <summary>
/// 获取短信模板配置信息
/// </summary>
/// <param name="query">查询条件</param>
/// <returns></returns>
public List<RB_Msg_BaseTemplate_ViewModel> GetListRepository(RB_Msg_BaseTemplate_ViewModel query)
{
StringBuilder builder = new StringBuilder();
builder.Append($" SELECT * FROM {TableName} where 1=1 ");
if (query != null)
{
if (query.Group_Id > 0)
{
builder.Append($" AND {nameof(RB_Msg_BaseTemplate.Group_Id)}={query.Group_Id}");
}
if (query.StoreType > 0)
{
builder.Append($" AND {nameof(RB_Msg_BaseTemplate.StoreType)}={(int)query.StoreType}");
}
if (query.BaseTemplateType > 0)
{
builder.Append($" AND {nameof(RB_Msg_BaseTemplate.BaseTemplateType)}={(int)query.BaseTemplateType}");
}
}
return Get<RB_Msg_BaseTemplate_ViewModel>(builder.ToString()).ToList();
}
/// <summary>
/// 获取短信模板配置信息
/// </summary>
/// <param name="query">查询条件</param>
/// <returns></returns>
public List<RB_Msg_BaseTemplate_ViewModel> GetPageListRepository(int pageIndex, int pageSize, out long rowsCount, RB_Msg_BaseTemplate_ViewModel query)
{
StringBuilder builder = new StringBuilder();
builder.Append($" SELECT * FROM {TableName} where 1=1 ");
if (query != null)
{
if (query.Group_Id > 0)
{
builder.Append($" AND {nameof(RB_Msg_BaseTemplate.Group_Id)}={query.Group_Id}");
}
if (query.StoreType > 0)
{
builder.Append($" AND {nameof(RB_Msg_BaseTemplate.StoreType)}={(int)query.StoreType}");
}
if (query.BaseTemplateType > 0)
{
builder.Append($" AND {nameof(RB_Msg_BaseTemplate.BaseTemplateType)}={(int)query.BaseTemplateType}");
}
}
return GetPage<RB_Msg_BaseTemplate_ViewModel>(pageIndex, pageSize, out rowsCount, builder.ToString()).ToList();
}
}
}
......@@ -21,7 +21,7 @@ namespace Edu.Repository.System
public List<RB_Msg_Log> GetListRepository(RB_Msg_Log query)
{
StringBuilder builder = new StringBuilder();
builder.Append($" SELECT * FROM {TableName} ");
builder.Append($" SELECT * FROM {TableName} where 1=1 ");
if (query != null)
{
if (query.Group_Id > 0)
......@@ -32,7 +32,7 @@ namespace Edu.Repository.System
{
builder.Append($" AND {nameof(RB_Msg_Log.School_Id)}={query.School_Id}");
}
if (query.SendStatus > 0)
if (query.SendStatus.HasValue&& query.SendStatus > 0)
{
builder.Append($" AND {nameof(RB_Msg_Log.SendStatus)}={(int)query.SendStatus}");
}
......@@ -62,7 +62,7 @@ namespace Edu.Repository.System
builder.Append($" AND {nameof(RB_Msg_Log.School_Id)}={query.School_Id}");
}
if (query.SendStatus > 0)
if (query.SendStatus.HasValue && query.SendStatus > 0)
{
builder.Append($" AND {nameof(RB_Msg_Log.SendStatus)}={(int)query.SendStatus}");
}
......
......@@ -166,6 +166,37 @@ FROM
public List<Employee_ViewModel> GetEmployeeListRepository(Employee_ViewModel query)
{
DynamicParameters parameters = new DynamicParameters();
string sql = GetEmployeeSqlReposiroty(query, parameters);
var list = Get<Employee_ViewModel>(sql, parameters).ToList();
return list;
}
/// <summary>
/// 获取员工分页列表
/// </summary>
/// <param name="pageIndex"></param>
/// <param name="pageSize"></param>
/// <param name="rowsCount"></param>
/// <param name="query"></param>
/// <returns></returns>
public List<Employee_ViewModel> GetEmployeePageListRepository(int pageIndex, int pageSize, out long rowsCount, Employee_ViewModel query)
{
rowsCount = 0;
DynamicParameters parameters = new DynamicParameters();
string sql = GetEmployeeSqlReposiroty(query, parameters);
var list = GetPage<Employee_ViewModel>(pageIndex, pageSize, out rowsCount, sql, parameters).ToList();
return list;
}
/// <summary>
/// 获取员工查询SQL
/// </summary>
/// <param name="query"></param>
/// <param name="parameters"></param>
/// <returns></returns>
public string GetEmployeeSqlReposiroty(Employee_ViewModel query,DynamicParameters parameters)
{
StringBuilder where = new StringBuilder();
StringBuilder where2 = new StringBuilder();
if (query != null)
......@@ -228,19 +259,28 @@ FROM
StringBuilder builder = new StringBuilder();
builder.AppendFormat(@"
SELECT A.Id,A.Account,A.Group_Id,A.School_Id,A.EmployeeName,IFNULL(G.GroupName,'') AS GroupName,IFNULL(s.SName,'') AS SchoolName
SELECT A.Id,A.Account,A.Group_Id,A.School_Id,A.EmployeeName,A.UserIcon,A.IDCard,A.Sex,A.Education,A.EntryTime,A.Address,A.BirthDate
,A.LeaveStatus,A.LeaveTime
,IFNULL(G.GroupName,'') AS GroupName,IFNULL(s.SName,'') AS SchoolName
,IFNULL(d.DeptId,0) AS Dept_Id,IFNULL(d.DeptName,'') AS DeptName,IFNULL(p.PostId,0) AS Post_Id, IFNULL(p.PostName,'') AS PostName
,(CASE WHEN CONCAT(DATE_FORMAT(now(),'%Y'),'-',DATE_FORMAT(BirthDate,'%m-%d')) >= DATE_FORMAT(now(),'%Y-%m-%d')
AND CONCAT(DATE_FORMAT(now(),'%Y'),'-',DATE_FORMAT(BirthDate,'%m-%d')) <= DATE_FORMAT(date_add(now(),INTERVAL 6 DAY),'%Y-%m-%d')
THEN 1
ELSE 0 END) IsBirth
FROM
(
SELECT A.*,IFNULL(B.MName,'') AS EmployeeName,B.MHead AS UserIcon,B.Dept_Id,B.Post_Id
SELECT A.*,IFNULL(B.MName,'') AS EmployeeName,B.MHead AS UserIcon,B.Dept_Id,B.Post_Id,B.IDCard,B.Sex,B.Education,B.EntryTime,B.Address,B.BirthDate
,B.LeaveStatus,B.LeaveTime
FROM rb_account AS A INNER JOIN rb_manager AS B ON A.AccountId=B.MId AND A.AccountType=1
WHERE 1=1 {0}
UNION ALL
SELECT A.*,IFNULL(B.TeacherName,'') AS EmployeeName,B.TeacherIcon AS UserIcon,B.Dept_Id,B.Post_Id
SELECT A.*,IFNULL(B.TeacherName,'') AS EmployeeName,B.TeacherIcon AS UserIcon,B.Dept_Id,B.Post_Id,B.IDCard,B.Sex,B.Education,B.EntryTime,B.Address,B.BirthDate
,B.LeaveStatus,B.LeaveTime
FROM rb_account AS A INNER JOIN rb_teacher AS B ON A.AccountId=B.TId AND A.AccountType=2
WHERE 1=1 {0}
UNION ALL
SELECT A.*,IFNULL(B.AssistName,'') AS EmployeeName,B.AssistIcon AS UserIcon,B.Dept_Id,B.Post_Id
SELECT A.*,IFNULL(B.AssistName,'') AS EmployeeName,B.AssistIcon AS UserIcon,B.Dept_Id,B.Post_Id,B.IDCard,B.Sex,B.Education,B.EntryTime,B.Address,B.BirthDate
,B.LeaveStatus,B.LeaveTime
FROM rb_account AS A INNER JOIN rb_assist AS B ON A.AccountId=B.AId AND A.AccountType=3
WHERE 1=1 {0}
) AS A LEFT JOIN rb_group AS g ON A.Group_Id=g.GId
......@@ -248,9 +288,8 @@ FROM
LEFT JOIN rb_department AS d ON A.Dept_Id=d.DeptId
LEFT JOIN rb_post AS p ON A.Post_Id=p.PostId
WHERE 1=1 {1}
", where.ToString(),where2.ToString());
var list = Get<Employee_ViewModel>(builder.ToString(),parameters).ToList();
return list;
", where.ToString(), where2.ToString());
return builder.ToString();
}
/// <summary>
......@@ -258,14 +297,16 @@ WHERE 1=1 {1}
/// </summary>
/// <param name="EmpId"></param>
/// <returns></returns>
public Employee_ViewModel GetEmployeeInfo(int EmpId) {
public Employee_ViewModel GetEmployeeInfo(int EmpId)
{
DynamicParameters parameters = new DynamicParameters();
StringBuilder where = new StringBuilder();
where.AppendFormat(" AND A.{0}={1} ", nameof(Employee_ViewModel.Id), EmpId);
StringBuilder builder = new StringBuilder();
builder.AppendFormat(@"
SELECT A.Id,A.Account,A.Group_Id,A.School_Id,A.EmployeeName,A.UserIcon,IFNULL(G.GroupName,'') AS GroupName,IFNULL(s.SName,'') AS SchoolName
SELECT A.Id,A.Account,A.Group_Id,A.School_Id,A.EmployeeName,A.UserIcon
,IFNULL(G.GroupName,'') AS GroupName,IFNULL(s.SName,'') AS SchoolName
,IFNULL(d.DeptId,0) AS Dept_Id,IFNULL(d.DeptName,'') AS DeptName,IFNULL(p.PostId,0) AS Post_Id, IFNULL(p.PostName,'') AS PostName
FROM
(
......
......@@ -55,96 +55,5 @@ WHERE 1=1
return Get<RB_Manager_ViewModel>(builder.ToString(), parameters).ToList();
}
/// <summary>
/// 员工分页列表(管理者、讲师、助教)
/// </summary>
/// <param name="pageIndex"></param>
/// <param name="pageSize"></param>
/// <param name="rowsCount"></param>
/// <param name="query"></param>
/// <returns></returns>
public List<AdminEmp_ViewModel> GetAdminEmpPageListRepository(int pageIndex, int pageSize, out long rowsCount, AdminEmp_ViewModel query)
{
var parameters = new DynamicParameters();
StringBuilder builder = new StringBuilder();
builder.AppendFormat(@"
SELECT A.* ,IFNULL(G.GroupName,'') AS GroupName,IFNULL(s.SName,'') AS SchoolName
,IFNULL(d.DeptName,'') AS DeptName,IFNULL(p.PostName,'') AS PostName
, (CASE WHEN CONCAT(DATE_FORMAT(now(),'%Y'),'-',DATE_FORMAT(BirthDate,'%m-%d')) >= DATE_FORMAT(now(),'%Y-%m-%d')
AND CONCAT(DATE_FORMAT(now(),'%Y'),'-',DATE_FORMAT(BirthDate,'%m-%d')) <= DATE_FORMAT(date_add(now(),INTERVAL 6 DAY),'%Y-%m-%d')
THEN 1
ELSE 0 END) IsBirth
FROM
(
SELECT A.MId AS TabKeyId,A.MName AS EmployeeName,A.School_Id,A.Group_Id,A.Dept_Id,A.Post_Id,IFNULL(A.Sex,0) AS Sex,A.MTel AS EmployeePhone,A.BirthDate,A.Education,A.LeaveStatus,A.LeaveTime
, 1 AS AccountType,IFNULL(B.Account,'') AS Account,IFNULL(B.Id,0) AS EmployeeId,A.MHead AS EmployeeIcon,A.EntryTime
FROM rb_manager AS A LEFT JOIN rb_account AS B ON A.MId=B.AccountId AND B.AccountType=1
UNION ALL
SELECT A.TId AS TabKeyId,A.TeacherName AS EmployeeName,A.School_Id,A.Group_Id,A.Dept_Id,A.Post_Id,IFNULL(A.Sex,0) AS Sex,A.TeacherTel AS EmployeePhone,A.BirthDate,A.Education,A.LeaveStatus,A.LeaveTime
,2 AS AccountType,IFNULL(B.Account,'') AS Account,IFNULL(B.Id,0) AS EmployeeId,A.TeacherHead AS EmployeeIcon,A.EntryTime
FROM rb_teacher AS A LEFT JOIN rb_account AS B ON A.TId=B.AccountId AND B.AccountType=2
UNION ALL
SELECT A.AId AS TabKeyId,A.AssistName AS EmployeeName,A.School_Id,A.Group_Id,A.Dept_Id,A.Post_Id,IFNULL(A.Sex,0) AS Sex,A.AssistTel AS EmployeePhone,A.BirthDate,A.Education,A.LeaveStatus,A.LeaveTime
,3 AS AccountType,IFNULL(B.Account,'') AS Account,IFNULL(B.Id,0) AS EmployeeId,A.AssistIcon AS EmployeeIcon,A.EntryTime
FROM rb_assist AS A LEFT JOIN rb_account AS B ON A.AId=B.AccountId AND B.AccountType=3
) AS A LEFT JOIN rb_group AS g ON A.Group_Id=g.GId
LEFT JOIN rb_school AS s ON A.School_Id=s.SId
LEFT JOIN rb_department AS d ON A.Dept_Id=d.DeptId
LEFT JOIN rb_post AS p ON A.Post_Id=p.PostId
WHERE 1=1
");
if (query != null)
{
if (!string.IsNullOrWhiteSpace(query.EmployeeName))
{
builder.AppendFormat(" AND (a.{0} LIKE @MName OR A.Account LIKE @MName) ", nameof(AdminEmp_ViewModel.EmployeeName));
parameters.Add("MName", "%" + query.EmployeeName.Trim() + "%");
}
if (query.School_Id > 0)
{
builder.AppendFormat(" AND a.{0}={1} ", nameof(AdminEmp_ViewModel.School_Id), query.School_Id);
}
if (query.Group_Id > 0)
{
builder.AppendFormat(" AND a.{0}={1} ", nameof(AdminEmp_ViewModel.Group_Id), query.Group_Id);
}
if (query.Dept_Id > 0)
{
builder.AppendFormat(" AND a.{0}={1} ", nameof(AdminEmp_ViewModel.Dept_Id), query.Dept_Id);
}
if (query.Post_Id > 0)
{
builder.AppendFormat(" AND a.{0}={1} ", nameof(AdminEmp_ViewModel.Post_Id), query.Post_Id);
}
if (query.LeaveStatus >= 0)
{
builder.AppendFormat(" AND a.{0}={1} ", nameof(AdminEmp_ViewModel.LeaveStatus), (int)query.LeaveStatus);
}
if (!string.IsNullOrEmpty(query.StartEntryTime))
{
builder.AppendFormat(" AND a.{0}>='{1}' ", nameof(AdminEmp_ViewModel.EntryTime), query.StartEntryTime);
}
if (!string.IsNullOrEmpty(query.EndEntryTime))
{
builder.AppendFormat(" AND a.{0}<='{1} 23:59:59' ", nameof(AdminEmp_ViewModel.EntryTime), query.EndEntryTime);
}
if (!string.IsNullOrEmpty(query.StartLeaveTime))
{
builder.AppendFormat(" AND a.{0}>='{1}' ", nameof(AdminEmp_ViewModel.LeaveTime), query.StartLeaveTime);
}
if (!string.IsNullOrEmpty(query.EndLeaveTime))
{
builder.AppendFormat(" AND a.{0}<='{1} 23:59:59' ", nameof(AdminEmp_ViewModel.LeaveTime), query.EndLeaveTime);
}
if (!string.IsNullOrEmpty(query.StartBirthDate) && !string.IsNullOrEmpty(query.EndBirthDate))
{
builder.AppendFormat(@"AND (
CONCAT(DATE_FORMAT(now(),'%Y'),'-',DATE_FORMAT(BirthDate,'%m-%d')) >= '{0}'
AND CONCAT(DATE_FORMAT(now(),'%Y'),'-',DATE_FORMAT(BirthDate,'%m-%d')) <= '{1}'
)",query.StartBirthDate,query.EndBirthDate);
}
}
return GetPage<AdminEmp_ViewModel>(pageIndex, pageSize, out rowsCount, builder.ToString(), parameters).ToList();
}
}
}
\ No newline at end of file
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp3.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<Folder Include="Oss\" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Aliyun.Net.SDK.Core" Version="1.0.3" />
<PackageReference Include="Aliyun.OSS.SDK.NetCore" Version="2.10.0" />
<PackageReference Include="Newtonsoft.Json" Version="12.0.3" />
</ItemGroup>
<ItemGroup>
<Reference Include="aliyun-net-sdk-core">
<HintPath>lib\aliyun-net-sdk-core.dll</HintPath>
</Reference>
<Reference Include="aliyun-net-sdk-dysmsapi">
<HintPath>lib\aliyun-net-sdk-dysmsapi.dll</HintPath>
</Reference>
</ItemGroup>
</Project>
This diff is collapsed.
using System.Collections.Generic;
using System.Linq;
using System.Threading;
namespace Edu.ThirdCore.Message
{
/// <summary>
/// 消息队列
/// </summary>
public class QueueHelper
{
/// <summary>
/// 任务队列
/// </summary>
public static Queue<string> Queue = new Queue<string>();
/// <summary>
/// 线程锁
/// </summary>
private static object locker = new object();
/// <summary>
/// 添加消息到队列
/// </summary>
/// <param name="task"></param>
public static void EnqueueTask(string task)
{
lock (locker)
{
//同样的任务,不同时加入
IList<string> tasks = Queue.ToList();
if (tasks.Count(p => p == task) == 0)
{
Queue.Enqueue(task);
Monitor.PulseAll(locker);
}
}
}
}
}

using System;
using System.Collections.Generic;
using System.Text;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
namespace Edu.ThirdCore.Message
{
/// <summary>
/// 短信消息
/// </summary>
public class SMSService
{
/// <summary>
/// 发送证码
/// </summary>
/// <param name="phoneNumber">电话号码</param>
/// <param name="code">验证码</param>
public static void SendCode(string phoneNumber, string code, string templateCode, string SignName, string Domain, string AccessKeyId, string AccessKeySecret, string RegionId, string OutId)
{
JObject obj = new JObject();
obj["cmd"] = "sms";
obj["phoneNumber"] = phoneNumber;
obj["templateCode"] = templateCode;
obj["SignName"] = SignName;
obj["Domain"] = Domain;
obj["AccessKeyId"] = AccessKeyId;
obj["AccessKeySecret"] = AccessKeySecret;
obj["RegionId"] = RegionId;
var TemplateParam = new { code = code };
obj["OutId"] = OutId;
obj["templateParam"] = JsonConvert.SerializeObject(TemplateParam);
QueueHelper.EnqueueTask(JsonConvert.SerializeObject(obj));
}
/// <summary>
/// 发送短信通知
/// </summary>
/// <param name="phoneNumber"></param>
/// <param name="content"></param>
/// <param name="templateCode"></param>
public static void SendMsg(string phoneNumber, string content, string templateCode, string SignName, string Domain, string AccessKeyId, string AccessKeySecret, string RegionId, string OutId)
{
JObject obj = new JObject();
obj["cmd"] = "sms";
obj["phoneNumber"] = phoneNumber;
obj["templateCode"] = templateCode;
obj["SignName"] = SignName;
obj["Domain"] = Domain;
obj["AccessKeyId"] = AccessKeyId;
obj["RegionId"] = RegionId;
obj["AccessKeySecret"] = AccessKeySecret;
var TemplateParam = new { content };
obj["OutId"] = OutId;
obj["templateParam"] = JsonConvert.SerializeObject(TemplateParam);
//LogHelper.WriteInfo("发送短信信息");
QueueHelper.EnqueueTask(JsonConvert.SerializeObject(obj));
}
/// <summary>
/// 发送短信通知
/// </summary>
/// <param name="phoneNumber"></param>
/// <param name="templateParam">通知参数</param>
/// <param name="templateCode"></param>
public static void SendMsg(string phoneNumber, object templateParam, string templateCode, string SignName, string Domain, string AccessKeyId, string AccessKeySecret, string RegionId,string OutId)
{
JObject obj = new JObject();
obj["cmd"] = "sms";
obj["phoneNumber"] = phoneNumber;
obj["templateCode"] = templateCode;
var TemplateParam = templateParam;
obj["SignName"] = SignName;
obj["Domain"] = Domain;
obj["RegionId"] = RegionId;
obj["AccessKeyId"] = AccessKeyId;
obj["AccessKeySecret"] = AccessKeySecret;
obj["OutId"] = OutId;
obj["templateParam"] = JsonConvert.SerializeObject(TemplateParam);
QueueHelper.EnqueueTask(JsonConvert.SerializeObject(obj));
}
}
}
......@@ -28,7 +28,7 @@ namespace Edu.WebApi.Controllers.Public
/// </summary>
private readonly MsgLogModule msgLogModule = new MsgLogModule();
#region 短信记录信息
/// <summary>
/// 获取短信记录分页列表
/// </summary>
......@@ -47,6 +47,18 @@ namespace Edu.WebApi.Controllers.Public
}
/// <summary>
/// 获取触发事件枚举
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetMsgSendStatusEnumList()
{
var list = EnumHelper.EnumToList(typeof(Common.Enum.System.MsgSendStatusEnum));
return ApiResult.Success("", list);
}
#endregion
#region 短信配置
......@@ -71,6 +83,7 @@ namespace Edu.WebApi.Controllers.Public
}
pageModel.Count = rowsCount;
pageModel.PageData = list;
return ApiResult.Success(data: pageModel);
}
......@@ -106,13 +119,14 @@ namespace Edu.WebApi.Controllers.Public
var model = new RB_Msg_Base();
model.CreateDate = DateTime.Now;
model.CreateBy = UserInfo.Id;
model.Group_Id = this.UserInfo.Group_Id;
model.Group_Id = base.UserInfo.Group_Id;
model.ID = extModel.ID;
model.StoreType = extModel.StoreType;
if (extModel.MsgBase != null)
{
model.MsgConfigure = Common.Plugin.JsonHelper.Serialize(extModel.MsgBase);
}
bool flag = msgLogModule.SetMsgBaseModule(extModel);
bool flag = msgLogModule.SetMsgBaseModule(model);
return flag ? ApiResult.Success() : ApiResult.Failed();
}
......@@ -145,5 +159,153 @@ namespace Edu.WebApi.Controllers.Public
}
#endregion
#region 短信模板配置
/// <summary>
/// 获取触发事件枚举
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetBaseTemplateTypeEnumList()
{
var list = EnumHelper.EnumToList(typeof(Common.Enum.System.BaseTemplateTypeEnum));
return ApiResult.Success("", list);
}
/// <summary>
/// 获取短信模板配置页列表
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetMsgBaseTemplatePageList()
{
var pageModel = Common.Plugin.JsonHelper.DeserializeObject<ResultPageModel>(RequestParm.Msg.ToString());
var query = Common.Plugin.JsonHelper.DeserializeObject<RB_Msg_BaseTemplate_ViewModel>(RequestParm.Msg.ToString());
query.Group_Id = base.UserInfo.Group_Id;
var list = msgLogModule.GetMsgBaseTemplatePageListModule(pageModel.PageIndex, pageModel.PageSize, out long rowsCount, query);
foreach (var item in list)
{
item.BaseTemplateTypeStr = EnumHelper.ToName(item.BaseTemplateType);
}
pageModel.Count = rowsCount;
pageModel.PageData = list;
return ApiResult.Success(data: pageModel);
}
/// <summary>
/// 获取短信模板配置列表
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetMsgBaseTemplateList()
{
var query = Common.Plugin.JsonHelper.DeserializeObject<RB_Msg_BaseTemplate_ViewModel>(RequestParm.Msg.ToString());
query.Group_Id = base.UserInfo.Group_Id;
var list = msgLogModule.GetMsgBaseTemplateModule(query);
return ApiResult.Success(data: list);
}
/// <summary>
/// 添加修改短信模板配置
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult SetMsgBaseTemplate()
{
var extModel = Common.Plugin.JsonHelper.DeserializeObject<RB_Msg_BaseTemplate_ViewModel>(RequestParm.Msg.ToString());
extModel.CreateDate = DateTime.Now;
extModel.CreateBy = UserInfo.Id;
extModel.Group_Id = base.UserInfo.Group_Id;
bool flag = msgLogModule.SetMsgBaseTemplateModule(extModel);
return flag ? ApiResult.Success() : ApiResult.Failed();
}
/// <summary>
/// 获取短信模板配置实体
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetMsgBaseTemplate()
{
var ID = base.ParmJObj.GetInt("ID", 0);
var extModel = msgLogModule.GetMsgBaseTemplateModule(ID);
return ApiResult.Success(data: extModel);
}
/// <summary>
/// 删除短信模板配置
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult RemoveMsgBaseTemplate()
{
var ClassId = base.ParmJObj.GetInt("ID", 0);
var flag = msgLogModule.RemoveMsgBaseTemplateModule(ClassId);
return flag ? ApiResult.Success() : ApiResult.Failed();
}
#endregion
#region 发短信测试
[HttpPost]
public ApiResult TestSendMsg()
{
object PhoneMessage = new
{
OrderNo = "1111111111111",
Name = "李三",
Mobile = "13551132418",
TripDate = "2020-11-30",//item.TripSTime.Value.ToString("yyyy-MM-dd HH:mm") + " " + ((item.UseDay ?? 0) == Convert.ToDecimal(0.5) ? "半" : Convert.ToInt32(item.UseDay ?? 0).ToString()) + "日",
Address = "阳光新业2号楼",
Number = "李四"
};
//新增短信记录信息
var msgLogModel = new RB_Msg_Log
{
Group_Id = 100000,
School_Id = 1,
Student_Id = 2,
CreateDate = DateTime.Now,
SendStatus = Common.Enum.System.MsgSendStatusEnum.InReceipt,
CreateBy = 0,
CreateByName = "系统自动发送",
SendContent = "测试内容",
ReceiverName = "张学生",
ReceiverPhone = "13551132417"
};
msgLogModule.SendMsg(PhoneMessage, Common.Enum.System.BaseTemplateTypeEnum.OrderSuccess, msgLogModel);
// ThirdCore.Message.SMSService.SendMsg("13551132417", PhoneMessage, "SMS_201722097", "印象之旅", "dysmsapi.aliyuncs.com", "LTAIwE7l9dImZSa3", "j47Ajn0d0WzUCIX8Biyj3P2r8QDltI", "cn-hangzhou");
return ApiResult.Success("");
}
[HttpPost]
public ApiResult TestUpdateSendMsg()
{
msgLogModule.UpdateMsgSendStatus();
return ApiResult.Success("");
}
#endregion
}
}
......@@ -366,8 +366,17 @@ namespace Edu.WebApi.Controllers.Public
[HttpPost]
public ApiResult GetStoreTypeEnumList()
{
int type = base.ParmJObj.GetInt("ID", 0);
var list = EnumHelper.EnumToList(typeof(Common.Enum.Public.StoreTypeEnum));
if (type == 1)
{
return ApiResult.Success("", list.Where(x => x.Id != 3));
}
else
{
return ApiResult.Success("", list);
}
}
/// <summary>
......
......@@ -71,6 +71,7 @@ namespace Edu.WebApi.Controllers.User
/// </summary>
private readonly EmployeeModule employeeModule = new EmployeeModule();
#region 用户账户管理
/// <summary>
......@@ -623,15 +624,14 @@ namespace Edu.WebApi.Controllers.User
public ApiResult GetManagerPageList()
{
var pageModel = Common.Plugin.JsonHelper.DeserializeObject<ResultPageModel>(RequestParm.Msg.ToString());
var query = Common.Plugin.JsonHelper.DeserializeObject<AdminEmp_ViewModel>(RequestParm.Msg.ToString());
var query = Common.Plugin.JsonHelper.DeserializeObject<Employee_ViewModel>(RequestParm.Msg.ToString());
query.Group_Id = base.UserInfo.Group_Id;
//query.School_Id = base.UserInfo.School_Id;
var list = managerModule.GetAdminEmpPageListModule(pageModel.PageIndex, pageModel.PageSize, out long rowsCount, query);
var list = employeeModule.GetEmployeePageListModule(pageModel.PageIndex, pageModel.PageSize, out long rowsCount, query);
pageModel.Count = rowsCount;
pageModel.PageData = list.Select(qitem => new
{
qitem.TabKeyId,
qitem.EmployeeIcon,
qitem.Id,
qitem.UserIcon,
qitem.EmployeeName,
qitem.SchoolName,
qitem.DeptName,
......@@ -640,7 +640,6 @@ namespace Edu.WebApi.Controllers.User
BirthDate = Common.ConvertHelper.FormatDate(qitem.BirthDate),
Education = qitem.Education.ToName(),
LeaveStatus = qitem.LeaveStatus.ToName(),
qitem.EmployeeId,
qitem.Account,
qitem.AccountType,
qitem.IsBirth,
......@@ -685,10 +684,10 @@ namespace Edu.WebApi.Controllers.User
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetManager()
public ApiResult GetEmployee()
{
var MId = base.ParmJObj.GetInt("MId", 0);
var extModel = managerModule.GetManagerModule(MId);
var Id = base.ParmJObj.GetInt("Id", 0);
var extModel = employeeModule.GetEmployeeModule(Id);
return ApiResult.Success(data: extModel);
}
......
using System.Collections.Generic;
using System.Text.Encodings.Web;
using System.Text.Unicode;
using System.Threading.Tasks;
using Edu.ThirdCore.Message;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
......@@ -67,7 +69,9 @@ namespace Edu.WebApi
app.UseCors("AllowCors");
app.UseAuthorization();
//启动信息发送
// Task.Run(() => MessageCore.Init());
Task.Run(() => MessageCore.Init());
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
......
......@@ -12,6 +12,7 @@
},
"JwtSecretKey": "@VIITTOREBORN*2018",
"JwtExpirTime": 2592000,
"IsSendMsg": 1,
"AllowedHosts": "*",
"OpenValidation": "False",
"UploadSiteUrl": "http://192.168.1.214:8120",
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment