Bladeren bron

分页及组织机构业务处理

CrazyIter 5 jaren geleden
bovenliggende
commit
9d508be336

+ 1 - 1
.gitignore

@@ -339,4 +339,4 @@ ASALocalRun/
 # BeatPulse healthcheck temp database
 healthchecksdb
 
-*wwwroot*
+/HiTeachCE/wwwroot

+ 27 - 7
HiTeachCE/Context/DBContext.cs

@@ -6,6 +6,7 @@ using System.Linq;
 using System.Linq.Expressions;
 using System.Threading.Tasks;
 using TEAMModelOS.SDK.Context.Configuration;
+using TEAMModelOS.SDK.Extension.DataResult.PageToken;
 
 namespace HiTeachCE.Context
 {
@@ -52,6 +53,7 @@ namespace HiTeachCE.Context
             }
         }
         public SimpleClient<Entity> CurrentDb { get { return new SimpleClient<Entity>(Db); } }
+    
         /// <summary>
         /// 获取所有
         /// </summary>
@@ -69,17 +71,30 @@ namespace HiTeachCE.Context
         {
             return CurrentDb.GetList(whereExpression);
         }
-
+        
 
         /// <summary>
         /// 根据表达式查询分页
         /// </summary>
         /// <returns></returns>
-        public virtual List<Entity> GetPageList(Expression<Func<Entity, bool>> whereExpression, PageModel pageModel)
-        {
-            return CurrentDb.GetPageList(whereExpression, pageModel);
+        public virtual List<Entity> GetPageList(Expression<Func<Entity, bool>> whereExpression, Pagination pagination)
+        {   int total = 0;
+            List<Entity> list=  Db.Queryable<Entity>().Where(whereExpression).ToPageList(pagination.currPage,pagination.pageSize,ref total);
+            pagination.total = total;
+            pagination.totalPage = (int)Math.Ceiling((double)pagination.total / (double)pagination.pageSize);
+            return list;
         }
 
+
+        /// <summary>
+        /// 根据表达式查询分页
+        /// </summary>
+        /// <returns></returns>
+        //public virtual List<Entity> GetPageList(Expression<Func<Entity, bool>> whereExpression, PageModel pageModel)
+        //{
+        //    return CurrentDb.GetPageList(whereExpression, pageModel);
+        //}
+
         /// <summary>
         /// 根据表达式查询分页并排序
         /// </summary>
@@ -88,9 +103,14 @@ namespace HiTeachCE.Context
         /// <param name="orderByExpression">it=>it.id或者it=>new{it.id,it.name}</param>
         /// <param name="orderByType">OrderByType.Desc</param>
         /// <returns></returns>
-        public virtual List<Entity> GetPageList(Expression<Func<Entity, bool>> whereExpression, PageModel pageModel, Expression<Func<Entity, object>> orderByExpression = null, OrderByType orderByType = OrderByType.Asc)
-        {
-            return CurrentDb.GetPageList(whereExpression, pageModel, orderByExpression, orderByType);
+        public virtual List<Entity> GetPageList(Expression<Func<Entity, bool>> whereExpression, Pagination pagination, Expression<Func<Entity, object>> orderByExpression = null, OrderByType orderByType = OrderByType.Asc)
+        {
+            int total = 0;
+            List<Entity> list = Db.Queryable<Entity>().Where(whereExpression).OrderBy(orderByExpression, orderByType).ToPageList(pagination.currPage, pagination.pageSize, ref total);
+            pagination.total = total;
+            pagination.totalPage = (int)Math.Ceiling((double)pagination.total / (double)pagination.pageSize);
+            return list;
+           // return CurrentDb.GetPageList(whereExpression, pageModel, orderByExpression, orderByType);
         }
 
 

+ 99 - 55
HiTeachCE/Controllers/LecturerController.cs

@@ -8,6 +8,7 @@ using IdentityModel;
 using Microsoft.AspNetCore.Authorization;
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.Extensions.Configuration;
+using Org.BouncyCastle.Ocsp;
 using System;
 using System.Collections.Generic;
 using System.Linq;
@@ -39,8 +40,6 @@ namespace HiTeachCE.Controllers
 
         }
 
-
-
         /// <summary>
         /// 获取讲师列表
         /// </summary>
@@ -48,47 +47,65 @@ namespace HiTeachCE.Controllers
         /// <returns></returns>
         [HttpPost("list")]
         [Authorize(Roles = "root")]
-        public BaseJosnRPCResponse list(JosnRPCRequest<Dictionary<string, string>> request)
+        public BaseJosnRPCResponse List(PaginationJosnRPCRequest<Dictionary<string, string>> request)
         {
             // request.@params.TryAdd("PartitionKey", request.lang);
             JsonRPCResponseBuilder builder = JsonRPCResponseBuilder.custom();
             List<Lecturer> lecturers = new List<Lecturer>();
             Expression<Func<Lecturer, bool>> linq = null;
-            if (request.@params.TryGetValue("cellphone", out string cellphone) && !string.IsNullOrEmpty(cellphone))
+            if (request.@params.data.TryGetValue("cellphone", out string cellphone) && !string.IsNullOrEmpty(cellphone))
             {
                 linq = m => m.cellphone == cellphone;
             }
-            if (request.@params.TryGetValue("account", out string account) && !string.IsNullOrEmpty(account))
+            if (request.@params.data.TryGetValue("account", out string account) && !string.IsNullOrEmpty(account))
             {
                 linq = m => m.account == account;
             }
-            if (request.@params.TryGetValue("username", out string username) && !string.IsNullOrEmpty(username))
+            if (request.@params.data.TryGetValue("username", out string username) && !string.IsNullOrEmpty(username))
             {
                 linq = m => m.username.Contains(username);
             }
-            if (request.@params.TryGetValue("id", out string id) && !string.IsNullOrEmpty(id))
+            if (request.@params.data.TryGetValue("id", out string id) && !string.IsNullOrEmpty(id))
             {
                 linq = m => m.id==id;
             }
             if (linq != null)
             {
-                lecturers = lecturerService.GetList(linq);
+                lecturers = lecturerService.GetPageList(linq,request.@params.page);
             }
             lecturers.ForEach(x => { x.password = null; });
-            return builder.Data(lecturers).build();
+            return builder.Data(lecturers).Page(request.@params.page).build();
         }
 
         /// <summary>
-        /// 更新讲师
+        /// 更新自己的资料
         /// </summary>
         /// <param name="request"></param>
         /// <returns></returns>
-        [HttpPost("update")]
-        [Authorize(Roles = "root")]
-        public BaseJosnRPCResponse update(JosnRPCRequest<Lecturer> request)
+        [HttpPost("updateSelf")]
+        [Authorize(Roles = "all")]
+        public BaseJosnRPCResponse UpdateSelf(JosnRPCRequest<Lecturer> request)
         {
             JsonRPCResponseBuilder builder = JsonRPCResponseBuilder.custom();
+            string unionid = GetLoginUser(JwtClaimTypes.Id);
             Lecturer lecturer = lecturerService.GetById(request.@params.id);
+            bool b = false;
+            //确保更新的是自己
+            if (unionid.Equals(request.@params.unionid ) && unionid.Equals(lecturer.unionid))
+            {
+                b = UpdateLecture(request, lecturer);
+            }
+            return builder.Data(b).build();
+        }
+
+        /// <summary>
+        /// 更新
+        /// </summary>
+        /// <param name="request">修改后的</param>
+        /// <param name="lecturer">修改前的</param>
+        /// <returns></returns>
+        private bool UpdateLecture(JosnRPCRequest<Lecturer> request ,Lecturer lecturer)
+        {
             bool b = false;
             if (lecturer != null)
             {
@@ -110,65 +127,92 @@ namespace HiTeachCE.Controllers
                 request.@params.areaCode = lecturer.areaCode;
                 b = lecturerService.Update(request.@params);
             }
-            return builder.Data(b).build();
+            return b;
         }
 
 
-
-
         /// <summary>
-        /// 获取知识
+        /// 更新讲师
         /// </summary>
         /// <param name="request"></param>
         /// <returns></returns>
-        [HttpGet("GetId")]
-        public BaseJosnRPCResponse GetList()
+        [HttpPost("update")]
+        [Authorize(Roles = "root")]
+        public BaseJosnRPCResponse Update(JosnRPCRequest<Lecturer> request)
         {
-            // request.@params.TryAdd("PartitionKey", request.lang);
             JsonRPCResponseBuilder builder = JsonRPCResponseBuilder.custom();
-            List<Lecturer> data = lecturerService.GetList();
-            return builder.Data(Guid.NewGuid()).build();
+            Lecturer lecturer = lecturerService.GetById(request.@params.id);
+            bool b = UpdateLecture(request, lecturer);
+            return builder.Data(b).build();
         }
-        ///// <summary>
-        ///// 获取知识
-        ///// </summary>
-        ///// <param name="request"></param>
-        ///// <returns></returns>
-        //[HttpPost("GetList")]
-        //[Authorize(Roles  = "admin")]
-        //public  BaseJosnRPCResponse GetList(JosnRPCRequest<Dictionary<string, object>> request)
-        //{
-        //    // request.@params.TryAdd("PartitionKey", request.lang);
-        //    JsonRPCResponseBuilder builder = JsonRPCResponseBuilder.custom();
-        //    List<Lecturer> data = lecturerService.GetList() ;
-        //    return builder.Data(Guid.NewGuid()).build();
-        //}
         /// <summary>
-        /// 获取知识
+        /// 注册用户
         /// </summary>
         /// <param name="request"></param>
         /// <returns></returns>
-        [HttpPost("GetList1")]
-        [Authorize(Policy = "admin")]
-        public BaseJosnRPCResponse GetList1(JosnRPCRequest<Dictionary<string, object>> request)
+        [HttpPost("register")]
+        public BaseJosnRPCResponse Register(JosnRPCRequest<RegisterDto> request)
         {
-            // request.@params.TryAdd("PartitionKey", request.lang);
-            JsonRPCResponseBuilder builder = JsonRPCResponseBuilder.custom();
-            List<Lecturer> data = lecturerService.GetList();
-            return builder.Data(Guid.NewGuid()).build();
-        }/// <summary>
-         /// 获取知识
-         /// </summary>
-         /// <param name="request"></param>
-         /// <returns></returns>
-        [HttpPost("GetList2")]
-        [Authorize]
-        public BaseJosnRPCResponse GetList2(JosnRPCRequest<Dictionary<string, object>> request)
-        {
-            // request.@params.TryAdd("PartitionKey", request.lang);
             JsonRPCResponseBuilder builder = JsonRPCResponseBuilder.custom();
+            if (RedisHelper.Exists("ticket:" + request.@params.ticket))
+            {
+                if (request.@params.user != null)
+                {
+                    string[] phone = RedisHelper.HVals("ticket:" + request.@params.ticket);
+                    if (phone.IsNotEmpty())
+                    {
+                        if (!request.@params.user.cellphone.Equals(phone[0]))
+                        {
+                            throw new BizException("手机号与凭证不匹配!", 2);
+                        }
+                    }
+                    else
+                    {
+                        throw new BizException("凭证无效!", 2);
+                    }
+                    Expression<Func<Lecturer, bool>> linq = null;
+                    linq = m => m.cellphone == request.@params.user.cellphone || m.account == request.@params.user.account;
+                    List<Lecturer> lecturers = lecturerService.GetList(linq);
+                    if (lecturers.IsNotEmpty())
+                    {
+                        throw new BizException("手机号或账号已经存在!", 2);
+                    }
+                    else
+                    {
+                        request.@params.user.id = Guid.NewGuid().ToString();
+                        request.@params.user.unionid = Guid.NewGuid().ToString("N");
+                        request.@params.user.areaCode = "86";
+                        request.@params.user.status = 1;
+                        request.@params.user.registerTime = new DateTimeOffset(DateTime.UtcNow).ToUnixTimeSeconds();
 
-            return builder.Data(Guid.NewGuid()).build();
+                        if (request.@params.user.password == null)
+                        {
+                            request.@params.user.password = "";
+                        }
+                        else
+                        {
+                            request.@params.user.password = BCrypt.Net.BCrypt.HashPassword(request.@params.user.password);
+                        }
+                        bool ib = lecturerService.Insert(request.@params.user);
+                        if (ib)
+                        {
+                            return builder.Data(ib).build();
+                        }
+                        else
+                        {
+                            throw new BizException("注册失败!", 2);
+                        }
+                    }
+                }
+                else
+                {
+                    throw new BizException("参数错误!", 2);
+                }
+            }
+            else
+            {
+                throw new BizException("短信验证过期!", 2);
+            }
         }
     }
 }

+ 0 - 60
HiTeachCE/Controllers/LoginController.cs

@@ -417,66 +417,6 @@ namespace HiTeachCE.Controllers
         }
 
 
-        //register user
-        [HttpPost("register")]
-        public BaseJosnRPCResponse Register(JosnRPCRequest<RegisterDto> request) {
-            JsonRPCResponseBuilder builder = JsonRPCResponseBuilder.custom();
-            if (RedisHelper.Exists("ticket:" + request.@params.ticket))
-            {
-                if (request.@params.user != null)
-                {
-                    string[] phone= RedisHelper.HVals("ticket:" + request.@params.ticket);
-                    if (phone.IsNotEmpty())
-                    {
-                        if (!request.@params.user.cellphone.Equals(phone[0])) {
-                            throw new BizException("手机号与凭证不匹配!", 2);
-                        }
-                    }
-                    else {
-                        throw new BizException("凭证无效!", 2);
-                    }
-                    Expression<Func<Lecturer, bool>> linq = null;
-                    linq = m => m.cellphone == request.@params.user.cellphone || m.account == request.@params.user.account;
-                    List<Lecturer> lecturers = lecturerService.GetList(linq);
-                    if (lecturers.IsNotEmpty())
-                    {
-                        throw new BizException("手机号或账号已经存在!", 2);
-                    }
-                    else
-                    {
-                        request.@params.user.id = Guid.NewGuid().ToString();
-                        request.@params.user.unionid = Guid.NewGuid().ToString("N");
-                        request.@params.user.areaCode = "86";
-                        request.@params.user.status =1;
-                        request.@params.user.registerTime = new DateTimeOffset(DateTime.UtcNow).ToUnixTimeSeconds();
-                       
-                        if (request.@params.user.password == null)
-                        {
-                            request.@params.user.password = "";
-                        }
-                        bool ib = lecturerService.Insert(request.@params.user);
-                        if (ib)
-                        {
-                            return builder.Data(ib).build();
-                        }
-                        else
-                        {
-                            throw new BizException("注册失败!", 2);
-                        }
-                    }
-                }
-                else
-                {
-                    throw new BizException("参数错误!", 2);
-                }
-            }
-            else {
-                throw new BizException("短信验证过期!", 2);
-            }
-            
-
-        }
-
         /// <summary>
         /// 登录
         /// </summary>

+ 150 - 0
HiTeachCE/Controllers/OrganizationController.cs

@@ -0,0 +1,150 @@
+using HiTeachCE.Models;
+using HiTeachCE.Services;
+using IdentityModel;
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Mvc;
+using Org.BouncyCastle.Ocsp;
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+using System.Linq.Expressions;
+using System.Threading.Tasks;
+using TEAMModelOS.SDK.Extension.DataResult.JsonRpcRequest;
+using TEAMModelOS.SDK.Extension.DataResult.JsonRpcResponse;
+using TEAMModelOS.SDK.Extension.DataResult.RequestData;
+
+namespace HiTeachCE.Controllers
+{
+    [Route("api/[controller]")]
+    [ApiController]
+    public class OrganizationController:BaseController
+    {
+        public OrganizationService organizationService;
+        public MemberService memberService;
+        public LecturerService lecturerService;
+        public OrganizationController(OrganizationService organization , MemberService member, LecturerService lecturer) {
+            organizationService = organization;
+            memberService = member;
+            lecturerService = lecturer;
+        }
+
+        /// <summary>
+        /// 获取组织列表
+        /// </summary>
+        /// <param name="request"></param>
+        /// <returns></returns>
+        [HttpPost("list")]
+        [Authorize(Roles = "root")]
+        public BaseJosnRPCResponse List(PaginationJosnRPCRequest<Dictionary<string, string>> request)
+        {
+            // request.@params.TryAdd("PartitionKey", request.lang);
+            JsonRPCResponseBuilder builder = JsonRPCResponseBuilder.custom();
+            List<Organization> lecturers = new List<Organization>();
+            Expression<Func<Organization, bool>> linq = null;
+           
+            if (request.@params.data.TryGetValue("code", out string code) && !string.IsNullOrEmpty(code))
+            {
+                linq = m => m.code == code;
+            }
+            if (request.@params.data.TryGetValue("name", out string name) && !string.IsNullOrEmpty(name))
+            {
+                linq = m => m.name.Contains(name);
+            }
+            if (request.@params.data.TryGetValue("id", out string id) && !string.IsNullOrEmpty(id))
+            {
+                linq = m => m.id == id;
+            }
+            if (linq != null)
+            {
+                lecturers = organizationService.GetPageList(linq,request.@params.page);
+            }
+            return builder.Data(lecturers).Page(request.@params.page).build();
+        }
+
+        /// <summary>
+        /// 更新自己的组织
+        /// </summary>
+        /// <param name="request"></param>
+        /// <returns></returns>
+        [HttpPost("updateSelf")]
+        [Authorize(Roles = "admin")]
+        public BaseJosnRPCResponse UpdateSelf(JosnRPCRequest<Organization> request)
+        {
+            JsonRPCResponseBuilder builder = JsonRPCResponseBuilder.custom();
+            string unionid = GetLoginUser(JwtClaimTypes.Id);
+            Organization organization = organizationService.GetById(request.@params.id);
+            Expression<Func<Member, bool>> mlinq = null;
+            mlinq = m => m.orgCode == request.@params.code && m.unionid == unionid;
+            List<Member> members = memberService.GetList(mlinq);
+            bool b = false;
+            //确保更新的是自己
+            if (members.IsNotEmpty() && members[0].role.Equals("admin"))
+            {
+                b = updateOrganization(request, organization);
+            }
+            return builder.Data(b).build();
+        }
+        public bool updateOrganization(JosnRPCRequest<Organization> request ,Organization  organization) {
+            request.@params.code = organization.code;
+            request.@params.type = organization.type;
+            bool b = organizationService.Update(request.@params);
+            return b;
+        }
+
+        /// <summary>
+        /// 更新组织
+        /// </summary>
+        /// <param name="request"></param>
+        /// <returns></returns>
+        [HttpPost("update")]
+        [Authorize(Roles = "root")]
+        public BaseJosnRPCResponse Update(JosnRPCRequest<Organization> request)
+        {
+            JsonRPCResponseBuilder builder = JsonRPCResponseBuilder.custom();
+            Organization organization = organizationService.GetById(request.@params.id);
+            bool b = false;
+            //确保更新的是自己
+            if (organization!=null)
+            {
+                b = updateOrganization(request, organization);
+            }
+            return builder.Data(b).build();
+        }
+        /// <summary>
+        /// 更新组织
+        /// </summary>
+        /// <param name="request"></param>
+        /// <returns></returns>
+        [HttpPost("add")]
+        [Authorize(Roles = "root")]
+        public BaseJosnRPCResponse Add(JosnRPCRequest<OrgDto> request)
+        {
+            JsonRPCResponseBuilder builder = JsonRPCResponseBuilder.custom();
+            string adminCellphone = "";
+            lecturerService.GetList();
+
+
+            return builder.Data(null).build();
+        }
+
+        public class  OrgDto{
+            [Required(ErrorMessage = "组织名称必须填写")]
+            public string orgName { get; set; }
+            [Required(ErrorMessage = "组织类型必须填写")]
+            public string orgType { get; set; }
+            [Required(ErrorMessage = "组织管理员手机号必须填写")]
+            public string adminCellphone { get; set; }
+            [Required(ErrorMessage = "授权上限必须填写")]
+            [Range(1, 1000, ErrorMessage = "请输入1~1000的整数")]
+            public int maximum { get; set; }
+            /// <summary>
+            /// 时长-1 永久 ,大于0 按天计算
+            /// </summary>
+            [Required(ErrorMessage = "授权时限必须填写")]
+            [Range(-1, 3650, ErrorMessage = "请输入-1~3650的整数")]
+            public int expires { get; set; }
+        }
+    }
+}

+ 1 - 0
HiTeachCE/Extension/Jwt/JwtAuth.cs

@@ -93,6 +93,7 @@ namespace HiTeachCE.Extension
                 options.AddPolicy("lecturer", policy => policy.RequireRole("lecturer").Build());
                 options.AddPolicy("learner", policy => policy.RequireRole("learner").Build());
                 options.AddPolicy("rootOrlearner", policy => policy.RequireRole("root","learner").Build());
+                options.AddPolicy("all", policy => policy.RequireRole("root","admin" ,"learner").Build());
             });
         }
     }