예제 #1
0
        /// <summary>
        /// mssql
        /// </summary>
        /// <param name="models"></param>
        /// <param name="_repository"></param>
        public static async void BulkInsertAsync(IEnumerable <TEntity> models, IRepository <TEntity> _repository)
        {
            if (_repository == null)
            {
                throw new ArgumentNullException(nameof(_repository));
            }

            try
            {
                await Task.Run(() => _repository.BulkInsert(models));
            }
            catch (Exception e)   //异步吞掉异常,不然进程奔溃
            {
                var log = new SysErrorLog
                {
                    ErrReferrer = "",
                    ErrSource   = e.Source,
                    ErrTime     = DateTime.Now
                };
                log.ErrTimestr = log.ErrTime.ToString("yyyyMMdd");
                log.ErrStack   = e.StackTrace;
                log.ErrType    = SysErrorType.bulkInsert.ToString();
                log.ErrUrl     = "/recordmanage/RecordManage/add_batch";
                log.ErrIp      = "";
                log.ErrMessage = e.Message;

                using (SKContext context = new SKContext())
                {
                    context.SysErrorLogs.Add(log);
                    context.SaveChanges();
                }
            }
        }
예제 #2
0
        public Resp_RightOperator_Index Index(Req_Index request)
        {
            var response = new Resp_RightOperator_Index();
            var limits   = _sysRightRepository.GetRightByUserWithModule(request.userId, request.moduleId).ConvertoDto <SysUserRightView, SysModuleOperateIndexDTO>().ToList();

            if (!limits.IsNullOrEmpty() && limits.Find(s => s.IsValid == 1).IsNotNull())
            {
                response.allowVisit      = true;
                response.moduleOperaties = limits.OrderByDescending(t => t.IsValid).GroupBy(t => new { t.KeyCode, t.KeyName }).Select(s => new SysModuleOperateIndexDTO
                {
                    KeyCode = s.Key.KeyCode,
                    KeyName = s.Key.KeyName,
                    IsValid = s.Sum(x => x.IsValid),
                }).ToList();
                using (var context = new SKContext())
                {
                    response.sysRoles   = context.SysRoles.ToList().ConvertoDto <SysRole, SysRoleDTO>().ToList();
                    response.sysModules = context.SysModules.Where(t => t.SuperSysModule == null).ToList().ConvertoDto <SysModule, SysModuleDTO>().ToList();
                }
            }
            else
            {
                _sysRightRepository.UnitOfWork.Commite();
                response.allowVisit = false;
                response.message    = "无访问权限,请联系管理员";
            }

            return(response);
        }
예제 #3
0
 public void Insert(SysErrorLog log)
 {
     using (SKContext db = new SKContext())
     {
         db.SysErrorLogs.Add(log);
         db.SaveChanges();
     }
 }
예제 #4
0
        public Resp_Login_Index Index(Req_Index request)
        {
            var response = new Resp_Login_Index();

            response.sysmodules = _sysRightService.GetRightModuleByUser(request.userId);
            using (var context = new SKContext())
            {
                var sysUser = context.SysUsers.SingleOrDefault(t => t.ID == request.userId);
                response.syschannels = sysUser.SysChannels.ConvertoDto <SysChannel, SysChannelDTO>().ToList();
            }
            return(response);
        }
예제 #5
0
        public static List <SysModule> GetSysModules()
        {
            var entities = CacheHelper.Get <List <SysModule> >(ContextKeys.CACHE_SYSMODULES);

            if (entities == null || entities.Count == 0)
            {
                using (SKContext context = new SKContext())
                {
                    entities = context.SysModules.ToList();
                    CacheHelper.Insert(ContextKeys.CACHE_SYSMODULES, entities, 30);
                }
            }
            return(entities);
        }
예제 #6
0
        public async Task <int> CaptureHistoryHandler()
        {
            using (var context = new SKContext())
            {
                try
                {
                    ((IQueryableUnitOfWork)context).ExecuteCommand("Delete from  capture where CreateTime< date_sub(now(),interval 180 day);");
                }
                catch (Exception ex)
                {
                }
            }

            return(await Task.FromResult(1));
        }
예제 #7
0
        /// <summary>
        /// 记录对接日志
        /// </summary>
        /// <param name="dock_url"></param>
        /// <param name="warnings"></param>
        /// <param name="message"></param>
        private void CreateLogError(string dock_url, string warnings, string message)
        {
            var log = new SysErrorLog
            {
                ErrReferrer = dock_url,
                ErrSource   = warnings,
                ErrTime     = DateTime.Now,
                ErrTimestr  = DateTime.Now.ToString("yyyyMMdd"),
                ErrStack    = "第三方对接",
                ErrType     = SysErrorType.docking.ToString(),
                ErrUrl      = dock_url,
                ErrIp       = "",
                ErrMessage  = message
            };

            using (SKContext context = new SKContext())
            {
                context.SysErrorLogs.Add(log);
                context.SaveChanges();
            }
        }
예제 #8
0
        public Resp_Binary Assign_Channel(SysUser_Assign_Channels request)
        {
            using (var context = new SKContext())
            {
                var user = context.SysUsers.Where(t => t.ID == request.UserId).FirstOrDefault();
                if (user.IsNull())
                {
                    return new Resp_Binary {
                               message = "用户不存在"
                    }
                }
                ;
                user.SysChannels.Clear();
                if (request.ChannelIds.IsNotNull() && request.ChannelIds.Count > 0)
                {
                    MemberInfo member1 = typeof(SysChannel).GetProperty("ID");

                    ParameterExpression param     = Expression.Parameter(typeof(SysChannel), "o");
                    MemberExpression    memberex1 = Expression.MakeMemberAccess(param, member1);

                    var ss = Expression.Equal(Expression.Constant(1), Expression.Constant(2));

                    foreach (var temp in request.ChannelIds)
                    {
                        var right = Expression.Equal(memberex1, Expression.Constant(temp));
                        ss = Expression.OrElse(ss, right);
                    }

                    var sysChannels = context.SysChannels.Where(Expression.Lambda <Func <SysChannel, bool> >(ss, param)).ToList();

                    user.SysChannels = sysChannels;
                }
                if (context.SaveChanges() > 0)
                {
                    return(Resp_Binary.Modify_Sucess);
                }
            }
            return(Resp_Binary.Modify_Failed);
        }
예제 #9
0
 public SysChannelRepository(SKContext unitOfWork) : base(unitOfWork)
 {
 }
예제 #10
0
        public Resp_Binary UpdateRight(SysRightOperate_Update request)
        {
            if (request.IsNull() && request.ModuleOperateIds.Count < 1)
            {
                return new Resp_Binary {
                           message = "请选择要操作的记录"
                }
            }
            ;

            if (request.ModuleId < 1)
            {
                return new Resp_Binary {
                           message = "请选择一个模块"
                }
            }
            ;

            if (request.RoleId < 1)
            {
                return new Resp_Binary {
                           message = "请选择一个角色"
                }
            }
            ;


            var sysRight = _sysRightRepository.GetByWhere(r => r.SysRoleId == request.RoleId && r.SysModuleId == request.ModuleId).FirstOrDefault();

            if (sysRight.IsNull())
            {
                if (request.ModuleOperateIds.Exists(t => t.IsRightValid == 1))
                {
                    sysRight = new SysRight {
                        SysModuleId = request.ModuleId, SysRoleId = request.RoleId, Rightflag = 1
                    }
                }
                ;
                else
                {
                    sysRight = new SysRight {
                        SysModuleId = request.ModuleId, SysRoleId = request.RoleId, Rightflag = 0
                    }
                };

                _sysRightRepository.Insert(sysRight);
            }
            else
            {
                using (var context = new SKContext())
                {
                    var delsysRight = context.SysRights.Single(t => t.ID == sysRight.ID);
                    delsysRight.SysRightOperates.Clear();
                    var temp = context.SysRightOperates.Local.Where(p => p.SysRight == null).ToList();
                    temp.ForEach(r => context.SysRightOperates.Remove(r));
                    var s = context.SaveChanges();
                }
            }


            request.ModuleOperateIds.ForEach(t =>
            {
                var sysRightOperate = new SysRightOperate {
                    RightId = sysRight.ID, SysModuleOperateId = t.ID, IsValid = t.IsRightValid
                };
                sysRight.SysRightOperates.Add(sysRightOperate);
            });

            var count = _sysRightRepository.UnitOfWork.Commite();

            if (count > 0)
            {
                var sysRightAfter = _sysRightRepository.GetByWhere(r => r.SysRoleId == request.RoleId && r.SysModuleId == request.ModuleId).FirstOrDefault();
                if (sysRightAfter.SysRightOperates.FirstOrDefault(ss => ss.IsValid == 1).IsNull())       //更新用户权限
                {
                    sysRightAfter.Rightflag = 0;
                    _sysRightRepository.Update(sysRightAfter);
                }
                else
                {
                    sysRightAfter.Rightflag = 1;
                    _sysRightRepository.Update(sysRightAfter);
                }

                var module = _sysModuleRepository.GetByWhere(r => r.ID == request.ModuleId).FirstOrDefault();
                UpateParentModuleRight(module);
                void UpateParentModuleRight(SysModule source)
                {
                    if (source.IsNotNull())
                    {
                        var parent = source.SuperSysModule;
                        if (parent.IsNotNull())
                        {
                            var sysSuperRight   = _sysRightRepository.GetByWhere(r => r.SysRoleId == request.RoleId && r.SysModuleId == parent.ID).FirstOrDefault();
                            var sysSourceRights = _sysRightRepository.GetByWhere(r => r.SysRoleId == request.RoleId && r.Rightflag == 1);
                            var _Rightflag      = 0;
                            if (!sysSourceRights.IsNullOrEmpty())
                            {
                                _Rightflag = 1;
                            }
                            if (sysSuperRight.IsNull())
                            {
                                sysRight = new SysRight {
                                    SysModuleId = parent.ID, SysRoleId = request.RoleId, Rightflag = _Rightflag
                                };
                                _sysRightRepository.Insert(sysRight);
                            }
                            else
                            {
                                sysSuperRight.Rightflag = _Rightflag;
                                _sysRightRepository.Update(sysSuperRight);
                            }
                            UpateParentModuleRight(parent);
                        }
                    }
                }

                _sysRightRepository.UnitOfWork.Commite();
                return(Resp_Binary.Modify_Sucess);
            }
            return(Resp_Binary.Modify_Failed);
        }
예제 #11
0
 public CaptureBackupRepository(SKContext unitOfWork) : base(unitOfWork)
 {
 }
예제 #12
0
        public SysUserRepository(SKContext context) : base(context)
        {

        }
예제 #13
0
        public async Task <int> SetDataUnValidByValidTime()
        {
            int num = 0;

            try
            {
                logger.Info("定时设置数据无效运行" + DateTime.Now);
                using (var context = new SKContext())
                {
                    num += ((IQueryableUnitOfWork)context).ExecuteCommand($"update layout set IsValid=0 where IsValid=1 and ValideTime<now() and ValideTime>'1977-01-01 00:00:00';");
                    num += ((IQueryableUnitOfWork)context).ExecuteCommand($"update recordmanager set IsValid=0 where IsValid=1 and ValideTime<now() and ValideTime>'1977-01-01 00:00:00';");

                    foreach (var item in LayoutRandomSetLock.layoutRs.Values)
                    {
                        if (item.IsOpen && !string.IsNullOrEmpty(item.Channel))
                        {
                            var flags = true;
                            var i     = 0;
                            while (flags)
                            {
                                i++;
                                var per  = (int)Math.Ceiling(100 / item.RPercent);
                                var caps = context.Captures.Where(t => t.Channel == item.Channel && t.CreateTime > DateTime.Today);

                                if (item.Pass < 2)
                                {
                                    caps = caps.Where(t => t.Pass == item.Pass);
                                }

                                caps = caps.OrderBy(t => t.ID).Skip((per - 1) * i).Take(1);

                                var cap = caps.FirstOrDefault();
                                if (cap.IsNotNull())
                                {
                                    var layout = context.Layouts.FirstOrDefault(t => t.CarNumber == cap.CarNumber && t.IsValid == 1 && t.TriggerType == item.Pass);
                                    if (layout.IsNull())
                                    {
                                        context.Layouts.Add(new Domain.Layout
                                        {
                                            CarNumber   = cap.CarNumber,
                                            SysUserId   = 1,
                                            Description = "随机取样",
                                            CreateTime  = DateTime.Now,
                                            TriggerType = item.Pass,
                                            IsValid     = 1,
                                            Degree      = item.ValidCount,
                                            ValideTime  = DateTime.Now.AddDays(item.ValidDays),
                                            Channel     = cap.Channel
                                        });
                                    }
                                }
                                else
                                {
                                    flags = false;
                                }
                            }
                            context.SaveChanges();
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                logger.Info(ex.Message.ToString());
                num = -1;
            }

            return(await Task.FromResult(num));
        }
예제 #14
0
 public CarTypeRepository(SKContext unitOfWork) : base(unitOfWork)
 {
 }
예제 #15
0
 public AccountRepository(SKContext context) => _unitOfWork = context;
예제 #16
0
        public Resp_Binary_Member <AlarmDTO> Add_One(CaptureDTO model)
        {
            var alert   = false;
            var capture = model.GetPrototype <CaptureDTO, Capture>();

            if (capture.Pass == 1)  //without代表该车出场
            {
                capture.WithOut = 0;
            }
            if (capture.Pass == 0)
            {
                capture.WithOut = 1;
            }


            var result = false;
            var guid   = Guid.NewGuid().ToString();

            long layoutId = 0;

            using (var context = new SKContext())
            {
                using (var tran = new TransactionScope())
                {
                    var layout = context.Layouts.Where(d => d.CarNumber == model.CarNumber && d.IsValid == 1 && d.Channel == model.Channel).FirstOrDefault();
                    if (layout.IsNotNull())
                    {
                        if (layout.TriggerType == 2 || layout.TriggerType == model.Pass.ToInt()) //进出场控制
                        {
                            alert = true;
                            var lettercode = GetRandomNumberString(ConfigPara.LetterCount);

                            var alarm = new Alarm
                            {
                                CarNumber  = model.CarNumber,
                                IsDeal     = 0,
                                GUID       = guid,
                                AlarmTime  = DateTime.Now,
                                Channel    = model.Channel,
                                LetterCode = AESEncryptHelper.Encrypt(lettercode)
                            };

                            _messageRepository.SendMessage(capture.ToJson(), capture.Channel);
                            capture.Alarms.Add(alarm);

                            layoutId = layout.ID;
                            //if (layout.Degree > 0)
                            //    --layout.Degree;
                            //if (layout.Degree == 0)
                            //    layout.IsValid = 0;
                        }
                    }

                    var captureback = model.GetPrototype <CaptureDTO, CaptureBackup>();
                    //当车出场时,将该车的进场记录的是否出场改为已出场
                    if (model.Pass.ToInt() == 0)
                    {
                        var in_captures = context.Captures.Where(t => t.CarNumber == model.CarNumber && t.Pass == 1 && t.WithOut == 0);
                        foreach (var item in in_captures)
                        {
                            item.WithOut = 1;
                        }
                    }

                    var recordM = context.RecordManagers.Where(t => t.CarNumber == model.CarNumber).OrderByDescending(t => t.ID).FirstOrDefault();
                    if (recordM.IsNotNull())
                    {
                        capture.BeiAn     = recordM.Type;
                        captureback.BeiAn = recordM.Type;
                        if (model.Pass.ToInt() == 1) //进场修改备案最后一次进场时间
                        {
                            recordM.LastInTime = model.CreateTime.ToDateTime();
                        }
                        else if (model.Pass.ToInt() == 0) //出场修改备案最近一次出场时间
                        {
                            recordM.LastOutTime = model.CreateTime.ToDateTime();
                        }
                    }
                    else
                    {
                        capture.BeiAn     = 2;
                        captureback.BeiAn = 2;
                    }
                    context.Captures.Add(capture);

                    context.CaptureBackups.Add(captureback);

                    context.SaveChanges();
                    tran.Complete();
                    result = true;
                }
            }



            if (result)
            {
                if (alert)
                {
                    //    var req_dock = new Req_Warning
                    //    {
                    //        WARNINGDATE = DateTime.Now.ToString("yyyy-MM-dd hh: mm:ss"),
                    //        CARNO = model.CarNumber,
                    //        CARTYPE = model.CarType,
                    //        inout = model.Pass.Equals("1") ? "进" : "出",
                    //        bayonet = model.Channel,
                    //        Remark = model.Remark

                    //    };
                    //    Docking(req_dock); //报警通知第三方

                    var alam = _alarmRepository.GetByWhere(t => t.GUID == guid).FirstOrDefault();
                    var dto  = alam.ConvertoDto <Alarm, AlarmDTO>();
                    dto.LetterCode = alam.LetterCode;
                    return(new Resp_Binary_Member <AlarmDTO> {
                        message = "该车辆已中控报警!", flag = 2, LetterCode = dto.LetterCode, entity = dto, LayoutId = layoutId
                    });
                }
                return(new Resp_Binary_Member <AlarmDTO> {
                    message = "添加成功", flag = 1
                });
            }

            return(new Resp_Binary_Member <AlarmDTO> {
                message = "添加失败", flag = 0
            });
        }