Ejemplo n.º 1
0
        public void Execute(PersistBrokerPluginContext context)
        {
            switch (context.Action)
            {
            case EntityAction.PreCreate:
            case EntityAction.PreUpdate:
                CheckUserInfo(context.Entity, context.Broker);
                break;

            case EntityAction.PostCreate:
                CreateAuthInfo(context.Entity, context.Broker);
                break;

            case EntityAction.PostUpdate:
                UpdateAuthInfo(context.Entity, context.Broker);
                break;

            case EntityAction.PostDelete:
                DeleteAuthInfo(context.Entity, context.Broker);
                break;

            default:
                break;
            }
        }
Ejemplo n.º 2
0
        public void Execute(PersistBrokerPluginContext context)
        {
            if (context.EntityName != "sys_entity")
            {
                return;
            }

            var broker = context.Broker;

            switch (context.Action)
            {
            case EntityAction.PostCreate:
                // 创建权限
                new SysRolePrivilegeService(broker).CreateRoleMissingPrivilege();
                // 重新注册权限并清除缓存
                UserPrivilegesCache.Clear(broker);
                break;

            case EntityAction.PostDelete:
                var privileges = new SysRolePrivilegeService(broker).GetPrivileges(context.Entity.Id).ToArray();
                broker.Delete(privileges);
                UserPrivilegesCache.Clear(broker);
                break;

            default:
                break;
            }
        }
Ejemplo n.º 3
0
        public void Execute(PersistBrokerPluginContext context)
        {
            var entity = context.Entity as blog;

            switch (context.Action)
            {
            case EntityAction.PostCreate:
            case EntityAction.PostUpdate:
                var id        = context.Entity.Id;
                var sql       = @"
UPDATE sys_file
SET objectid = @objectid
WHERE sys_fileid = @id
";
                var paramList = new Dictionary <string, object>()
                {
                    { "@id", entity.surfaceid },
                    { "@objectid", id }
                };
                context.Broker.Execute(sql, paramList);
                new DraftService(context.Broker).DeleteDataByBlogId(id);     // 删除草稿
                break;

            default:
                break;
            }
        }
Ejemplo n.º 4
0
        public void Execute(PersistBrokerPluginContext context)
        {
            var data = context.Entity as classification;

            switch (context.Action)
            {
            case EntityAction.PostCreate:
            case EntityAction.PostUpdate:
                CreateOrUpdateMenu(context.Broker, data);
                break;

            case EntityAction.PostDelete:
            {
                var menu = context.Broker.Retrieve <sys_menu>("SELECT * FROM sys_menu WHERE router = @code", new Dictionary <string, object>()
                    {
                        { "@code", $"blogs/{context.Entity.GetAttributeValue<string>("code")}" }
                    });
                if (menu != null)
                {
                    context.Broker.Delete(menu);
                }
            }
            break;

            default:
                break;
            }
        }
Ejemplo n.º 5
0
        public void Execute(PersistBrokerPluginContext context)
        {
            if (context.EntityName != "robot_message_task")
            {
                return;
            }

            var obj = context.Entity as robot_message_task;

            switch (context.Action)
            {
            case EntityAction.PostCreate:
            case EntityAction.PostUpdate:
                JobHelpers.RegisterJob(new RobotMessageTaskJob(obj.name, obj.robotidName, obj.runtime), obj, obj.job_state.ToTriggerState());
                break;

            case EntityAction.PreCreate:
                var jobState = new RobotMessageTaskJob().DefaultTriggerState.ToSelectOption();
                obj.job_state     = jobState.Value.ToString();
                obj.job_stateName = jobState.Name;
                break;

            case EntityAction.PreUpdate:
            case EntityAction.PostDelete:
                JobHelpers.DeleteJob(obj.name, obj.robotidName);
                break;

            default:
                break;
            }
        }
Ejemplo n.º 6
0
        public void Execute(PersistBrokerPluginContext context)
        {
            var obj = context.Entity as gallery;

            switch (context.Action)
            {
            case EntityAction.PreCreate:
                break;

            case EntityAction.PreUpdate:
                break;

            case EntityAction.PostCreate:
            case EntityAction.PostUpdate:
                var data1 = context.Broker.Retrieve <sys_file>(obj.previewid);
                var data2 = context.Broker.Retrieve <sys_file>(obj.imageid);
                data1.objectId = obj.Id;
                data2.objectId = obj.Id;
                context.Broker.Update(data1);
                context.Broker.Update(data2);
                break;

            case EntityAction.PreDelete:
                break;

            case EntityAction.PostDelete:
                break;

            default:
                break;
            }
        }
Ejemplo n.º 7
0
        public void Execute(PersistBrokerPluginContext context)
        {
            var entity = context.Entity;

            switch (context.Action)
            {
            case EntityAction.PreCreate:
                break;

            case EntityAction.PostCreate:
                break;

            case EntityAction.PreUpdate:
                break;

            case EntityAction.PostUpdate:
                break;

            case EntityAction.PreDelete:
                break;

            case EntityAction.PostDelete:
            {
                #region 如果文件没有实体关联就删除
                var sql       = @"
SELECT
	* 
FROM
	sys_file 
WHERE
	hash_code = @hash_code 
	AND sys_fileid <> @Id"    ;
                var paramList = new Dictionary <string, object>()
                {
                    { "@hash_code", entity.GetAttributeValue <string>("hash_code") },
                    { "@id", entity.GetAttributeValue <string>("sys_fileid") }
                };
                var dataList = context.Broker.RetrieveMultiple <sys_file>(sql, paramList);
                if (dataList.IsEmpty())
                {
                    ServiceContainer.Resolve <IStoreStrategy>(StoreConfig.Config.Type).Delete(new List <string>()
                        {
                            entity.GetAttributeValue <string>("real_name")
                        });
                }
                break;
                #endregion
            }

            default:
                break;
            }
        }
Ejemplo n.º 8
0
        public void Execute(PersistBrokerPluginContext context)
        {
            var entity = context.Entity;

            switch (context.Action)
            {
            case EntityAction.PostCreate:
            {
                var data    = entity as upvote;
                var message = new message_remind()
                {
                    Id             = Guid.NewGuid().ToString(),
                    name           = $"{data.name}消息提醒",
                    is_read        = false,
                    is_readName    = "否",
                    receiverId     = data.object_ownerid,
                    receiverIdName = data.object_owneridName,
                    message_type   = "upvote",
                    content        = JsonConvert.SerializeObject(data)
                };
                context.Broker.Create(message);
            }
            break;

            case EntityAction.PreDelete:
            {
                var data     = context.Broker.Retrieve <upvote>(context.Entity.Id);
                var sql      = @"
SELECT * FROM (
	SELECT *, content::jsonb ->> 'objectId' AS objectid
	FROM message_remind WHERE 1=1  AND message_type = 'upvote'
) t1
WHERE t1.objectid = @id";
                var dataList = context.Broker.RetrieveMultiple <message_remind>(sql, new Dictionary <string, object>()
                    {
                        { "@id", data.objectId }
                    });
                dataList.Each(item => context.Broker.Delete(item));
            }
            break;

            default:
                break;
            }
        }
Ejemplo n.º 9
0
        public void Execute(PersistBrokerPluginContext context)
        {
            var entity = context.Entity;

            switch (context.Action)
            {
            case EntityAction.PreCreate:
            {
                var reciver = entity["mail_address"].ToString();
                var title   = entity["name"].ToString();
                var content = entity["content"].ToString();
                MailUtil.SendMail(reciver, title, content);
            }
            break;

            default:
                break;
            }
        }
Ejemplo n.º 10
0
        public void Execute(PersistBrokerPluginContext context)
        {
            if (context.EntityName != nameof(sys_role_privilege))
            {
                return;
            }

            switch (context.Action)
            {
            case EntityAction.PostCreate:
            case EntityAction.PostDelete:
            case EntityAction.PostUpdate:
                UserPrivilegesCache.Clear(context.Broker);
                break;

            default:
                break;
            }
        }
Ejemplo n.º 11
0
        public void Execute(PersistBrokerPluginContext context)
        {
            switch (context.Action)
            {
            case EntityAction.PreCreate:
            case EntityAction.PreUpdate:
                var entity = context.Entity;
                if (entity.GetAttributeValue("checked") == null)
                {
                    context.Entity["checked"] = 0;
                }
                if (entity.GetAttributeValue("wechat") == null)
                {
                    context.Entity["wechat"] = WeChatConfig.Config.Appid;
                }
                break;

            default:
                break;
            }
        }
Ejemplo n.º 12
0
        public void Execute(PersistBrokerPluginContext context)
        {
            if (context.EntityName != "sys_role")
            {
                return;
            }

            var obj = context.Entity as sys_role;

            switch (context.Action)
            {
            case EntityAction.PostDelete:
            {
                AssertUtil.CheckBoolean <SpException>(obj.is_basic, "禁止删除基础角色", "D283AEBF-60CA-4DFF-B08D-6D3DD10AFBBA");
            }
            break;

            default:
                break;
            }
        }
Ejemplo n.º 13
0
        public void Execute(PersistBrokerPluginContext context)
        {
            var entity = context.Entity;
            var broker = context.Broker;

            switch (context.Action)
            {
            case EntityAction.PreCreate:
            {
                var data    = entity as sys_attrs;
                var columns = new List <Column>()
                {
                    MapperHelper.Map <Column>(data)
                };
                broker.Execute(broker.DbClient.Driver.GetAddColumnSql(data.entityCode, columns));
            }
            break;

            case EntityAction.PostDelete:
            {
                var column = new Column()
                {
                    Name = entity.GetAttributeValue <string>("code")
                };
                var tableName = broker.Retrieve <sys_entity>(entity.GetAttributeValue <string>("entityid"))?.code;
                if (!string.IsNullOrEmpty(tableName))
                {
                    broker.Execute(broker.DbClient.Driver.GetDropColumnSql(tableName, new List <Column>()
                        {
                            column
                        }));
                }
            }
            break;

            default:
                break;
            }
        }
Ejemplo n.º 14
0
 public void Execute(PersistBrokerPluginContext context)
 {
     var entity = context.Entity as wechat_material;
     switch (context.Action)
     {
         case EntityAction.PreCreate:
         case EntityAction.PreUpdate:
             // 如果素材未上传到系统,则根据url请求图片保存
             if (string.IsNullOrEmpty(entity.sys_fileid))
             {
                 var result = HttpUtil.DownloadImage(entity.url, out var contentType);
                 var id = Guid.NewGuid().ToString();
                 var stream = StreamUtil.BytesToStream(result);
                 var hash_code = SHAUtil.GetFileSHA1(stream);
                 var config = StoreConfig.Config;
                 ServiceContainer.Resolve<IStoreStrategy>(config?.Type).Upload(stream, entity.name, out var filePath);
                 var sysImage = new sys_file()
                 {
                     sys_fileId = id,
                     name = entity.name,
                     real_name = entity.name,
                     hash_code = hash_code,
                     file_type = "wechat_material",
                     content_type = contentType,
                     objectId = entity.Id
                 };
                 new SysFileService(context.Broker).CreateData(sysImage);
                 entity.sys_fileid = id;
                 entity.local_url = SysFileService.GetDownloadUrl(id);
             }
             break;
         case EntityAction.PreDelete:
             WeChatApi.DeleteMaterial(entity.GetAttributeValue<string>("media_id"));
             context.Broker.Delete("sys_file", entity.GetAttributeValue<string>("sys_fileid"));
             break;
         default:
             break;
     }
 }
Ejemplo n.º 15
0
        public void Execute(PersistBrokerPluginContext context)
        {
            var broker = context.Broker;

            switch (context.Action)
            {
            case EntityAction.PostCreate:
            {
                var data          = context.Entity as comments;
                var messageRemind = new message_remind()
                {
                    Id           = Guid.NewGuid().ToString(),
                    name         = $"{data.name}消息提醒",
                    is_read      = false,
                    is_readName  = "否",
                    content      = JsonConvert.SerializeObject(data),
                    message_type = data.comment_type
                };
                if (data.comment_type == "comment")
                {
                    messageRemind.receiverId     = data.object_ownerid;
                    messageRemind.receiverIdName = data.object_owneridName;
                }
                else if (data.comment_type == "reply")
                {
                    messageRemind.receiverId     = data.replyid;
                    messageRemind.receiverIdName = data.replyidName;
                }
                broker.Create(messageRemind);
            }
            break;

            default:
                break;
            }
        }