Merge branch 'master' of https://gitea.mjm-staging.developers-homelab.net/BIMS/BIMS
This commit is contained in:
		
						commit
						3728d863dd
					
				
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@ -2,6 +2,7 @@
 | 
			
		||||
using FrontendWebApi.Models;
 | 
			
		||||
using Microsoft.AspNetCore.Http;
 | 
			
		||||
using Microsoft.AspNetCore.Mvc;
 | 
			
		||||
using Microsoft.Extensions.Logging;
 | 
			
		||||
using Repository.BackendRepository.Interface;
 | 
			
		||||
using Repository.BaseRepository.Interface;
 | 
			
		||||
using Repository.FrontendRepository.Interface;
 | 
			
		||||
@ -38,5 +39,617 @@ namespace FrontendWebApi.ApiControllers
 | 
			
		||||
            apiResult.Data = myUser;
 | 
			
		||||
            return apiResult;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// 帳號管理列表
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <returns></returns>
 | 
			
		||||
        [HttpPost]
 | 
			
		||||
        public async Task<ApiResult<List<UserManagerList>>> UserManagerList()
 | 
			
		||||
        {
 | 
			
		||||
            ApiResult<List<UserManagerList>> apiResult = new ApiResult<List<UserManagerList>>();
 | 
			
		||||
            List<UserManagerList> userManagerList = new List<UserManagerList>();
 | 
			
		||||
 | 
			
		||||
            try
 | 
			
		||||
            {
 | 
			
		||||
                var sqlString = @$"SELECT A.userinfo_guid, A.full_name, B.full_name AS 'Role_full_name', A.email, A.phone, A.created_at,A.Account ,B.layer
 | 
			
		||||
                                   FROM userinfo A
 | 
			
		||||
                                   LEFT JOIN role B ON A.role_guid=B.role_guid AND B.deleted='0' 
 | 
			
		||||
                                   WHERE A.deleted = 0
 | 
			
		||||
                                   ORDER BY A.created_at DESC";
 | 
			
		||||
                userManagerList = await backendRepository.GetAllAsync<UserManagerList>(sqlString);
 | 
			
		||||
 | 
			
		||||
                apiResult.Code = "0000";
 | 
			
		||||
                apiResult.Data = userManagerList;
 | 
			
		||||
            }
 | 
			
		||||
            catch (Exception exception)
 | 
			
		||||
            {
 | 
			
		||||
                apiResult.Code = "9999";
 | 
			
		||||
                apiResult.Msg = "系統內部錯誤,請聯絡管理者。";
 | 
			
		||||
                Logger.LogError("【" + controllerName + "/" + actionName + "】" + exception.Message);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            return apiResult;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// 角色管理列表
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <returns></returns>
 | 
			
		||||
        [HttpPost]
 | 
			
		||||
        public async Task<ApiResult<List<RoleManagerList>>> RoleManagerList(int post) //是否判斷layer 0:否 1:是
 | 
			
		||||
        {
 | 
			
		||||
            ApiResult<List<RoleManagerList>> apiResult = new ApiResult<List<RoleManagerList>>();
 | 
			
		||||
            List<RoleManagerList> roleList = new List<RoleManagerList>();
 | 
			
		||||
 | 
			
		||||
            try
 | 
			
		||||
            {
 | 
			
		||||
                var layersql = "";
 | 
			
		||||
                if (post == 1)
 | 
			
		||||
                {
 | 
			
		||||
                    layersql = "and A.layer = 1 ";
 | 
			
		||||
                }
 | 
			
		||||
                var sqlString = @$"SELECT *
 | 
			
		||||
                                   FROM role A
 | 
			
		||||
                                   WHERE A.deleted = 0 {layersql}
 | 
			
		||||
                                   ORDER BY A.created_at DESC";
 | 
			
		||||
                roleList = await backendRepository.GetAllAsync<RoleManagerList>(sqlString);
 | 
			
		||||
 | 
			
		||||
                apiResult.Code = "0000";
 | 
			
		||||
                apiResult.Data = roleList;
 | 
			
		||||
            }
 | 
			
		||||
            catch (Exception exception)
 | 
			
		||||
            {
 | 
			
		||||
                apiResult.Code = "9999";
 | 
			
		||||
                apiResult.Msg = "系統內部錯誤,請聯絡管理者。";
 | 
			
		||||
                Logger.LogError("【" + controllerName + "/" + actionName + "】" + exception.Message);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            return apiResult;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// 新增 / 修改 使用者
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <param name="post"></param>
 | 
			
		||||
        /// <returns></returns>
 | 
			
		||||
        [HttpPost]
 | 
			
		||||
        public async Task<ApiResult<string>> SaveUser(SaveUserManager post)
 | 
			
		||||
        {
 | 
			
		||||
            ApiResult<string> apiResult = new ApiResult<string>();
 | 
			
		||||
 | 
			
		||||
            UserInfo userInfo = null;
 | 
			
		||||
 | 
			
		||||
            try
 | 
			
		||||
            {
 | 
			
		||||
                userInfo = await backendRepository.GetOneAsync<UserInfo>("userinfo", $"userinfo_guid='{post.Id.ToString()}'");
 | 
			
		||||
 | 
			
		||||
                if (userInfo == null)
 | 
			
		||||
                {
 | 
			
		||||
 | 
			
		||||
                    if (post.Id != "0")
 | 
			
		||||
                    {
 | 
			
		||||
                        apiResult.Code = "9998";
 | 
			
		||||
                        apiResult.Msg = "查無該使用者。";
 | 
			
		||||
                        return apiResult;
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    #region 新增使用者
 | 
			
		||||
                    //判斷帳號 是否已存在
 | 
			
		||||
                    var exist = await backendRepository.HasExistsWithGuid(post.Account, "userinfo", "account");
 | 
			
		||||
                    if (exist)
 | 
			
		||||
                    {
 | 
			
		||||
                        apiResult.Code = "9986";
 | 
			
		||||
                        apiResult.Msg = "該帳號已被註冊,請重新輸入";
 | 
			
		||||
                        return apiResult;
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    EDFunction edFunction = new EDFunction();
 | 
			
		||||
 | 
			
		||||
                    //隨機產生亂數密碼
 | 
			
		||||
                    Random random = new Random((int)DateTime.Now.Ticks);
 | 
			
		||||
                    const string chars = "ABCDEFGHJKLMNPQRSTUVWXYZabcdefghjkmnpqrstuvwxyz23456789";
 | 
			
		||||
                    string random_password = new string(Enumerable.Repeat(chars, 8).Select(s => s[random.Next(chars.Length)]).ToArray());
 | 
			
		||||
 | 
			
		||||
                    var newPassword = edFunction.GetSHA256Encryption(random_password);
 | 
			
		||||
 | 
			
		||||
                    //產生一組GUID
 | 
			
		||||
                    var guid = Guid.NewGuid();  //使用者GUID
 | 
			
		||||
 | 
			
		||||
                    Dictionary<string, object> userinfo = new Dictionary<string, object>();
 | 
			
		||||
                    userinfo = new Dictionary<string, object>()
 | 
			
		||||
                                {
 | 
			
		||||
                                    { "@userinfo_guid", guid},
 | 
			
		||||
                                    { "@Full_name", post.Name},
 | 
			
		||||
                                    { "@Email", post.Email},
 | 
			
		||||
                                    { "@Account", post.Account},
 | 
			
		||||
                                    { "@Password", newPassword},
 | 
			
		||||
                                    { "@Role_guid", post.RoleId},
 | 
			
		||||
                                    { "@Phone", post.Phone},
 | 
			
		||||
                                    { "@created_by", myUser.userinfo_guid}
 | 
			
		||||
                                };
 | 
			
		||||
 | 
			
		||||
                    await backendRepository.AddOneByCustomTable(userinfo, "userinfo");
 | 
			
		||||
 | 
			
		||||
                    var sWhere = "system_type = 'website_config' AND system_key = 'website_url'";
 | 
			
		||||
                    var website_url = await backendRepository.GetOneAsync<Variable>("variable", sWhere);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
                    var sendSubject = "新增帳號成功";
 | 
			
		||||
                    var sendContent = $@"您的新密碼為:{random_password}
 | 
			
		||||
                                        <br>立即前往:<a href='{website_url.system_value}' target='_blank'>{website_url.system_value}</a>";
 | 
			
		||||
 | 
			
		||||
                    Dictionary<string, object> insertNotify = new Dictionary<string, object>()
 | 
			
		||||
                    {
 | 
			
		||||
                        { "@task_type", 0},
 | 
			
		||||
                        { "@recipient_name", post.Name},
 | 
			
		||||
                        { "@recipient_phone", post.Phone},
 | 
			
		||||
                        { "@recipient_email", post.Email},
 | 
			
		||||
                        { "@message_content", sendContent}
 | 
			
		||||
                    };
 | 
			
		||||
 | 
			
		||||
                    await backendRepository.AddOneByCustomTable(insertNotify, "background_service_message_notification_task");
 | 
			
		||||
 | 
			
		||||
                    apiResult.Code = "0000";
 | 
			
		||||
                    apiResult.Msg = "儲存成功";
 | 
			
		||||
                    #endregion
 | 
			
		||||
                }
 | 
			
		||||
                else
 | 
			
		||||
                {
 | 
			
		||||
                    #region 修改使用者
 | 
			
		||||
                    Dictionary<string, object> userinfo = new Dictionary<string, object>();
 | 
			
		||||
                    var role = await backendRepository.GetOneAsync<byte>(@$"select layer from role where role_guid = '{post.RoleId}'");
 | 
			
		||||
                    var infoguid = await backendRepository.GetAllAsync<string>($@"select r.full_name from userinfo u
 | 
			
		||||
                    left join role r on u.role_guid = r.role_guid
 | 
			
		||||
                    where r.layer = 0 and u.userinfo_guid != '{post.Id}'");
 | 
			
		||||
                    if (infoguid.Count == 0 && role == 1)
 | 
			
		||||
                    {
 | 
			
		||||
                        apiResult.Code = "9998";
 | 
			
		||||
                        var getrolename = await backendRepository.GetOneAsync<string>("select r.full_name from role r where r.layer = 0");
 | 
			
		||||
                        apiResult.Msg = getrolename + "-僅剩一位<br>故無法儲存";
 | 
			
		||||
                    }
 | 
			
		||||
                    else
 | 
			
		||||
                    {
 | 
			
		||||
                        userinfo = new Dictionary<string, object>()
 | 
			
		||||
                        {
 | 
			
		||||
                            { "@Full_name", post.Name},
 | 
			
		||||
                            { "@Email", post.Email},
 | 
			
		||||
                            { "@Role_guid", post.RoleId},
 | 
			
		||||
                            { "@Phone", post.Phone},
 | 
			
		||||
                            { "@updated_by", myUser.userinfo_guid},
 | 
			
		||||
                            { "@updated_at", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}
 | 
			
		||||
                        };
 | 
			
		||||
                        await backendRepository.UpdateOneByCustomTable(userinfo, "userinfo", $"userinfo_guid='{post.Id}'");
 | 
			
		||||
 | 
			
		||||
                        apiResult.Code = "0000";
 | 
			
		||||
                        apiResult.Msg = "儲存成功";
 | 
			
		||||
                    }
 | 
			
		||||
                    #endregion
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            catch (Exception exception)
 | 
			
		||||
            {
 | 
			
		||||
                apiResult.Code = "9999";
 | 
			
		||||
                apiResult.Msg = "系統內部錯誤,請聯絡管理者。";
 | 
			
		||||
                string json = System.Text.Json.JsonSerializer.Serialize(post);
 | 
			
		||||
                Logger.LogError("【" + controllerName + "/" + actionName + "】" + json);
 | 
			
		||||
                Logger.LogError("【" + controllerName + "/" + actionName + "】" + exception.Message);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            return apiResult;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// 取得單一使用者
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <param name="guid"></param>
 | 
			
		||||
        /// <returns></returns>
 | 
			
		||||
        [HttpPost]
 | 
			
		||||
        public async Task<ApiResult<SimpleUser>> GetOneUser(string guid)
 | 
			
		||||
        {
 | 
			
		||||
            ApiResult<SimpleUser> apiResult = new ApiResult<SimpleUser>();
 | 
			
		||||
 | 
			
		||||
            SimpleUser simpleUser = null;
 | 
			
		||||
 | 
			
		||||
            try
 | 
			
		||||
            {
 | 
			
		||||
                simpleUser = await backendRepository.GetOneAsync<SimpleUser>("userinfo", $"userinfo_guid='{guid}'");
 | 
			
		||||
 | 
			
		||||
                if (simpleUser == null)
 | 
			
		||||
                {
 | 
			
		||||
                    apiResult.Code = "9998";
 | 
			
		||||
                    apiResult.Msg = "查無該使用者。";
 | 
			
		||||
                    return apiResult;
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                apiResult.Code = "0000";
 | 
			
		||||
                apiResult.Data = simpleUser;
 | 
			
		||||
 | 
			
		||||
            }
 | 
			
		||||
            catch (Exception exception)
 | 
			
		||||
            {
 | 
			
		||||
                apiResult.Code = "9999";
 | 
			
		||||
                apiResult.Msg = "系統內部錯誤,請聯絡管理者。";
 | 
			
		||||
                Logger.LogError("【" + controllerName + "/" + actionName + "】" + "Guid=" + guid);
 | 
			
		||||
                Logger.LogError("【" + controllerName + "/" + actionName + "】" + exception.Message);
 | 
			
		||||
            }
 | 
			
		||||
            return apiResult;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// 軟刪除單一使用者
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <param name="id"></param>
 | 
			
		||||
        /// <returns></returns>
 | 
			
		||||
        [HttpPost]
 | 
			
		||||
        public async Task<ApiResult<string>> DeleteOneUser(string guid)
 | 
			
		||||
        {
 | 
			
		||||
            ApiResult<string> apiResult = new ApiResult<string>();
 | 
			
		||||
 | 
			
		||||
            SimpleUser simpleUser = null;
 | 
			
		||||
 | 
			
		||||
            try
 | 
			
		||||
            {
 | 
			
		||||
                simpleUser = await backendRepository.GetOneAsync<SimpleUser>("userinfo", $"userinfo_guid='{guid}'");
 | 
			
		||||
 | 
			
		||||
                if (simpleUser == null)
 | 
			
		||||
                {
 | 
			
		||||
                    apiResult.Code = "9998";
 | 
			
		||||
                    apiResult.Msg = "查無該使用者。";
 | 
			
		||||
                    return apiResult;
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                await backendRepository.DeleteOne(guid, "userinfo", "userinfo_guid");
 | 
			
		||||
 | 
			
		||||
                apiResult.Code = "0000";
 | 
			
		||||
                apiResult.Msg = "刪除成功";
 | 
			
		||||
            }
 | 
			
		||||
            catch (Exception exception)
 | 
			
		||||
            {
 | 
			
		||||
                apiResult.Code = "9999";
 | 
			
		||||
                apiResult.Msg = "系統內部錯誤,請聯絡管理者。";
 | 
			
		||||
                Logger.LogError("【" + controllerName + "/" + actionName + "】" + "Guid=" + guid);
 | 
			
		||||
                Logger.LogError("【" + controllerName + "/" + actionName + "】" + exception.Message);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            return apiResult;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// 新增 / 修改 角色
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <param name="post"></param>
 | 
			
		||||
        /// <returns></returns>
 | 
			
		||||
        [HttpPost]
 | 
			
		||||
        public async Task<ApiResult<string>> SaveRole(PostRole post)
 | 
			
		||||
        {
 | 
			
		||||
            ApiResult<string> apiResult = new ApiResult<string>();
 | 
			
		||||
 | 
			
		||||
            RoleManagerList roleManager = null;
 | 
			
		||||
 | 
			
		||||
            try
 | 
			
		||||
            {
 | 
			
		||||
                roleManager = await backendRepository.GetOneAsync<RoleManagerList>("role", $"role_guid='{post.Id.ToString()}'");
 | 
			
		||||
 | 
			
		||||
                if (roleManager == null)
 | 
			
		||||
                {
 | 
			
		||||
 | 
			
		||||
                    if (post.Id != "0")
 | 
			
		||||
                    {
 | 
			
		||||
                        apiResult.Code = "9994";
 | 
			
		||||
                        apiResult.Msg = "查無該角色";
 | 
			
		||||
                        return apiResult;
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    #region 新增角色
 | 
			
		||||
                    //產生一組GUID
 | 
			
		||||
                    var guid = Guid.NewGuid();  //角色GUID
 | 
			
		||||
                    Dictionary<string, object> role = new Dictionary<string, object>();
 | 
			
		||||
                    role = new Dictionary<string, object>()
 | 
			
		||||
                            {
 | 
			
		||||
                                { "@role_guid", guid},
 | 
			
		||||
                                { "@Full_name", post.Name},
 | 
			
		||||
                                { "@created_by", myUser.userinfo_guid}
 | 
			
		||||
                            };
 | 
			
		||||
 | 
			
		||||
                    await backendRepository.AddOneByCustomTable(role, "role");
 | 
			
		||||
 | 
			
		||||
                    apiResult.Code = "0000";
 | 
			
		||||
                    apiResult.Msg = "儲存成功";
 | 
			
		||||
                    #endregion
 | 
			
		||||
                }
 | 
			
		||||
                else
 | 
			
		||||
                {
 | 
			
		||||
                    #region 修改角色
 | 
			
		||||
                    Dictionary<string, object> role = new Dictionary<string, object>();
 | 
			
		||||
                    role = new Dictionary<string, object>()
 | 
			
		||||
                            {
 | 
			
		||||
                                { "@Full_name", post.Name},
 | 
			
		||||
                                { "@updated_by", myUser.userinfo_guid},
 | 
			
		||||
                                { "@updated_at", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}
 | 
			
		||||
                            };
 | 
			
		||||
                    await backendRepository.UpdateOneByCustomTable(role, "role", $"role_guid='{post.Id}'");
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
                    apiResult.Code = "0000";
 | 
			
		||||
                    apiResult.Msg = "儲存成功";
 | 
			
		||||
                    #endregion
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            catch (Exception exception)
 | 
			
		||||
            {
 | 
			
		||||
                apiResult.Code = "9999";
 | 
			
		||||
                apiResult.Msg = "系統內部錯誤,請聯絡管理者。";
 | 
			
		||||
                string json = System.Text.Json.JsonSerializer.Serialize(post);
 | 
			
		||||
                Logger.LogError("【" + controllerName + "/" + actionName + "】" + json);
 | 
			
		||||
                Logger.LogError("【" + controllerName + "/" + actionName + "】" + exception.Message);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            return apiResult;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// 取得單一角色
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <param name="id"></param>
 | 
			
		||||
        /// <returns></returns>
 | 
			
		||||
        [HttpPost]
 | 
			
		||||
        public async Task<ApiResult<SimpleRole>> GetOneRole(string guid)
 | 
			
		||||
        {
 | 
			
		||||
            ApiResult<SimpleRole> apiResult = new ApiResult<SimpleRole>();
 | 
			
		||||
 | 
			
		||||
            SimpleRole simpleRole = null;
 | 
			
		||||
 | 
			
		||||
            try
 | 
			
		||||
            {
 | 
			
		||||
                simpleRole = await backendRepository.GetOneAsync<SimpleRole>("role", $"role_guid='{guid}'");
 | 
			
		||||
 | 
			
		||||
                if (simpleRole == null)
 | 
			
		||||
                {
 | 
			
		||||
                    apiResult.Code = "9994";
 | 
			
		||||
                    apiResult.Msg = "查無該角色";
 | 
			
		||||
                    return apiResult;
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                apiResult.Code = "0000";
 | 
			
		||||
                apiResult.Data = simpleRole;
 | 
			
		||||
            }
 | 
			
		||||
            catch (Exception exception)
 | 
			
		||||
            {
 | 
			
		||||
                apiResult.Code = "9999";
 | 
			
		||||
                apiResult.Msg = "系統內部錯誤,請聯絡管理者。";
 | 
			
		||||
                Logger.LogError("【" + controllerName + "/" + actionName + "】" + "Guid=" + guid);
 | 
			
		||||
                Logger.LogError("【" + controllerName + "/" + actionName + "】" + exception.Message);
 | 
			
		||||
            }
 | 
			
		||||
            return apiResult;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// 軟刪除單一角色
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <param name="id"></param>
 | 
			
		||||
        /// <returns></returns>
 | 
			
		||||
        [HttpPost]
 | 
			
		||||
        public async Task<ApiResult<string>> DeleteOneRole(string guid)
 | 
			
		||||
        {
 | 
			
		||||
            ApiResult<string> apiResult = new ApiResult<string>();
 | 
			
		||||
 | 
			
		||||
            SimpleRole simpleRole = null;
 | 
			
		||||
 | 
			
		||||
            try
 | 
			
		||||
            {
 | 
			
		||||
                simpleRole = await backendRepository.GetOneAsync<SimpleRole>("role", $"role_guid='{guid}'");
 | 
			
		||||
 | 
			
		||||
                if (simpleRole == null)
 | 
			
		||||
                {
 | 
			
		||||
                    apiResult.Code = "9998";
 | 
			
		||||
                    apiResult.Msg = "查無該角色";
 | 
			
		||||
                    return apiResult;
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                //檢查是否有使用者為該角色
 | 
			
		||||
                var sWhere = $@"deleted = 0 AND role_guid = @Guid";
 | 
			
		||||
                var userInfos = await backendRepository.GetAllAsync<UserInfo>("userinfo", sWhere, new { Guid = guid });
 | 
			
		||||
                if (userInfos.Count > 0)
 | 
			
		||||
                {
 | 
			
		||||
                    apiResult.Code = "9997";
 | 
			
		||||
                    apiResult.Msg = "帳號管理中尚有帳號正在使用該角色,故無法刪除";
 | 
			
		||||
                    return apiResult;
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
                await backendRepository.DeleteOne(guid, "role", "role_guid");
 | 
			
		||||
 | 
			
		||||
                apiResult.Code = "0000";
 | 
			
		||||
                apiResult.Msg = "刪除成功";
 | 
			
		||||
            }
 | 
			
		||||
            catch (Exception exception)
 | 
			
		||||
            {
 | 
			
		||||
                apiResult.Code = "9999";
 | 
			
		||||
                apiResult.Msg = "系統內部錯誤,請聯絡管理者。";
 | 
			
		||||
                Logger.LogError("【" + controllerName + "/" + actionName + "】" + "Guid=" + guid);
 | 
			
		||||
                Logger.LogError("【" + controllerName + "/" + actionName + "】" + exception.Message);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            return apiResult;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// 角色權限管理列表
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <returns></returns>
 | 
			
		||||
        [HttpPost]
 | 
			
		||||
        public async Task<ApiResult<List<RoleAuthList>>> RoleAuthList(PostRoleAuthFilter post)
 | 
			
		||||
        {
 | 
			
		||||
            ApiResult<List<RoleAuthList>> apiResult = new ApiResult<List<RoleAuthList>>();
 | 
			
		||||
            List<RoleAuthList> roleAuthList = new List<RoleAuthList>();
 | 
			
		||||
 | 
			
		||||
            try
 | 
			
		||||
            {
 | 
			
		||||
                var sqlString = @$"SELECT A.role_guid, A.AuthCode, B.full_name AS 'Role_full_name', C.AuthType, C.MainName, C.SubName, D.full_name AS 'Building_full_name', A.created_at
 | 
			
		||||
                                   FROM role_auth A
 | 
			
		||||
                                   LEFT JOIN role B ON A.role_guid=B.role_guid AND B.deleted=0
 | 
			
		||||
                                   INNER JOIN auth_page C ON A.AuthCode=C.AuthCode
 | 
			
		||||
                                   LEFT JOIN building D ON C.building_tag=D.building_tag AND D.deleted=0
 | 
			
		||||
                                   WHERE A.role_guid='{post.SelectedRoleId}'
 | 
			
		||||
                                   ORDER BY A.created_at DESC";
 | 
			
		||||
                roleAuthList = await backendRepository.GetAllAsync<RoleAuthList>(sqlString);
 | 
			
		||||
 | 
			
		||||
                apiResult.Code = "0000";
 | 
			
		||||
                apiResult.Data = roleAuthList;
 | 
			
		||||
            }
 | 
			
		||||
            catch (Exception exception)
 | 
			
		||||
            {
 | 
			
		||||
                apiResult.Code = "9999";
 | 
			
		||||
                apiResult.Msg = "系統內部錯誤,請聯絡管理者。";
 | 
			
		||||
                Logger.LogError("【" + controllerName + "/" + actionName + "】" + exception.Message);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            return apiResult;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// 取得此角色未選擇的權限
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <param name="post"></param>
 | 
			
		||||
        /// <returns></returns>
 | 
			
		||||
        public async Task<ApiResult<List<AuthPage>>> GetRoleNotAuthPageList(PostRoleAuthFilter post)
 | 
			
		||||
        {
 | 
			
		||||
            ApiResult<List<AuthPage>> apiResult = new ApiResult<List<AuthPage>>();
 | 
			
		||||
            List<AuthPage> authPage = new List<AuthPage>();
 | 
			
		||||
 | 
			
		||||
            try
 | 
			
		||||
            {
 | 
			
		||||
                if (!string.IsNullOrEmpty(post.SelectedRoleId))
 | 
			
		||||
                {
 | 
			
		||||
                    var buildingGuid = "";
 | 
			
		||||
                    if (post.SelectedBuild != "0")
 | 
			
		||||
                    {
 | 
			
		||||
                        buildingGuid = $" AND ap.building_tag = '{post.SelectedBuild}'";
 | 
			
		||||
                    }
 | 
			
		||||
                    var sqlString = @$" SELECT ap.AuthCode, ap.MainName, ap.SubName FROM auth_page ap
 | 
			
		||||
                                    WHERE ap.AuthType='{post.SelectedAuthType}' 
 | 
			
		||||
                                    {buildingGuid}
 | 
			
		||||
                                    AND ap.AuthCode NOT IN ( 
 | 
			
		||||
	                                    SELECT ra.AuthCode FROM role_auth ra
 | 
			
		||||
	                                    LEFT JOIN auth_page ap ON ra.AuthCode = ap.AuthCode
 | 
			
		||||
	                                    WHERE ra.role_guid = '{post.SelectedRoleId}'
 | 
			
		||||
	                                    {buildingGuid}
 | 
			
		||||
	                                    AND ap.AuthType='{post.SelectedAuthType}'
 | 
			
		||||
                                     )";
 | 
			
		||||
                    authPage = await backendRepository.GetAllAsync<AuthPage>(sqlString);
 | 
			
		||||
                }
 | 
			
		||||
                apiResult.Code = "0000";
 | 
			
		||||
                apiResult.Data = authPage;
 | 
			
		||||
            }
 | 
			
		||||
            catch (Exception exception)
 | 
			
		||||
            {
 | 
			
		||||
                apiResult.Code = "9999";
 | 
			
		||||
                apiResult.Msg = "系統內部錯誤,請聯絡管理者。";
 | 
			
		||||
                Logger.LogError("【" + controllerName + "/" + actionName + "】" + exception.Message);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            return apiResult;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// 新增 權限
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <param name="post"></param>
 | 
			
		||||
        /// <returns></returns>
 | 
			
		||||
        [HttpPost]
 | 
			
		||||
        public async Task<ApiResult<string>> SaveRoleAuth(PostSaveRoleAuth post)
 | 
			
		||||
        {
 | 
			
		||||
            ApiResult<string> apiResult = new ApiResult<string>();
 | 
			
		||||
 | 
			
		||||
            RoleManagerList roleManager = null;
 | 
			
		||||
 | 
			
		||||
            try
 | 
			
		||||
            {
 | 
			
		||||
                roleManager = await backendRepository.GetOneAsync<RoleManagerList>("role", $"role_guid='{post.SelectedRoleId}'");
 | 
			
		||||
 | 
			
		||||
                if (roleManager == null)
 | 
			
		||||
                {
 | 
			
		||||
                    apiResult.Code = "9994";
 | 
			
		||||
                    apiResult.Msg = "查無該角色";
 | 
			
		||||
                    return apiResult;
 | 
			
		||||
                }
 | 
			
		||||
                else
 | 
			
		||||
                {
 | 
			
		||||
                    if (post.SaveCheckAuth.Count > 0)
 | 
			
		||||
                    {
 | 
			
		||||
                        foreach (var item in post.SaveCheckAuth)
 | 
			
		||||
                        {
 | 
			
		||||
                            #region 新增權限
 | 
			
		||||
                            Dictionary<string, object> roleAuth = new Dictionary<string, object>();
 | 
			
		||||
                            roleAuth = new Dictionary<string, object>()
 | 
			
		||||
                                {
 | 
			
		||||
                                    { "@role_guid", post.SelectedRoleId},
 | 
			
		||||
                                    { "@AuthCode", item},
 | 
			
		||||
                                    { "@created_by", myUser.userinfo_guid}
 | 
			
		||||
                                };
 | 
			
		||||
 | 
			
		||||
                            await backendRepository.AddOneByCustomTable(roleAuth, "role_auth");
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
                            #endregion
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
                    apiResult.Code = "0000";
 | 
			
		||||
                    apiResult.Msg = "儲存成功";
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            catch (Exception exception)
 | 
			
		||||
            {
 | 
			
		||||
                apiResult.Code = "9999";
 | 
			
		||||
                apiResult.Msg = "系統內部錯誤,請聯絡管理者。";
 | 
			
		||||
                string json = System.Text.Json.JsonSerializer.Serialize(post);
 | 
			
		||||
                Logger.LogError("【" + controllerName + "/" + actionName + "】" + json);
 | 
			
		||||
                Logger.LogError("【" + controllerName + "/" + actionName + "】" + exception.Message);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            return apiResult;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// 刪除 權限
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <param name="post"></param>
 | 
			
		||||
        /// <returns></returns>
 | 
			
		||||
        [HttpPost]
 | 
			
		||||
        public async Task<ApiResult<string>> DeleteOneRoleAuth(PostDeleteRoleAuth post)
 | 
			
		||||
        {
 | 
			
		||||
            ApiResult<string> apiResult = new ApiResult<string>();
 | 
			
		||||
 | 
			
		||||
            RoleManagerList roleManager = null;
 | 
			
		||||
 | 
			
		||||
            try
 | 
			
		||||
            {
 | 
			
		||||
                roleManager = await backendRepository.GetOneAsync<RoleManagerList>("role", $"role_guid='{post.RoleId}'");
 | 
			
		||||
 | 
			
		||||
                if (roleManager == null)
 | 
			
		||||
                {
 | 
			
		||||
                    apiResult.Code = "9994";
 | 
			
		||||
                    apiResult.Msg = "查無該角色";
 | 
			
		||||
                    return apiResult;
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                await backendRepository.PurgeOneByGuidWithCustomDBNameAndTable("role_auth", $"role_guid='{post.RoleId}' AND AuthCode='{post.AuthCode}'");
 | 
			
		||||
 | 
			
		||||
                apiResult.Code = "0000";
 | 
			
		||||
                apiResult.Msg = "刪除成功";
 | 
			
		||||
 | 
			
		||||
            }
 | 
			
		||||
            catch (Exception exception)
 | 
			
		||||
            {
 | 
			
		||||
                apiResult.Code = "9999";
 | 
			
		||||
                apiResult.Msg = "系統內部錯誤,請聯絡管理者。";
 | 
			
		||||
                string json = System.Text.Json.JsonSerializer.Serialize(post);
 | 
			
		||||
                Logger.LogError("【" + controllerName + "/" + actionName + "】" + json);
 | 
			
		||||
                Logger.LogError("【" + controllerName + "/" + actionName + "】" + exception.Message);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            return apiResult;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -45,4 +45,11 @@ namespace FrontendWebApi.Models
 | 
			
		||||
    {
 | 
			
		||||
        public int id { get; set; }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public class Variable : Actor
 | 
			
		||||
    {
 | 
			
		||||
        public string System_type { get; set; }
 | 
			
		||||
        public string System_key { get; set; }
 | 
			
		||||
        public string system_value { get; set; }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -15,10 +15,159 @@ namespace FrontendWebApi.Models
 | 
			
		||||
        public string phone { get; set; }
 | 
			
		||||
        public string tel { get; set; }
 | 
			
		||||
        public string email { get; set; }
 | 
			
		||||
        public List<string> ShowView { get; set; }
 | 
			
		||||
    }
 | 
			
		||||
    public class Login
 | 
			
		||||
    {
 | 
			
		||||
        public string account { get; set; }
 | 
			
		||||
        public string password { get; set; }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public enum UserStatusEnum : byte
 | 
			
		||||
    {
 | 
			
		||||
        Suspend = 0, //停權
 | 
			
		||||
        Normal = 1, //正常
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public class UserInfo : Actor
 | 
			
		||||
    {
 | 
			
		||||
        public string Userinfo_guid { get; set; }
 | 
			
		||||
        public byte Deleted { get; set; } //是否刪除
 | 
			
		||||
        public byte Status { get; set; } //狀態
 | 
			
		||||
        public string StatusText //狀態文字
 | 
			
		||||
        {
 | 
			
		||||
            get
 | 
			
		||||
            {
 | 
			
		||||
                Dictionary<int, string> pairs = new Dictionary<int, string>()
 | 
			
		||||
                {
 | 
			
		||||
                    { 0, "停權"},
 | 
			
		||||
                    { 1, "正常"},
 | 
			
		||||
                };
 | 
			
		||||
 | 
			
		||||
                return pairs[Status];
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        public string Role_guid { get; set; } //角色guid
 | 
			
		||||
        public string Full_name { get; set; } //姓名
 | 
			
		||||
        public string Account { get; set; } //帳號
 | 
			
		||||
        public string Password { get; set; } //密碼
 | 
			
		||||
        public string Tel { get; set; } //市話
 | 
			
		||||
        public string Phone { get; set; } //手機
 | 
			
		||||
        public string Email { get; set; } //信箱
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public class UserManagerList : Actor
 | 
			
		||||
    {
 | 
			
		||||
        public string Userinfo_guid { get; set; }
 | 
			
		||||
        public string Full_name { get; set; } //姓名
 | 
			
		||||
        public string Role_full_name { get; set; } //角色名稱
 | 
			
		||||
        public string Email { get; set; } //信箱
 | 
			
		||||
        public string Phone { get; set; } //手機
 | 
			
		||||
        public string Account { get; set; }
 | 
			
		||||
        public byte Layer { get; set; }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public class RoleManagerList : Actor
 | 
			
		||||
    {
 | 
			
		||||
        public string Role_guid { get; set; }
 | 
			
		||||
        public string Full_name { get; set; } //姓名
 | 
			
		||||
        public byte Layer { get; set; }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public class SaveUserManager
 | 
			
		||||
    {
 | 
			
		||||
        public string Id { get; set; }
 | 
			
		||||
        public string Name { get; set; } //姓名
 | 
			
		||||
        public string Email { get; set; } //信箱
 | 
			
		||||
        public string Account { get; set; } //帳號
 | 
			
		||||
        public string Phone { get; set; } //手機號碼
 | 
			
		||||
        public string RoleId { get; set; } //角色GUID
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public class SimpleUser
 | 
			
		||||
    {
 | 
			
		||||
        public string Full_name { get; set; } //姓名
 | 
			
		||||
        public string Account { get; set; } //帳號
 | 
			
		||||
        public string Email { get; set; } //信箱
 | 
			
		||||
        public string Phone { get; set; } //手機
 | 
			
		||||
        public string Role_guid { get; set; } //角色GUID
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public class PostRole
 | 
			
		||||
    {
 | 
			
		||||
        public string Id { get; set; }
 | 
			
		||||
        public string Name { get; set; }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public class SimpleRole
 | 
			
		||||
    {
 | 
			
		||||
        public string Full_name { get; set; } //姓名
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public class RoleAuthList : Actor
 | 
			
		||||
    {
 | 
			
		||||
        public string Role_guid { get; set; } //角色GUID
 | 
			
		||||
        public string AuthCode { get; set; } //權限代碼
 | 
			
		||||
        public string Role_full_name { get; set; } //角色名稱
 | 
			
		||||
        public int AuthType { get; set; } //角色類型 1:前台 2:後台
 | 
			
		||||
        public string AuthTypeText //角色類型文字
 | 
			
		||||
        {
 | 
			
		||||
            get
 | 
			
		||||
            {
 | 
			
		||||
                Dictionary<int, string> pairs = new Dictionary<int, string>()
 | 
			
		||||
                {
 | 
			
		||||
                    { 1, "前台"},
 | 
			
		||||
                    { 2, "後台"},
 | 
			
		||||
                };
 | 
			
		||||
 | 
			
		||||
                return pairs[AuthType];
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        public string MainName { get; set; } //大項名稱
 | 
			
		||||
        public string SubName { get; set; } //功能名稱
 | 
			
		||||
        public string Building_full_name { get; set; } //區域名稱
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public class PostRoleAuthFilter
 | 
			
		||||
    {
 | 
			
		||||
        public string SelectedRoleId { get; set; }
 | 
			
		||||
        public string SelectedAuthType { get; set; }
 | 
			
		||||
        public string SelectedBuild { get; set; }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public class AuthPage
 | 
			
		||||
    {
 | 
			
		||||
        public string AuthCode { get; set; }
 | 
			
		||||
        public string MainName { get; set; }
 | 
			
		||||
        public string SubName { get; set; }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public class PostSaveRoleAuth
 | 
			
		||||
    {
 | 
			
		||||
        public string SelectedRoleId { get; set; }
 | 
			
		||||
        public List<string> SaveCheckAuth { get; set; }
 | 
			
		||||
        //public FrontEndCheckAuth BackEndCheckAuth { get; set; }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public class PostDeleteRoleAuth
 | 
			
		||||
    {
 | 
			
		||||
        public string RoleId { get; set; }
 | 
			
		||||
        public string AuthCode { get; set; }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    //public class FrontEndCheckAuth
 | 
			
		||||
    //{
 | 
			
		||||
    //    public string Building { get; set; }
 | 
			
		||||
    //    public List<string> SelectedAuth { get; set; }
 | 
			
		||||
    //}
 | 
			
		||||
    public class Auth_page
 | 
			
		||||
    {
 | 
			
		||||
        public string AuthCode { get; set; }
 | 
			
		||||
        public byte AuthType { get; set; }
 | 
			
		||||
        public string MainName { get; set; }
 | 
			
		||||
        public string SubName { get; set; }
 | 
			
		||||
        public string building_guid { get; set; }
 | 
			
		||||
        public string ShowView { get; set; }
 | 
			
		||||
        public string created_at { get; set; }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -30,7 +30,7 @@ namespace tpDomeWinAPP.Service
 | 
			
		||||
        {
 | 
			
		||||
            bool result = false;
 | 
			
		||||
            //tag
 | 
			
		||||
            InsertNiagaraTagList(dt, building);
 | 
			
		||||
            insertNiagaraTagList(dt, building);
 | 
			
		||||
            insertItemFromNiagara(dt, building);
 | 
			
		||||
            deviceComparison();
 | 
			
		||||
            deviceItemComparison();
 | 
			
		||||
@ -39,7 +39,7 @@ namespace tpDomeWinAPP.Service
 | 
			
		||||
            return result;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        protected void InsertNiagaraTagList(List<device_value2> dt, string building)
 | 
			
		||||
        protected void insertNiagaraTagList(List<device_value2> dt, string building)
 | 
			
		||||
        {
 | 
			
		||||
            var ds2 = dt.GroupBy(x => new
 | 
			
		||||
            {
 | 
			
		||||
@ -209,6 +209,7 @@ namespace tpDomeWinAPP.Service
 | 
			
		||||
 | 
			
		||||
                conn.Open();
 | 
			
		||||
                StringBuilder sb = new StringBuilder();
 | 
			
		||||
                StringBuilder sb2 = new StringBuilder();
 | 
			
		||||
                sb.Append($@" SELECT m.*
 | 
			
		||||
                               FROM import_niagara_tag m
 | 
			
		||||
                               LEFT JOIN device d
 | 
			
		||||
@ -237,11 +238,19 @@ namespace tpDomeWinAPP.Service
 | 
			
		||||
                                data.device_serial_tag + "', '" +
 | 
			
		||||
                                data.niagara_tags + "', '" +  
 | 
			
		||||
                                data.device_system_tag + "', now(), now() );");
 | 
			
		||||
 | 
			
		||||
                        sb2.Append($@"INSERT device_kind (device_kind_guid, device_building_tag, device_system_tag, device_name_tag, 
 | 
			
		||||
                                    device_normal_flashing, device_close_flashing, device_error_flashing, device_error_independent, 
 | 
			
		||||
                                    created_by, created_at)
 | 
			
		||||
                                    VALUES (uuid(), '" + data.device_building_tag + "', '" + data.device_system_tag + "', '" + data.device_name_tag + 
 | 
			
		||||
                                    "', 0, 0, 1, 0, 'B43E3CA7-96DD-4FC7-B6E6-974ACC3B0878', now());");
 | 
			
		||||
                    }
 | 
			
		||||
                    if(sb.Length > 0)
 | 
			
		||||
                    {
 | 
			
		||||
                        conn.Execute(sb.ToString());
 | 
			
		||||
                        conn.Execute(sb2.ToString());
 | 
			
		||||
                        sb.Clear();
 | 
			
		||||
                        sb2.Clear();
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
                
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user