Esempio n. 1
0
        public static MessageRecorder <bool> Delete <TModel>(long[] ids)
            where TModel : class
        {
            var r = new MessageRecorder <bool>();

            if (ids.IsNullOrEmpty())
            {
                return(r.Error("ids没有指定值"));
            }

            Register <TModel>();

            using (var conn = ConnectionManager.Open())
            {
                var trans = conn.BeginTransaction();

                var models = conn.Query <TModel>(
                    $"SELECT * FROM `{NamingHelper.MapClassToTable(typeof (TModel).FullName)}` WHERE `id` in ({string.Join(",", ids)})");
                if (models.IsNullOrEmpty())
                {
                    return(r.SetValue(true).Info("已被删除"));
                }

                trans.Commit();
                return(r.SetValue(true).Info("删除成功"));
            }
        }
Esempio n. 2
0
        /// <summary>
        /// 根据经纪人编号查询所属公司信息
        /// </summary>
        /// <returns></returns>
        public MessageRecorder <BrokerageFirm> GetByNo(string brokerNo)
        {
            var r = new MessageRecorder <BrokerageFirm>();

            if (string.IsNullOrEmpty(brokerNo))
            {
                return(r.Error("经纪人编号无效!"));
            }
            using (var conn = ConnectionManager.Open())
            {
                var brokerQuery = new Criteria <Broker>()
                                  .Where(m => m.No, Op.Eq, brokerNo)
                                  .Desc(m => m.No);
                var broker = conn.Get(brokerQuery);
                if (broker == null)
                {
                    return(r.Error("程序错误,请重新登录后重试!"));
                }
                var firmQuery = new Criteria <BrokerageFirm>()
                                .Where(m => m.FirmNo, Op.Eq, broker.FirmNo)
                                .Desc(m => m.FirmNo);
                var firm = conn.Get(firmQuery);
                if (firm == null)
                {
                    r.SetValue(new BrokerageFirm());
                }
                r.SetValue(firm);
                return(r);
            }
        }
Esempio n. 3
0
        public MessageRecorder <bool> Delete(long[] ids)
        {
            var mr = new MessageRecorder <bool>();

            using (var conn = ConnectionManager.Open())
            {
                var trans = conn.BeginTransaction();

                var query = new Criteria <Account>()
                            .Where(m => m.Id, Op.In, ids)
                            .And("`no` NOT IN (SELECT `AccountNo` FROM `base_account_role_ref` WHERE `RoleNo` NOT IN('BranchAdmin', 'BranchStaff'))");
                var models = conn.Query(query);

                var isOk = models.All(m => conn.Delete(m, trans));
                if (isOk)
                {
                    trans.Commit();

                    foreach (var model in models)
                    {
                        mr.Append(AccessoryService.DeleteObject(model.Photo));
                    }
                    mr.SetValue(!mr.HasError);
                }
                else
                {
                    trans.Rollback();
                }
                return(mr);
            }
        }
Esempio n. 4
0
        public override MessageRecorder <bool> Create(Customer model)
        {
            var r = new MessageRecorder <bool>();

            model.CreatedAt = Now;
            model.CreatedBy = AccountNo;
            using (var conn = ConnectionManager.Open())
            {
                var trans = conn.BeginTransaction();
                var query = new Criteria <Customer>()
                            .Where(m => m.No, Op.Eq, model.No)
                            .Or(m => m.Name, Op.Eq, model.Name)
                            .Desc(m => m.No);
                if (conn.Exists(query))
                {
                    trans.Rollback();
                    return(r.Error("保存失败"));
                }
                var effectedCount = conn.Insert(model, trans);
                if (effectedCount == -1)
                {
                    trans.Rollback();
                    return(r.Error("保存失败"));
                }
                //var r2 = conn.Insert(model.Customers);
                //var count = model.Customers.Count;
                //if (r2 != count)
                //{
                //    trans.Rollback();
                //    return r.Error("保存失败");
                //}
                trans.Commit();
            }
            return(r.SetValue(!r.HasError));
        }
Esempio n. 5
0
        /// <summary>
        /// 根据经纪人编号获取所有楼盘信息
        /// </summary>
        /// <param name="brokerNo">经纪人编号</param>
        /// <returns></returns>
        public MessageRecorder <IList <Project> > GetHouseByBrokerNo(string brokerNo)
        {
            var r = new MessageRecorder <IList <Project> >()
            {
                Value = new List <Project>()
            };

            if (string.IsNullOrEmpty(brokerNo))
            {
                return(r.Error("请指定经纪人"));
            }

            using (var conn = ConnectionManager.Open())
            {
                var refQuery = new Criteria <HouseBrokerRef>()
                               .Where(m => m.BrokerNo, Op.Eq, brokerNo)
                               .Asc(m => m.CreatedAt);
                var proNos = conn.Query(refQuery).Select(m => m.ProjectNo).ToList();
                if (proNos.IsNullOrEmpty())
                {
                    return(r);
                }

                var projectList = new Criteria <Project>()
                                  .And(m => m.No, Op.In, proNos);
                var list = conn.Query(projectList);
                return(r.SetValue(list));
            }
        }
Esempio n. 6
0
        /// <summary>
        /// 添加
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public override MessageRecorder <bool> Create(HouseBrokerRef model)
        {
            var r = new MessageRecorder <bool>();

            model.CreatedAt = Now;
            model.CreatedBy = AccountNo;
            using (var conn = ConnectionManager.Open())
            {
                var trans = conn.BeginTransaction();
                var query = new Criteria <HouseBrokerRef>()
                            .Where(m => m.BrokerNo, Op.Eq, model.BrokerNo)
                            .And(m => m.ProjectNo, Op.Eq, model.ProjectNo);
                if (conn.Exists(query))
                {
                    trans.Rollback();
                    return(r.Error("保存失败"));
                }
                var effectedCount = conn.Insert(model, trans);
                if (effectedCount == -1)
                {
                    trans.Rollback();
                    return(r.Error("保存失败"));
                }
                trans.Commit();
            }
            return(r.SetValue(!r.HasError));
        }
Esempio n. 7
0
        public override MessageRecorder <bool> Update(Branch model)
        {
            var r = new MessageRecorder <bool>();

            model.UpdatedAt = Now;
            model.UpdatedBy = AccountNo;

            using (var conn = ConnectionManager.Open())
            {
                var trans = conn.BeginTransaction();

                var query = new Criteria <Branch>()
                            .Where(m => m.No, Op.Eq, model.No)
                            .Or(m => m.Name, Op.Eq, model.Name)
                            .And(m => m.Id, Op.NotEq, model.Id);
                if (conn.Exists(query))
                {
                    trans.Rollback();
                    return(r.Error("编号或者名称重复"));
                }

                var effectedCount = conn.Update(model, trans);
                if (!effectedCount)
                {
                    trans.Rollback();
                    return(r.Error("保存失败"));
                }

                trans.Commit();
                return(r.SetValue(true));
            }
        }
Esempio n. 8
0
        public override MessageRecorder <bool> Create(Developer model)
        {
            var r = new MessageRecorder <bool>();

            model.CreatedAt = Now;
            model.CreatedBy = AccountNo;

            using (var conn = ConnectionManager.Open())
            {
                var trans = conn.BeginTransaction();

                var query = new Criteria <Developer>()
                            .Where(m => m.No, Op.Eq, model.No)
                            .Or(m => m.Name, Op.Eq, model.Name);
                if (conn.Exists(query))
                {
                    trans.Rollback();
                    return(r.Error("编号或者名称重复"));
                }

                var effectedCount = conn.Insert(model, trans);
                if (effectedCount == -1)
                {
                    trans.Rollback();
                    return(r.Error("保存失败"));
                }

                trans.Commit();
                return(r.SetValue(true));
            }
        }
Esempio n. 9
0
        public MessageRecorder <Account> GetAccountByMobileNo(string mobileNo)
        {
            var r = new MessageRecorder <Account>();

            if (string.IsNullOrEmpty(mobileNo))
            {
                return(r.Error("请输入手机号码"));
            }
            using (var conn = ConnectionManager.Open())
            {
                var query = new Criteria <Account>()
                            .Or(m => m.Phone, Op.Eq, mobileNo)
                            .Or(m => m.Phone2, Op.Eq, mobileNo)
                            .Or(m => m.Phone3, Op.Eq, mobileNo)
                            .Limit(1);
                var model = conn.Query(query).FirstOrDefault();
                if (model != null)
                {
                    var roleQuery = new Criteria <AccountRoleRef>()
                                    .Where(m => m.AccountNo, Op.Eq, model.No);
                    model.RoleRefs = conn.Query(roleQuery);
                }
                return(r.SetValue(model));
            }
        }
Esempio n. 10
0
        /// <summary>
        /// 添加
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public override MessageRecorder <bool> Create(DevRoom model)
        {
            var r = new MessageRecorder <bool>();

            model.CreatedAt = Now;
            model.CreatedBy = AccountNo;
            using (var conn = ConnectionManager.Open())
            {
                var trans = conn.BeginTransaction();
                var query = new Criteria <DevRoom>()
                            .Where(m => m.No, Op.Eq, model.No)
                            .Or(m => m.Name, Op.Eq, model.Name)
                            .Desc(m => m.No);
                if (conn.Exists(query))
                {
                    trans.Rollback();
                    return(r.Error("保存失败"));
                }
                var effectedCount = conn.Insert(model, trans);
                if (effectedCount == -1)
                {
                    trans.Rollback();
                    return(r.Error("保存失败"));
                }
                trans.Commit();
            }
            r.Append(AccessoryService.ClearExpiration(model.Pic));
            return(r.SetValue(!r.HasError));
        }
Esempio n. 11
0
        /// <summary>
        /// 切换经纪人收藏楼盘状态(收藏、解除)
        /// </summary>
        /// <returns>返回切换后的状态(True:代表收藏;False:代表解除)</returns>
        public MessageRecorder <bool> ChangeStatus(string brokerNo, string projectNo)
        {
            var r = new MessageRecorder <bool>();

            if (brokerNo.IsNullOrEmpty())
            {
                return(r.Error("经纪人编号无效"));
            }
            if (projectNo.IsNullOrEmpty())
            {
                return(r.Error("楼盘编号无效"));
            }
            //根据经纪人编号获取所有楼盘信息
            var house    = GetHouseByBrokerNo(brokerNo).Value;
            var yesHouse = house.Where(m => m.No.Equals(projectNo)).ToList();
            var model    = new HouseBrokerRef
            {
                ProjectNo = projectNo,
                BrokerNo  = brokerNo,
                CreatedAt = DateTime.Now,
                CreatedBy = "root"
            };

            if (!yesHouse.Any())
            {
                if (Create(model).HasError)
                {
                    return(r.Error("收藏失败!"));
                }
                r.SetValue(true);
            }
            else
            {
                var refQuery = new Criteria <HouseBrokerRef>()
                               .Where(m => m.ProjectNo, Op.Eq, projectNo)
                               .And(m => m.BrokerNo, Op.Eq, brokerNo)
                               .Asc(m => m.CreatedAt);
                var refB = ConnectionManager.Open().Query(refQuery).FirstOrDefault();
                if (Delete(refB).HasError)
                {
                    return(r.Error("解除收藏失败!"));
                }
                r.SetValue(false);
            }
            return(r);
        }
Esempio n. 12
0
        public IHttpActionResult GetFirmAll()
        {
            var r       = new MessageRecorder <IList <BrokerageFirm> >();
            var u       = Request.GetQueryString("u");
            var service = new BrokerageFirmService(u);

            r.SetValue(service.GetAll());
            return(Ok(r));
        }
Esempio n. 13
0
        /// <summary>
        /// 修改
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public override MessageRecorder <bool> Update(Project model)
        {
            var r = new MessageRecorder <bool>();

            model.CreatedAt = Now;
            model.CreatedBy = AccountNo;
            string oldKey;

            using (var conn = ConnectionManager.Open())
            {
                var trans = conn.BeginTransaction();
                var query = new Criteria <Project>()
                            .Where(m => m.No, Op.Eq, model.No)
                            .Or(m => m.Name, Op.Eq, model.Name)
                            .And(m => m.Id, Op.NotEq, model.Id);
                if (conn.Exists(query))
                {
                    trans.Rollback();
                    return(r.Error("编号或者名称重复"));
                }
                var obj = new Criteria <Project>()
                          .Where(m => m.Id, Op.Eq, model.Id)
                          .Select(m => m.AddrPic);
                oldKey = conn.ExecuteScalarEx <string>(obj.ToSelectSql());

                var effectedCount = conn.Update(model, trans);
                if (!effectedCount)
                {
                    trans.Rollback();
                    return(r.Error("保存失败"));
                }

                foreach (var projectInfo in model.ProjectInfos)
                {
                    projectInfo.UpdatedAt = Now;
                    projectInfo.UpdatedBy = AccountNo;
                    projectInfo.DpNo      = model.No;
                }


                var effectedCount2 = conn.Update(model.ProjectInfos, trans);
                if (!effectedCount2)
                {
                    trans.Rollback();
                    return(r.Error("保存失败"));
                }

                trans.Commit();
            }
            if (!Equals(oldKey, model.AddrPic))
            {
                r.Append(AccessoryService.DeleteObject(oldKey));
                r.Append(AccessoryService.ClearExpiration(model.AddrPic));
            }
            return(r.SetValue(!r.HasError));
        }
Esempio n. 14
0
        public virtual MessageRecorder <bool> Create(TModel model)
        {
            var r = new MessageRecorder <bool>();

            using (var conn = ConnectionManager.Open())
            {
                var effectedCount = conn.Insert(model);
                return(r.SetValue(effectedCount > -1));
            }
        }
Esempio n. 15
0
        /// <summary>
        /// 删除账号
        /// </summary>
        /// <param name="no"></param>
        /// <param name="projectNo"></param>
        /// <returns></returns>
        public MessageRecorder <bool> Remove(string no, string projectNo)
        {
            var mr = new MessageRecorder <bool>();

            if (string.IsNullOrEmpty(no))
            {
                return(mr.Error("请指定账号"));
            }
            if (string.IsNullOrEmpty(projectNo))
            {
                return(mr.Error("请指定楼盘编号号"));
            }

            using (var conn = ConnectionManager.Open())
            {
                var trans = conn.BeginTransaction();

                var accountQuery = new Criteria <PropertyAdvisor>()
                                   .Where(m => m.No, Op.Eq, no)
                                   .And(m => m.ProjectNo, Op.Eq, projectNo);
                var account = conn.Get(accountQuery);

                if (account != null)
                {
                    var effectedCount1 = conn.Delete(account, trans);
                    if (!effectedCount1)
                    {
                        trans.Rollback();
                        return(mr.Error("删除失败"));
                    }
                }

                var query = new Criteria <PropertyAdvisor>()
                            .Where(m => m.No, Op.Eq, no)
                            .Desc(m => m.No)
                            .Limit(1);
                if (!conn.Exists(query))
                {
                    var q1 = new Criteria <AccountRoleRef>()
                             .Where(m => m.AccountNo, Op.Eq, no)
                             .And(m => m.BranchNo, Op.Eq, "420100")
                             .And(m => m.RoleNo, Op.Eq, "PropertyStaff");
                    var r2 = conn.Execute(q1.ToDeleteSql(), null, trans);
                    if (r2 == -1)
                    {
                        trans.Rollback();
                        return(mr.Error("账户已经存在,不能重复创建"));
                    }
                }

                trans.Commit();

                return(mr.SetValue(true));
            }
        }
Esempio n. 16
0
        /// <summary>
        /// 获取所有经纪人与房源关系信息
        /// </summary>
        /// <returns></returns>
        public MessageRecorder <IList <HouseBrokerRef> > GetAllHouse()
        {
            var r          = new MessageRecorder <IList <HouseBrokerRef> >();
            var projectAll = GetAll();

            if (!projectAll.Any())
            {
                return(r.Error("没有任何房源!"));
            }
            return(r.SetValue(projectAll));
        }
Esempio n. 17
0
        public MessageRecorder <IList <Customer> > GetAllCustomer()
        {
            var r           = new MessageRecorder <IList <Customer> >();
            var customerAll = GetAll();

            if (!customerAll.Any())
            {
                return(r.Error("没有客户信息"));
            }
            return(r.SetValue(customerAll));
        }
Esempio n. 18
0
        /// <summary>
        /// 检查账户是否存在
        /// </summary>
        /// <param name="username"></param>
        /// <returns></returns>
        public MessageRecorder <bool> IsExists(string username)
        {
            var r = new MessageRecorder <bool>();

            if (string.IsNullOrEmpty(username))
            {
                return(r.Error("请输入账户名"));
            }
            var account = GetAll().FirstOrDefault(m => m.ValidNos.Contains(username));

            return(r.SetValue(account != null));
        }
Esempio n. 19
0
        public virtual MessageRecorder <bool> Delete(params TModel[] models)
        {
            var r = new MessageRecorder <bool>();

            if (models.IsNullOrEmpty())
            {
                return(r.SetValue(true));
            }

            using (var conn = ConnectionManager.Open())
            {
                var trans = conn.BeginTransaction();
                var isOk  = models.All(m => conn.Delete(m, trans));
                if (isOk)
                {
                    trans.Commit();
                    return(r.SetValue(true));
                }
                trans.Rollback();
                return(r);
            }
        }
Esempio n. 20
0
        public IHttpActionResult GetHouseById(string id)
        {
            var mr = new MessageRecorder <Project>();

            if (id.IsNullOrEmpty())
            {
                return(Ok(mr.Error("楼盘编号无效")));
            }

            var service = new ProjectService();
            var r       = service.GetByNo(id);

            return(Ok(mr.SetValue(r)));
        }
Esempio n. 21
0
        public static MessageRecorder <TModel> Load <TModel>(long id)
            where TModel : class
        {
            var r = new MessageRecorder <TModel>();

            Register <TModel>();

            using (var conn = ConnectionManager.Open())
            {
                var model = conn.Get <TModel>(id);
                //var model = conn.Query<TModel>(
                //    $"SELECT * FROM `{NamingHelper.MapClassToTable(typeof(TModel).FullName)}` WHERE `id` = {id}")
                //    .FirstOrDefault();
                return(r.SetValue(model));
            }
        }
Esempio n. 22
0
        /// <summary>
        /// 代码验证
        /// </summary>
        /// <param name="phoneNo">手机号码</param>
        /// <param name="uuid">业务代码</param>
        /// <param name="code">验证码</param>
        /// <returns></returns>
        public MessageRecorder <bool> AuthCode(string phoneNo, string uuid, string code)
        {
            var mr = new MessageRecorder <bool>();

            using (var conn = ConnectionManager.Open())
            {
                var trans = conn.BeginTransaction();
                var query = new Criteria <VerificationCode>()
                            .Where(m => m.Uuid, Op.Eq, uuid);
                var model = conn.Get(query, trans);
                if (model == null)
                {
                    return(mr.Error("业务代码无效"));
                }

                if (model.VerifyAt.HasValue)
                {
                    return(mr.Error("业务代码已失效"));
                }

                if (!Equals(model.PhoneNo, phoneNo))
                {
                    return(mr.Error("手机号码不匹配"));
                }
                if (!Equals(model.Code, code))
                {
                    return(mr.Error("验证码不匹配"));
                }


                model.VerifyAt = DateTime.Now;

                if (!conn.Update(model, trans))
                {
                    trans.Rollback();
                    return(mr.Error($"记录 {model.Uuid} 验证时间失败"));
                }

                trans.Commit();
            }
            return(mr.SetValue(true));
        }
Esempio n. 23
0
        /// <summary>
        /// 修改密码
        /// </summary>
        /// <param name="username"></param>
        /// <param name="password"></param>
        /// <returns></returns>
        public MessageRecorder <bool> UpdatePassword(string username, string password)
        {
            var r = new MessageRecorder <bool>();

            if (string.IsNullOrEmpty(username))
            {
                return(r.Error("请设置用户名"));
            }
            if (string.IsNullOrEmpty(password))
            {
                return(r.Error("请设置密码"));
            }

            using (var conn = ConnectionManager.Open())
            {
                var trans = conn.BeginTransaction();
                var query = new Criteria <Account>()
                            .Or(m => m.No, Op.Eq, username)
                            .Or(m => m.Email, Op.Eq, username)
                            .Or(m => m.Phone, Op.Eq, username)
                            .Or(m => m.Phone2, Op.Eq, username)
                            .Or(m => m.Phone3, Op.Eq, username);
                var model = conn.Get(query);
                if (model == null)
                {
                    trans.Rollback();
                    return(r.Error("账户不存在"));
                }

                model.Password = password;

                var effectedCount = conn.Update(model, trans);
                if (!effectedCount)
                {
                    trans.Rollback();
                    return(r.Error("保存失败"));
                }
                trans.Commit();
                return(r.SetValue(true));
            }
        }
Esempio n. 24
0
        /// <summary>
        /// 根据楼盘编号获取所有关系经纪人的信息
        /// </summary>
        /// <param name="houseNo">楼盘编号</param>
        /// <returns></returns>
        public MessageRecorder <IList <Broker> > GetBrokerByHouseNo(string houseNo)
        {
            var r = new MessageRecorder <IList <Broker> >();

            using (var conn = ConnectionManager.Open())
            {
                var refQuery = new Criteria <HouseBrokerRef>()
                               .Where(m => m.ProjectNo, Op.Eq, houseNo)
                               .Asc(m => m.CreatedAt);
                var proNos     = conn.Query(refQuery).Select(m => m.ProjectNo).ToList();
                var brokerList = new Criteria <Broker>()
                                 .And(m => m.No, Op.In, proNos);
                var list = conn.Query(brokerList);
                if (!list.Any())
                {
                    return(r.Error("没有任何房源!"));
                }
                return(r.SetValue(list));
            }
            ;
        }
Esempio n. 25
0
        /// <summary>
        /// 切换经纪人收藏楼盘状态(收藏、解除)
        /// </summary>
        /// <returns>返回切换后的状态(True:代表收藏;False:代表解除)</returns>
        public MessageRecorder <bool> IsCollect(string brokerNo, string projectNo)
        {
            var r = new MessageRecorder <bool>();

            using (var conn = ConnectionManager.Open())
            {
                if (brokerNo.IsNullOrEmpty())
                {
                    return(r.Error("经纪人编号无效"));
                }
                if (projectNo.IsNullOrEmpty())
                {
                    return(r.Error("楼盘编号无效"));
                }
                //根据经纪人编号获取所有楼盘信息
                var refQuery = new Criteria <HouseBrokerRef>()
                               .Where(m => m.ProjectNo, Op.Eq, projectNo)
                               .And(m => m.BrokerNo, Op.Eq, brokerNo)
                               .Asc(m => m.CreatedAt);
                r.SetValue(conn.Query(refQuery).Any());
                return(r);
            }
        }
Esempio n. 26
0
        public MessageRecorder <bool> UpdateLoginInfo(Account model)
        {
            var r = new MessageRecorder <bool>();

            model.UpdatedAt = Now;
            model.UpdatedBy = AccountNo;

            using (var conn = ConnectionManager.Open())
            {
                var trans = conn.BeginTransaction();
                var sql   = @"UPDATE `base_account` SET "
                            + " `LastLoginAt` = @LastLoginAt, `ErrLoginCount` = @ErrLoginCount, `UpdatedAt` = @UpdatedAt, `UpdatedBy` = @UpdatedBy"
                            + " WHERE `no`= @No";
                var effectedCount = conn.Execute(sql, model, trans);
                if (effectedCount <= 0)
                {
                    trans.Rollback();
                    return(r.Error("保存失败"));
                }
                trans.Commit();
                return(r.SetValue(true));
            }
        }
Esempio n. 27
0
        public MessageRecorder <Account> Auth(string username, string password)
        {
            var r = new MessageRecorder <Account>();

            if (string.IsNullOrEmpty(username))
            {
                return(r.Error("请输入账户名"));
            }
            if (string.IsNullOrEmpty(password))
            {
                return(r.Error("请输入密码"));
            }
            var account = GetAll().FirstOrDefault(m => m.ValidNos.Contains(username));

            if (account == null)
            {
                return(r.Error("账户名或者密码不匹配"));
            }

            if (!account.AuthPassword(password))
            {
                account.ErrLoginCount++;
                account.ErrLoginAt = Now;
                r.Append(Update(account));
                return(r.Error("密码不正确"));
            }

            account.LastLoginAt   = Now;
            account.ErrLoginCount = 0;
            r.Append(UpdateLoginInfo(account));


            var model = GetAccount(account.No);

            return(r.SetValue(model));
        }
Esempio n. 28
0
        public static MessageRecorder <IList <TModel> > Find <TModel>(long[] ids)
            where TModel : class
        {
            var r = new MessageRecorder <IList <TModel> >();

            if (ids.IsNullOrEmpty())
            {
                return(r.Error("ids没有指定值"));
            }

            Register <TModel>();

            using (var conn = ConnectionManager.Open())
            {
                var models = conn.Query <TModel>(
                    $"SELECT * FROM `{NamingHelper.MapClassToTable(typeof(TModel).FullName)}` WHERE `id` in ({string.Join(",", ids)})")
                             .ToList();
                if (models.IsNullOrEmpty())
                {
                    return(r.Info("没有匹配的数据"));
                }
                return(r.SetValue(models));
            }
        }
Esempio n. 29
0
        /// <summary>
        /// 添加
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public override MessageRecorder <bool> Create(Account model)
        {
            var r = new MessageRecorder <bool>();

            model.CreatedAt = Now;
            model.CreatedBy = AccountNo;
            if (model.ValidNos.Any() && model.ValidNos.Count != model.ValidNos.Distinct().Count())
            {
                return(r.Error("电话或者邮件地址重复"));
            }

            var validNos = model.ValidNos;

            if (validNos.IsNullOrEmpty())
            {
                return(r.Error("没有有效账户标识"));
            }

            using (var conn = ConnectionManager.Open())
            {
                var trans = conn.BeginTransaction();
                var query = new Criteria <Account>()
                            .Or(m => m.No, Op.In, validNos)
                            .Or(m => m.Email, Op.In, validNos)
                            .Or(m => m.Phone, Op.In, validNos)
                            .Or(m => m.Phone2, Op.In, validNos)
                            .Or(m => m.Phone3, Op.In, validNos);
                if (conn.Exists(query))
                {
                    trans.Rollback();
                    return(r.Error("保存失败"));
                }
                var effectedCount = conn.Insert(model, trans);
                if (effectedCount == -1)
                {
                    trans.Rollback();
                    return(r.Error("保存失败"));
                }
                var accountRoleRefQuery = new Criteria <AccountRoleRef>()
                                          .Where(m => m.AccountNo, Op.Eq, AccountNo);
                var accountRoleRef = conn.Get(accountRoleRefQuery);
                if (string.IsNullOrEmpty(accountRoleRef?.BranchNo))
                {
                    trans.Rollback();
                    return(r.Error("没有找到分支号,保存失败"));
                }
                var arr = new AccountRoleRef
                {
                    AccountNo = model.No,
                    BranchNo  = accountRoleRef.BranchNo,
                    RoleNo    = "BranchStaff",
                    CreatedAt = DateTime.Now,
                    CreatedBy = AccountNo
                };
                var effectedCount1 = conn.Insert(arr, trans);
                if (effectedCount1 == -1)
                {
                    trans.Rollback();
                    return(r.Error("保存失败"));
                }
                trans.Commit();
            }
            r.Append(AccessoryService.ClearExpiration(model.Photo));
            return(r.SetValue(true));
        }
Esempio n. 30
0
        /// <summary>
        /// 修改
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public override MessageRecorder <bool> Update(Account model)
        {
            var r = new MessageRecorder <bool>();

            model.UpdatedAt = Now;
            model.UpdatedBy = AccountNo;

            var validNos = model.ValidNos;

            if (validNos.IsNullOrEmpty())
            {
                return(r.Error("没有有效账户标识"));
            }
            string oldKey;

            using (var conn = ConnectionManager.Open())
            {
                var trans = conn.BeginTransaction();
                var query = new Criteria <Account>()
                            .Or(m => m.No, Op.In, validNos)
                            .Or(m => m.Email, Op.In, validNos)
                            .Or(m => m.Phone, Op.In, validNos)
                            .Or(m => m.Phone2, Op.In, validNos)
                            .Or(m => m.Phone3, Op.In, validNos)
                            .And(m => m.Id, Op.NotEq, model.Id);
                if (conn.Exists(query))
                {
                    trans.Rollback();
                    return(r.Error("编号或者名称重复"));
                }
                var obj = new Criteria <Account>()
                          .Where(m => m.Id, Op.Eq, model.Id)
                          .Select(m => m.Photo);
                oldKey = conn.ExecuteScalarEx <string>(obj.ToSelectSql());

                // 在不修改密码的情况下,赋予原来的密码
                if (string.IsNullOrEmpty(model.PasswordHash))
                {
                    query.ClearCondition().And(m => m.Id, Op.Eq, model.Id);
                    var oriModel = conn.Query(query).FirstOrDefault();
                    if (oriModel == null)
                    {
                        return(r.Error("账户不存在"));
                    }
                    model.PasswordHash = oriModel.PasswordHash;
                    model.PasswordSalt = oriModel.PasswordSalt;
                }

                var effectedCount = conn.Update(model, trans);
                if (!effectedCount)
                {
                    trans.Rollback();
                    return(r.Error("保存失败"));
                }
                trans.Commit();
            }
            if (!Equals(oldKey, model.Photo))
            {
                r.Append(AccessoryService.DeleteObject(oldKey));
                r.Append(AccessoryService.ClearExpiration(model.Photo));
            }
            return(r.SetValue(true));
        }