Esempio n. 1
0
        /// <summary>
        /// 获取成员信息
        /// </summary>
        /// <param name="group">群号</param>
        /// <param name="account">成员账号</param>
        /// <returns></returns>
        public MemberInfo GetInfo(string group, string account)
        {
            var memberInfo =
                PikachuDataContext.MemberInfos.FirstOrDefault(u =>
                                                              u.Enable && u.Group == group && u.Account == account);

            if (memberInfo == null)
            {
                var list = PikachuDataContext.BillFlows.Where(u =>
                                                              u.Enable && u.Group == group && u.Account == account);

                decimal amount = list.Where(u => u.Enable && u.BillType == Data.Pikachu.Menu.BillTypes.Sign)
                                 .Sum(u => u.ActualAmount)
                                 - list.Where(u => u.BillType == Data.Pikachu.Menu.BillTypes.Consume)
                                 .Sum(u => u.ActualAmount);

                memberInfo = new MemberInfo()
                {
                    Account = account,
                    Group   = group,
                    Amount  = amount,
                };

                PikachuDataContext.MemberInfos.Add(memberInfo);

                PikachuDataContext.SaveChanges();
            }

            return(memberInfo);
        }
Esempio n. 2
0
        public static void TestDb()
        {
            PikachuDataContext context = new PikachuDataContext();

            context.Database.CreateIfNotExists();

            var dbCommand = context.Database.Connection.CreateCommand();

            context.SaveChanges();
        }
Esempio n. 3
0
        public void RemoveGroupCopy(string fromGroup, string targetGroup, string dealPerson, out string msg)
        {
            var old = PikachuDataContext.GroupMsgCopys.FirstOrDefault(u => u.Person.Equals(dealPerson) && u.FromGroup.Equals(fromGroup) && u.TargetGroup.Equals(targetGroup));

            PikachuDataContext.Entry(old).State = System.Data.Entity.EntityState.Deleted;

            PikachuDataContext.SaveChanges();

            msg = "删除转载成功!";
        }
Esempio n. 4
0
        public void RemoveGroupAuth(string groupNo, out string msg)
        {
            var old = PikachuDataContext.GroupAuths.FirstOrDefault(u => u.GroupNo.Equals(groupNo));

            if (old != null)
            {
                old.Enable     = false;
                old.UpdateTime = DateTime.Now;
                PikachuDataContext.SaveChanges();
            }

            msg = "取消授权成功!";
        }
Esempio n. 5
0
        /// <summary>
        /// 移除配置
        /// </summary>
        /// <param name="key"></param>
        /// <param name="msg"></param>
        public void RemoveKey(string key, out string msg)
        {
            var search =
                PikachuDataContext.ConfigInfos.FirstOrDefault(u => u.Enable && u.Key.Equals(key));

            if (search != null)
            {
                search.Enable = false;
                PikachuDataContext.SaveChanges();
            }

            msg = "删除成功";
        }
Esempio n. 6
0
        public int ChangeAmount(string group, string account, decimal amount)
        {
            var memberInfo =
                PikachuDataContext.MemberInfos.FirstOrDefault(u =>
                                                              u.Enable && u.Group == group && u.Account == account);

            if (memberInfo != null)
            {
                memberInfo.Amount += amount;
                return(PikachuDataContext.SaveChanges());
            }

            return(0);
        }
Esempio n. 7
0
        /// <summary>
        /// 添加失败次数
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public int AddFailureCount(int id)
        {
            var info = PikachuDataContext.GroupActivities.FirstOrDefault(u => u.Id == id);

            if (info == null)
            {
                return(0);
            }

            info.FailureCount++;
            info.UpdateTime = DateTime.Now;

            return(PikachuDataContext.SaveChanges());
        }
Esempio n. 8
0
        public int AddBill(string group, string account, decimal amount, decimal actualAmount, BillTypes type, string desc)
        {
            PikachuDataContext.BillFlows.Add(new Data.Pikachu.Models.BillFlow()
            {
                Account      = account,
                Amount       = amount,
                ActualAmount = actualAmount,
                BillType     = type,
                Group        = group,
                Description  = desc,
                Enable       = true,
            });

            return(PikachuDataContext.SaveChanges());
        }
Esempio n. 9
0
        /// <summary>
        /// 开启活动并返回自增id
        /// </summary>
        /// <param name="group">群组</param>
        /// <param name="type">活动类型</param>
        /// <param name="endTime">结束时间(预计)</param>
        /// <returns></returns>
        public int OpenActivity(string group, ActivityTypes type, DateTime endTime)
        {
            var info = new Data.Pikachu.Models.GroupActivity()
            {
                ActivityStateType = ActivityStateTypes.Open,
                Group             = group,
                ActivityType      = type,
                PredictEndTime    = endTime,
            };

            PikachuDataContext.GroupActivities.Add(info);

            PikachuDataContext.SaveChanges();

            return(info.Id);
        }
Esempio n. 10
0
        /// <summary>
        /// 添加配置
        /// </summary>
        /// <param name="input"></param>
        /// <param name="msg"></param>
        public void AddInfo(string input, out string msg)
        {
            var info = input.Split('|');

            if (info.Length == 3)
            {
                if (!string.IsNullOrWhiteSpace(info[0]))
                {
                    var config = new ConfigInfo()
                    {
                        Key         = info[0].Trim(),
                        Value       = info[1],
                        Description = info[2],
                        Enable      = true
                    };

                    var old = PikachuDataContext.ConfigInfos.FirstOrDefault(u =>
                                                                            u.Enable && u.Key.Equals(config.Key, StringComparison.CurrentCultureIgnoreCase));

                    if (old != null)
                    {
                        old.Value      = config.Value;
                        old.UpdateTime = DateTime.Now;
                    }
                    else
                    {
                        config.UpdateTime = DateTime.Now;
                        PikachuDataContext.ConfigInfos.Add(config);
                    }

                    PikachuDataContext.SaveChanges();

                    msg = "   添加成功!";
                }
                else
                {
                    msg = "   配置key不能为空!";
                }
            }
            else
            {
                msg = "   输入格式有误!";
            }
        }
Esempio n. 11
0
        /// <summary>
        /// 关闭活动
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public int CloseActivity(int id, string description, out GroupActivity info)
        {
            info = PikachuDataContext.GroupActivities.FirstOrDefault(u => u.Id == id);

            if (info == null || info.ActivityStateType == ActivityStateTypes.Close)
            {
                return(0);
            }

            if (info.ActivityStateType == ActivityStateTypes.Close)
            {
                return(0);
            }

            info.ActivityStateType = ActivityStateTypes.Close;
            info.EndTime           = DateTime.Now;
            info.Description       = description;

            return(PikachuDataContext.SaveChanges());
        }
Esempio n. 12
0
        /// <summary>
        /// 获取成员信息
        /// </summary>
        /// <param name="group">群号</param>
        /// <param name="account">成员账号</param>
        /// <returns></returns>
        public async Task <MemberInfo> GetInfoAsync(string group, string account)
        {
            var memberInfo =
                await PikachuDataContext.MemberInfos.FirstOrDefaultAsync(u =>
                                                                         u.Enable && u.Group == group && u.Account == account);

            if (memberInfo == null)
            {
                var list = PikachuDataContext.BillFlows.Where(u =>
                                                              u.Enable && u.Group == group && u.Account == account);

                decimal amount = 0;

                if (await list.AnyAsync(u => u.Enable && u.BillType == BillTypes.Sign))
                {
                    amount += await list.Where(u => u.BillType == BillTypes.Sign)
                              .SumAsync(u => u.ActualAmount);
                }

                if (await list.AnyAsync(u => u.BillType == BillTypes.Consume))
                {
                    amount -= await list.Where(u => u.BillType == BillTypes.Consume)
                              .SumAsync(u => u.ActualAmount);
                }

                memberInfo = new MemberInfo()
                {
                    Account = account,
                    Group   = group,
                    Amount  = amount,
                };

                memberInfo.Enable = true;

                PikachuDataContext.MemberInfos.Add(memberInfo);

                PikachuDataContext.SaveChanges();
            }

            return(memberInfo);
        }
Esempio n. 13
0
        public void AddGroupCopy(string fromGroup, string targetGroup, string dealPerson, out string msg)
        {
            var old = PikachuDataContext.GroupMsgCopys.FirstOrDefault(u => u.Person.Equals(dealPerson) && u.FromGroup.Equals(fromGroup) && u.TargetGroup.Equals(targetGroup));

            if (old != null)
            {
                msg = "已存在转载设置";
            }
            else
            {
                PikachuDataContext.GroupMsgCopys.Add(new GroupMsgCopy()
                {
                    FromGroup   = fromGroup,
                    TargetGroup = targetGroup,
                    Person      = dealPerson
                });
                ;
            }

            PikachuDataContext.SaveChanges();

            msg = "添加转载设置成功!";
        }
Esempio n. 14
0
        /// <summary>
        /// 添加配置 [单值]
        /// </summary>
        /// <param name="group"></param>
        /// <param name="account"></param>
        /// <param name="type"></param>
        /// <returns></returns>
        public int AddSingleInfo(string group, string account, string info, GroupConfigTypes type)
        {
            var old = PikachuDataContext.GroupConfigs.FirstOrDefault(u =>
                                                                     u.Enable && u.GetGroupConfigType == type && u.Group.Equals(group) && u.Account.Equals(account));

            if (old != null)
            {
                old.Value      = info;
                old.UpdateTime = DateTime.Now;
            }
            else
            {
                PikachuDataContext.GroupConfigs.Add(new Data.Pikachu.Models.GroupConfig()
                {
                    Account            = account,
                    Group              = group,
                    Enable             = true,
                    Value              = info,
                    GetGroupConfigType = type,
                });
            }

            return(PikachuDataContext.SaveChanges());
        }
Esempio n. 15
0
        public void AddGroupAuth(string groupNo, out string msg)
        {
            var old = PikachuDataContext.GroupAuths.FirstOrDefault(u => u.GroupNo.Equals(groupNo));

            if (old != null)
            {
                old.Enable     = true;
                old.UpdateTime = DateTime.Now;
            }
            else
            {
                PikachuDataContext.GroupAuths.Add(new GroupAuth()
                {
                    GroupNo    = groupNo,
                    UpdateTime = DateTime.Now,
                    Enable     = true
                });
                ;
            }

            PikachuDataContext.SaveChanges();

            msg = "添加授权成功!";
        }