李昊 4 rokov pred
rodič
commit
874e4819fa

+ 119 - 0
GxPress/Infrastructure/GxPress.Common/Sms/AliySms.cs

@@ -1,3 +1,4 @@
+using System.Collections.Generic;
 using System.Text;
 using Aliyun.Acs.Core;
 using Aliyun.Acs.Core.Exceptions;
@@ -9,6 +10,12 @@ namespace GxPress.Common.Sms
 {
     public static class AliySms
     {
+        /// <summary>
+        /// 登录验证码
+        /// </summary>
+        /// <param name="phone"></param>
+        /// <param name="code"></param>
+        /// <returns></returns>
         public static bool SendSms(string phone, string code)
         {
             //发送验证码阿里云
@@ -41,5 +48,117 @@ namespace GxPress.Common.Sms
             }
             return false;
         }
+        /// <summary>
+        /// 通知
+        /// </summary>
+        /// <param name="phone"></param>
+        /// <returns></returns>
+        public static bool NoticeSendSms(List<string> phones)
+        {
+            //发送验证码阿里云
+            IClientProfile profile =
+                DefaultProfile.GetProfile("cn-hangzhou", "LTAI4GKu41MJT8HBxdGAUSWU", "huEFjWImOBDmzyJ8jdive83BXpQm1V");
+            DefaultAcsClient client = new DefaultAcsClient(profile);
+            CommonRequest request = new CommonRequest
+            {
+                Method = MethodType.POST,
+                Domain = "dysmsapi.aliyuncs.com",
+                Version = "2017-05-25",
+                Action = "SendSms"
+            };
+            request.AddQueryParameters("PhoneNumbers", $"({Common.Tools.StringUtils.ObjectCollectionToString(phones)})");
+            request.AddQueryParameters("SignName", "同岑");
+            request.AddQueryParameters("TemplateCode", "SMS_191490083");
+            //request.AddQueryParameters("TemplateParam", "{\"code\":\"" + code + "\"}");
+            try
+            {
+                CommonResponse response = client.GetCommonResponse(request);
+                if (response.HttpStatus == 200)
+                {
+                    //var codeByte = Encoding.UTF8.GetBytes(Utilities.JsonSerialize(code));
+                    return true;
+                }
+            }
+            catch (ServerException e)
+            {
+                return false;
+            }
+            return false;
+        }
+        /// <summary>
+        /// 工作流程状态短信
+        /// </summary>
+        /// <param name="phone"></param>
+        /// <returns></returns>
+        public static bool FolwStatusSendSms(string phone)
+        {
+            //发送验证码阿里云
+            IClientProfile profile =
+                DefaultProfile.GetProfile("cn-hangzhou", "LTAI4GKu41MJT8HBxdGAUSWU", "huEFjWImOBDmzyJ8jdive83BXpQm1V");
+            DefaultAcsClient client = new DefaultAcsClient(profile);
+            CommonRequest request = new CommonRequest
+            {
+                Method = MethodType.POST,
+                Domain = "dysmsapi.aliyuncs.com",
+                Version = "2017-05-25",
+                Action = "SendSms"
+            };
+            request.AddQueryParameters("PhoneNumbers", $"{phone}");
+            request.AddQueryParameters("SignName", "同岑");
+            request.AddQueryParameters("TemplateCode", "SMS_191490081");
+            //request.AddQueryParameters("TemplateParam", "{\"code\":\"" + code + "\"}");
+            try
+            {
+                CommonResponse response = client.GetCommonResponse(request);
+                if (response.HttpStatus == 200)
+                {
+                    //var codeByte = Encoding.UTF8.GetBytes(Utilities.JsonSerialize(code));
+                    return true;
+                }
+            }
+            catch (ServerException e)
+            {
+                return false;
+            }
+            return false;
+        }
+
+        /// <summary>
+        /// 工作流程审核短信
+        /// </summary>
+        /// <param name="phone"></param>
+        /// <returns></returns>
+        public static bool FolwCheckSendSms(string phone)
+        {
+            //发送验证码阿里云
+            IClientProfile profile =
+                DefaultProfile.GetProfile("cn-hangzhou", "LTAI4GKu41MJT8HBxdGAUSWU", "huEFjWImOBDmzyJ8jdive83BXpQm1V");
+            DefaultAcsClient client = new DefaultAcsClient(profile);
+            CommonRequest request = new CommonRequest
+            {
+                Method = MethodType.POST,
+                Domain = "dysmsapi.aliyuncs.com",
+                Version = "2017-05-25",
+                Action = "SendSms"
+            };
+            request.AddQueryParameters("PhoneNumbers", $"{phone}");
+            request.AddQueryParameters("SignName", "同岑");
+            request.AddQueryParameters("TemplateCode", "SMS_191490079");
+            //request.AddQueryParameters("TemplateParam", "{\"code\":\"" + code + "\"}");
+            try
+            {
+                CommonResponse response = client.GetCommonResponse(request);
+                if (response.HttpStatus == 200)
+                {
+                    //var codeByte = Encoding.UTF8.GetBytes(Utilities.JsonSerialize(code));
+                    return true;
+                }
+            }
+            catch (ServerException e)
+            {
+                return false;
+            }
+            return false;
+        }
     }
 }

+ 9 - 0
GxPress/Repository/GxPress.Repository.Implement/UserRepository.cs

@@ -805,6 +805,15 @@ namespace GxPress.Repository.Implement
         {
             return await _repository.GetAllAsync(query);
         }
+        /// <summary>
+        /// 根据用户ID获取哦手机号码
+        /// </summary>
+        /// <param name="userIds"></param>
+        /// <returns></returns>
+        public async Task<IEnumerable<string>> GetUserIdsAsync(List<int> userIds)
+        {
+            return await _repository.GetAllAsync<string>(Q.Select(nameof(User.Phone)).WhereIn(nameof(User.Id), userIds));
+        }
 
         public Task<IEnumerable<User>> FindAllUserAsync()
         {

+ 6 - 0
GxPress/Repository/GxPress.Repository.Interface/IUserRepository.cs

@@ -227,5 +227,11 @@ namespace GxPress.Repository.Interface
         /// <param name="request"></param>
         /// <returns></returns>
         Task<bool> UpdateByOpendIdAsync(UserSignInRequest request);
+        /// <summary>
+        /// 根据用户ID获取哦手机号码
+        /// </summary>
+        /// <param name="userIds"></param>
+        /// <returns></returns>
+        Task<IEnumerable<string>> GetUserIdsAsync(List<int> userIds);
     }
 }

+ 8 - 1
GxPress/Service/GxPress.Service.Implement/Flow/FlowService.Actions1.Add.cs

@@ -1,3 +1,4 @@
+using System.Collections.Generic;
 using System.Linq;
 using System.Threading.Tasks;
 using Datory;
@@ -54,6 +55,12 @@ namespace GxPress.Service.Implement
                         IsOperate = i == 0,
                     };
                     await _flowTodoRepository.InsertAsync(todo);
+                    if (i == 0)
+                    {
+                        //发送短信
+                        var user = await _userRepository.GetAsync(todo.UserId);
+                        Common.Sms.AliySms.FolwCheckSendSms(user.Phone);
+                    }
                 }
             }
             if (flow.CarbonCopyUserIds != null)
@@ -90,7 +97,7 @@ namespace GxPress.Service.Implement
                 if (processNodeDto.Type == nameof(ProcessNodeTypeConst.Switch))
                 {
                     //工作流条件
-                    await NodeExecuteSwitchAsync(flow,processNodeDto);
+                    await NodeExecuteSwitchAsync(flow, processNodeDto);
                 }
                 if (processNodeDto.Type == nameof(ProcessNodeTypeConst.End))
                 {

+ 15 - 53
GxPress/Service/GxPress.Service.Implement/Flow/FlowService.Actions2.Check.cs

@@ -39,9 +39,6 @@ namespace GxPress.Service.Implement
                 Type = nameof(TodoTypeConst.ApproverCheck),
                 Message = message
             });
-
-            //var nodes = await GetNodesAsync(flow, await _processService.GetNodesAsync(flow.ProcessId, 0));
-            // var isCheck = false;
             if (isChecked)
             {
                 //修改状态
@@ -56,14 +53,17 @@ namespace GxPress.Service.Implement
                         await _flowTodoRepository.UpdateAsync(item);
                     }
                 }
-                // //修改状态
-                // // await _flowRepository.UpdateStateAsync(flow.Id, nameof(FlowState.Checked));
-                // //是否审核通过
+                //是否审核通过
                 var checkedCount = await _flowTodoRepository.CountAsync(Q.Where(nameof(Entity.WorkFlow.FlowTodo.FlowId), flow.Id).Where(nameof(Entity.WorkFlow.FlowTodo.IsDone), true).Where(nameof(Entity.WorkFlow.FlowTodo.Type), nameof(TodoTypeConst.ApproverCheck)).Where(nameof(Entity.WorkFlow.FlowTodo.IsChecked), true));
                 var allCount = await _flowTodoRepository.CountAsync(Q.Where(nameof(Entity.WorkFlow.FlowTodo.FlowId), flow.Id).Where(nameof(Entity.WorkFlow.FlowTodo.Type), nameof(TodoTypeConst.ApproverCheck)));
                 //判断是否最后一个通过
                 if (checkedCount == allCount)
+                {
                     await _flowRepository.UpdateStateAsync(flow.Id, nameof(FlowState.Checked));
+                    //发送短信
+                    var user = await _userRepository.GetAsync(flow.UserId);
+                    Common.Sms.AliySms.FolwStatusSendSms(user.Phone);
+                }
                 else
                 {
                     //修改可操作人
@@ -75,67 +75,29 @@ namespace GxPress.Service.Implement
                         {
                             item.IsOperate = true;
                             await _flowTodoRepository.UpdateAsync(item);
+                            //发送短信
+                            var user = await _userRepository.GetAsync(item.UserId);
+                            Common.Sms.AliySms.FolwCheckSendSms(user.Phone);
                         }
                     }
                     else
                     {
                         flowTodo.IsOperate = true;
                         await _flowTodoRepository.UpdateAsync(flowTodo);
+                        //发送短信
+                        var user = await _userRepository.GetAsync(flowTodo.UserId);
+                        Common.Sms.AliySms.FolwCheckSendSms(user.Phone);
                     }
                 }
-                // ProcessNodeDto nextApproverNode = null;
-                // foreach (var processNodeDto in nodes)
-                // {
-                //     if (processNodeDto.Id == flow.ProcessNodeId)
-                //     {
-                //         // 当前节点如果是会签需要判断是否为当前节点的最后一个审核人
-                //         if (processNodeDto.Type == nameof(ProcessNodeTypeConst.Approver) &&
-                //             processNodeDto.ApprovalType == nameof(ApprovalTypeConst.And) &&
-                //             processNodeDto.ApproverChecks != null)
-                //         {
-                //             var checkedUserIdList = await _flowTodoRepository.GetAllCheckedUserIdListAsync(flow.Id);
-                //             var allUserIdList = await GetUserIdListAsync(processNodeDto.ApproverChecks);
-                //             if (checkedUserIdList.Count() != allUserIdList.Count)
-                //             {
-                //                 return;
-                //             }
-                //         }
-                //     }
-                //     //判断是否进入下一阶段
-                //     if (isCheck && processNodeDto.Id > flow.ProcessNodeId && processNodeDto.Type == nameof(ProcessNodeTypeConst.Approver))
-                //     {
-                //         nextApproverNode = processNodeDto;
-                //         //设置节点
-                //         await _flowRepository.UpdateProcessNodeIdAsync(flow.Id, processNodeDto.Id);
-                //         break;
-                //     }
-                // }
-
-                // if (nextApproverNode == null)
-                // {
-                //     if (isCheck)
-                //     {
-                //         //修改状态
-                //         await _flowRepository.UpdateStateAsync(flow.Id, nameof(FlowState.Checked));
-                //     }
-                //     //await _flowTodoRepository.DeleteCheckingByFlowIdAsync(flow.Id);
 
-                //     //await NodeExecuteAsync(flow, nodes.Last());
-                // }
-                // else
-                // {
-                //     //修改状态
-                //     await _flowRepository.UpdateStateAsync(flow.Id, nameof(FlowState.Checking));
-                //     await NodeExecuteAsync(flow, nextApproverNode);
-                // }
             }
             else
             {
-                //删除多余的审核人
-                // await _flowTodoRepository.DeleteCheckingByFlowIdAsync(flow.Id);
                 //修改工作流程状态
                 await _flowRepository.UpdateStateAsync(flow.Id, nameof(FlowState.Denied));
-                //await NodeExecuteAsync(flow, nodes.Last());
+                //发送短信
+                var user = await _userRepository.GetAsync(flow.UserId);
+                Common.Sms.AliySms.FolwStatusSendSms(user.Phone);
             }
         }
 

+ 6 - 0
GxPress/Service/GxPress.Service.Implement/Flow/FlowService.Nodes.cs

@@ -318,6 +318,9 @@ namespace GxPress.Service.Implement
                     {
                         item.IsOperate = true;
                         await _flowTodoRepository.UpdateAsync(item);
+                        //发送短信
+                        var user = await _userRepository.GetAsync(item.UserId);
+                        Common.Sms.AliySms.FolwCheckSendSms(user.Phone);
                     }
                 }
                 else
@@ -326,6 +329,9 @@ namespace GxPress.Service.Implement
                     {
                         flowTodo.IsOperate = true;
                         await _flowTodoRepository.UpdateAsync(flowTodo);
+                        //发送短信
+                        var user = await _userRepository.GetAsync(flowTodo.UserId);
+                        Common.Sms.AliySms.FolwCheckSendSms(user.Phone);
                     }
                 }
             }

+ 7 - 2
GxPress/Service/GxPress.Service.Implement/Notice/NoticeService.Insert.cs

@@ -63,8 +63,8 @@ namespace GxPress.Service.Implement.Notice
                         //删除抄送人
                         await _noticeCcRepository.DeleteAsync(noticeId);
                         //删除userMiddle
-                        await _userMiddleService.DeleteAsync(noticeId,10);
-                        await _userMiddleService.DeleteAsync(noticeId,20);
+                        await _userMiddleService.DeleteAsync(noticeId, 10);
+                        await _userMiddleService.DeleteAsync(noticeId, 20);
                     }
                     //判断是不是新版通知
                     if (request.AddresseeUserMiddles.Count > 0)
@@ -182,8 +182,13 @@ namespace GxPress.Service.Implement.Notice
 
                     //添加文件
                     if (request.NoticeType == NoticeTypeConst.Send)
+                    {
                         //添加收件人
                         await _middleRepository.InsertAsync(middles);
+                        //发送短信
+                        var userPhones = await _userRepository.GetUserIdsAsync(middles.Select(n => n.UserId).ToList());
+                        Common.Sms.AliySms.NoticeSendSms(userPhones.ToList());
+                    }
                     transactionScope.Complete();
                 }
             }