Esempio n. 1
0
        internal ObModelInfo SelectById(long obId)
        {
            //初始化
            ObModelInfo om  = new ObModelInfo();
            IDbHandler  dbh = om.CreateHandler();   //创建数据库操作句柄接口

            //设置返回的实体字段,相当于EF的Select字段
            dbh.SetFields(om.Fields);   //om.Fields为所有字段
            //dbh.SetFields(om.ObId, om.ObName, om.ObEnabled);    //自定义返回的实体字段

            //组装Where条件语句
            dbh.Where(om.ObId.Equals(obId));

            //执行查询
            DataReader dr = dbh.Select();

            //获取结果集方法一(自动关闭读取器)
            om = dr.ReadFirst <ObModelInfo>();

            //获取结果集方法二(手动关闭读取器,更灵活)

            /*
             * if (dr.Read())
             * {
             *  dr.ReadTo(om);
             * }
             * else
             * {
             *  om = null;
             * }
             * dr.Close();
             */

            return(om);
        }
Esempio n. 2
0
        public int DeleteEntity(long obId, long userId, out string msg)
        {
            int code = 0;

            try
            {
                ObModelInfo ei = GetEntity(obId, userId, out msg);
                if (ei == null)
                {
                    return(0);
                }
                if (ei.Delete())
                {
                    code = 1;
                }
                else
                {
                    msg = "删除" + ENTITY_STR + "失败";
                    return(code);
                }
            }
            catch (Exception ex)
            {
                msg = "删除" + ENTITY_STR + "异常";
                Logger.Error(ex, msg);
                return(-1);
            }
            msg = "";
            return(code);
        }
Esempio n. 3
0
        /// <summary>
        /// 更新实体方法(用户无关)
        /// </summary>
        /// <param name="entity"></param>
        /// <param name="msg"></param>
        /// <returns></returns>
        public ObModelInfo UpdateEntity(ObModelInfo entity, out string msg)
        {
            ObModelInfo ei = null;

            try
            {
                //判断参数中是否有记录ID
                if (entity.ObId.IsNull)
                {
                    msg = "obId不能为空";
                    return(null);
                }
                //判断是否存在ID对应的记录
                ObModelDA da = new ObModelDA();
                ei = da.SelectById(entity.ObId.Value);  //根据ID获取记录
                //ei = Obsidian.Edm.OModel.GetByPk<ObModelInfo>(entity.ObId.Value); //或者:根据主键获取记录
                if (ei != null)
                {
                    msg = "记录不存在";
                    return(null);
                }
                //设置需要更新的属性值(注意与添加的代码进行区分)
                ei.ResetAssigned();

                if (!entity.ObDescri.IsNullOrWhiteSpace)
                {
                    ei.ObDescri.Set(entity.ObDescri.Value);
                }
                if (!entity.ObEnabled.IsNull)
                {
                    ei.ObEnabled.Set(entity.ObEnabled.Value);
                }
                if (!entity.ObLevel.IsNull)
                {
                    ei.ObLevel.Set(entity.ObLevel.Value);
                }
                if (!entity.ObMoney.IsNull)
                {
                    ei.ObMoney.Set(entity.ObMoney.Value);
                }
                if (!entity.ObScore.IsNull)
                {
                    ei.ObScore.Set(entity.ObScore.Value);
                }

                if (!ei.Update())  //保存实体(更新记录)
                {
                    msg = "更新" + ENTITY_STR + "失败";
                    return(null);
                }
            }
            catch (Exception ex)
            {
                msg = "更新" + ENTITY_STR + "异常";
                Logger.Error(ex, msg);
                return(null);
            }
            msg = "";
            return(ei);
        }
Esempio n. 4
0
        /// <summary>
        /// 添加实体方法
        /// </summary>
        /// <param name="entity"></param>
        /// <param name="msg"></param>
        /// <returns></returns>
        public ObModelInfo AddEntity(ObModelInfo entity, out string msg)
        {
            ObModelInfo ei = null;

            try
            {
                //验证必要的属性值
                if (!Verify(entity, out msg))
                {
                    return(null);
                }
                //判断是否已存在(如同名)

                /* 对于同一userId只能有一条记录的情况
                 * 在DA类增加 SelectByUserId(entity.UserId.Value) 方法,然后进行判断即可
                 *
                 */
                ObModelDA da = new ObModelDA();
                ei = da.SelectByName(entity.ObName.Value);
                if (ei != null)
                {
                    msg = "obName已存在";
                    return(null);
                }

                //设置必要的空值属性初始值(对于数据库表字段要求 NOT NULL 的都必须设置)
                ei = entity;
                if (entity.ObDescri.IsNullOrWhiteSpace)
                {
                    ei.ObDescri.Set("");
                }
                if (entity.ObEnabled.IsNull)
                {
                    ei.ObEnabled.Set(false);
                }
                if (entity.ObLevel.IsNull || entity.ObLevel.Value < 0)
                {
                    ei.ObLevel.Set(0);
                }
                if (entity.ObMoney.IsNull || entity.ObMoney.Value < 0.0m)
                {
                    ei.ObMoney.Set(0.0m);
                }
                if (entity.ObScore.IsNull || entity.ObScore.Value < 0.0d)
                {
                    ei.ObScore.Set(60.0d);
                }
                ei.ObCreated.Now(); //设置当前日期时间
                ei.Save();          //保存实体(新增记录)
            }
            catch (Exception ex)
            {
                msg = "添加" + ENTITY_STR + "异常";
                Logger.Error(ex, msg);
                return(null);
            }
            msg = "";
            return(ei);
        }
Esempio n. 5
0
        public void Get(ActionRequest req, ActionResponse res)
        {
            string msg = "";

            try
            {
                //权限判断,是否有登录(根据业务确定是否需要此判断)

                /*
                 * if (!Session.IsLogin) // (!Session.IsAdmin)
                 * {
                 *  res.Error(VERIFY_ERROR);
                 *  return;
                 * }
                 */

                ActReqParam param;
                if (!req.TryGetParam(ENTITY_REQ, out param))
                {
                    res.Error("参数" + ENTITY_REQ + "错误");
                    return;
                }
                long obId = 0;
                if (!param.TryGetFirstLong("obId", out obId))
                {
                    res.Error("参数" + ENTITY_REQ + "属性obId错误");
                    return;
                }

                //用户相关

                /*
                 * long userId = 0;
                 * if (!param.TryGetFirstLong("userId", out userId))
                 * {
                 *  res.Error("参数" + ENTITY_REQ + "的属性userId错误");
                 * }
                 */

                ObModelInfo ei = null;
                ei = GetEntity(obId, out msg);
                //ei = GetEntity(obId, userId, out msg); //用户相关

                if (ei == null)
                {
                    res.Error(msg);
                    return;
                }
                ActionResult ar = res.AddResult(ENTITY_RES, ENTITY_FIELDS);
                ar.AddModel(ei);
            }
            catch (Exception ex)
            {
                msg = "ext.ObModel.get 接口调用异常";
                Logger.Error(ex, msg);
                res.Error(msg);
            }
        }
Esempio n. 6
0
        /// <summary>
        /// 验证请求实体参数
        /// 一般用于新增实体
        /// </summary>
        /// <param name="om"></param>
        /// <param name="msg"></param>
        /// <returns></returns>
        private bool Verify(ObModelInfo om, out string msg)
        {
            if (om.ObName.IsNullOrWhiteSpace)
            {
                msg = "ObName不能为空";
                return(false);
            }

            msg = "";
            return(true);
        }
Esempio n. 7
0
        public void Update(ActionRequest req, ActionResponse res)
        {
            string msg = "";

            try
            {
                //权限判断一,需要登录(用户或管理员)
                if (!Session.IsLogin)
                {
                    res.Error(VERIFY_ERROR);
                    return;
                }
                YsMemberInfo user = Session.User;   //获取登录用户信息
                //权限判断二,必须是管理员

                /*
                 * if (!Session.IsAdmin)
                 * {
                 *  res.Error(VERIFY_ERROR);
                 *  return;
                 * }
                 */

                ObModelInfo ei = null;
                //解析请求参数,转换为实体类
                ei = req.GetModelByNameOrFirst <ObModelInfo>(ENTITY_REQ);

                //解析请求参数(针对有规律的实体结构(同前缀的同构表))
                //参照 : public void Add(ActionRequest req, ActionResponse res) 方法

                //调用业务处理方法一(用户无关)
                ei = UpdateEntity(ei, out msg);

                /*
                 * //调用业务处理方法二(用户相关,操作权限判断)
                 * ei = UpdateEntity(ei, user, out msg);
                 */

                if (ei == null)
                {
                    res.Error(msg);
                    return;
                }
                //返回结果集
                ActionResult ar = res.AddResult(ENTITY_RES, ENTITY_FIELDS); //定义返回结果集名称和字段名
                ar.AddModel(ei);                                            //添加结果集到ActionResult
            }
            catch (Exception ex)
            {
                msg = "ys.ObModel.update 接口调用异常";
                Logger.Error(ex, msg);
                res.Error(msg);
            }
        }
Esempio n. 8
0
        internal ObModelInfo SelectByName(string obName)
        {
            ObModelInfo om  = new ObModelInfo();
            IDbHandler  dbh = om.CreateHandler();

            dbh.SetFields(om.Fields);

            dbh.Where(om.ObName.Like(obName));

            DataReader dr = dbh.Select();

            om = dr.ReadFirst <ObModelInfo>();

            return(om);
        }
Esempio n. 9
0
        internal ObModelInfo SelectByUserId(long obId, long userId)
        {
            ObModelInfo om  = new ObModelInfo();
            IDbHandler  dbh = om.CreateHandler();

            dbh.SetFields(om.Fields);

            dbh.Where(om.ObId.Equals(obId));
            dbh.Where(om.UserId.Equals(userId));

            DataReader dr = dbh.Select();

            om = dr.ReadFirst <ObModelInfo>();

            return(om);
        }
Esempio n. 10
0
        /// <summary>
        /// 获取记录(根据记录ID和用户ID)
        /// </summary>
        /// <param name="obId"></param>
        /// <param name="userId"></param>
        /// <param name="msg"></param>
        /// <returns></returns>
        public ObModelInfo GetEntity(long obId, long userId, out string msg)
        {
            ObModelInfo ei = null;

            try
            {
                ObModelDA da = new ObModelDA();
                ei = da.SelectByUserId(obId, userId);
                if (ei == null)
                {
                    msg = "获取" + ENTITY_STR + "记录为空";
                    return(null);
                }
            }
            catch (Exception ex)
            {
                msg = "获取" + ENTITY_STR + "记录异常";
                Logger.Error(ex, msg);
                return(null);
            }
            msg = "";
            return(ei);
        }
Esempio n. 11
0
        /// <summary>
        /// 获取记录(根据记录ID)
        /// </summary>
        /// <param name="obId"></param>
        /// <param name="msg"></param>
        /// <returns></returns>
        public ObModelInfo GetEntity(long obId, out string msg)
        {
            ObModelInfo ei = null;

            try
            {
                ObModelDA da = new ObModelDA();
                ei = da.SelectById(obId);
                //ei = OModel.GetByPk<ObModelInfo>(entity.ObId.Value); //或者:根据主键获取记录
                if (ei == null)
                {
                    msg = "获取" + ENTITY_STR + "记录为空";
                    return(null);
                }
            }
            catch (Exception ex)
            {
                msg = "获取" + ENTITY_STR + "记录异常";
                Logger.Error(ex, msg);
                return(null);
            }
            msg = "";
            return(ei);
        }
Esempio n. 12
0
        /**
         * 1.接口命名方式 [程序集别名.接口类别名.接口方法别名]
         *  除首字母外,接口命名是区分大小写的!
         *  程序集别名:bin目录下,配置文件AppConfig.xml中的apiAssemblies节点下的assembly节点的name属性
         *  接口类别名:业务逻辑类名称去掉BL后缀(ObModelBL => obModel)
         *  接口方法别名:如 add,update,get,list,delete等
         *  示例:ys.obModel.add; ys.obModel.get
         * 2.接口调用权限:配置文件AppConfig.xml中的apiServes节点下的serv节点
         * 3.接口执行权限:通过继承基类,使用YsSession进行用户角色判断
         */

        #region [新增单实体]
        public void Add(ActionRequest req, ActionResponse res)
        {
            string msg = "";

            try
            {
                //权限判断一,需要登录(用户或管理员)
                if (!Session.IsLogin)
                {
                    res.Error(VERIFY_ERROR);
                    return;
                }
                //权限判断二,必须是管理员

                /*
                 * if (!Session.IsAdmin)
                 * {
                 *  res.Error(VERIFY_ERROR);
                 *  return;
                 * }
                 */

                ObModelInfo ei = null;
                //解析请求参数,转换为实体类(针对单一实体结构)
                ei = req.GetModelByNameOrFirst <ObModelInfo>(ENTITY_REQ);

                //解析请求参数(针对有规律的实体结构(同前缀的同构表))

                /****
                *  ActReqParam param = req.GetParamByNameOrFirst(ENTITY_REQ);
                *  if (param == null)
                *  {
                *   res.Error("参数" + ENTITY_REQ + "错误");
                *   return;
                *  }
                *  //定义参数(对于DateTime类型,以"yyyy-MM-dd HH:mm:ss"格式的字符串处理)
                *  long obId = 0;
                *  int obLevel = 0;
                *  string obName = "";
                *  string obDescri = "";
                *  bool obEnabled = false;
                *  decimal obMoney = 0.0m;
                *  double obScore = 0.0d;
                *  long userId = 0;
                *  //验证参数(参数名必须和ObModel实体ObModelInfo的属性别名一致)
                *  if (!param.TryGetFirstLong("obId", out obId))
                *  {
                *   res.Error("参数" + ENTITY_REQ + "的属性obId错误");
                *   return;
                *  }
                *  if (!param.TryGetFirstInt("obLevel", out obLevel))
                *  {
                *   res.Error("参数" + ENTITY_REQ + "的属性obLevel错误");
                *   return;
                *  }
                *  if (!param.TryGetFirstString("obName", out obName))
                *  {
                *   res.Error("参数" + ENTITY_REQ + "的属性obName错误");
                *   return;
                *  }
                *  if (!param.TryGetFirstString("obDescri", out obDescri))
                *  {
                *   res.Error("参数" + ENTITY_REQ + "的属性obDescri错误");
                *   return;
                *  }
                *  if (!param.TryGetFirstBool("obEnabled", out obEnabled))
                *  {
                *   res.Error("参数" + ENTITY_REQ + "的属性obEnabled错误");
                *   return;
                *  }
                *  if (!param.TryGetFirstDecimal("obMoney", out obMoney))
                *  {
                *   res.Error("参数" + ENTITY_REQ + "的属性obMoney错误");
                *   return;
                *  }
                *  if (!param.TryGetFirstDouble("obScore", out obScore))
                *  {
                *   res.Error("参数" + ENTITY_REQ + "的属性obScore错误");
                *   return;
                *  }
                *  if (!param.TryGetFirstLong("userId", out userId))
                *  {
                *   res.Error("参数" + ENTITY_REQ + "的属性userId错误");
                *   return;
                *  }
                *  //设置实体参数值
                *  long uid = userId % 1024;
                *  string tableNameFormat = @"TbObModel_{0}"; //同前缀的同构表名格式定义
                *  string tableName = String.Format(tableNameFormat, uid);
                *  ei = new ObModelInfo(tableName);
                *  ei.ObLevel.Set(obLevel);
                *  ei.ObName.Set(obName);
                *  ei.ObDescri.Set(obDescri);
                *  ei.ObEnabled.Set(obEnabled);
                *  ei.ObMoney.Set(obMoney);
                *  ei.ObScore.Set(obScore);
                *  ei.UserId.Set(userId);
                ****/

                //调用业务处理方法
                ei = AddEntity(ei, out msg);
                if (ei == null)
                {
                    res.Error(msg);
                    return;
                }
                //返回结果集
                ActionResult ar = res.AddResult(ENTITY_RES, ENTITY_FIELDS); //定义返回结果集名称和字段名
                ar.AddModel(ei);                                            //添加结果集到ActionResult
            }
            catch (Exception ex)
            {
                msg = "ys.ObModel.add 接口调用异常";
                Logger.Error(ex, msg);
                res.Error(msg);
            }
        }
Esempio n. 13
0
        /// <summary>
        /// 更新实体方法(用户相关)
        /// 1.判断是否管理员
        /// 2.判断记录是否属于当前用户
        /// </summary>
        /// <param name="entity"></param>
        /// <param name="user"></param>
        /// <param name="msg"></param>
        /// <returns></returns>
        public ObModelInfo UpdateEntity(ObModelInfo entity, YsMemberInfo user, out string msg)
        {
            ObModelInfo ei = null;

            try
            {
                //判断参数中是否有记录ID
                if (entity.ObId.IsNull)
                {
                    msg = "obId不能为空";
                    return(null);
                }
                //判断是否存在ID对应的记录
                ObModelDA da = new ObModelDA();
                ei = da.SelectById(entity.ObId.Value);  //根据ID获取记录
                //ei = OModel.GetByPk<ObModelInfo>(entity.ObId.Value); //或者:根据主键获取记录
                if (ei != null)
                {
                    msg = "记录不存在";
                    return(null);
                }

                //判断是否有操作权限(管理员或用户本人)
                if (user != null &&
                    (!user.UserId.IsNull) &&
                    (!ei.UserId.IsNull))
                {
                    if (user.AccountType.Value != Oak.Model.AccountType.Admin)  //非管理员
                    {
                        if (user.UserId.Value != ei.UserId.Value)
                        {
                            msg = VERIFY_ERROR;
                            return(null);
                        }
                    }
                }
                else
                {
                    msg = VERIFY_ERROR;
                    return(null);
                }

                //设置需要更新的属性值(注意与添加的代码进行区分)
                ei.ResetAssigned();

                if (!entity.ObDescri.IsNullOrWhiteSpace)
                {
                    ei.ObDescri.Set(entity.ObDescri.Value);
                }
                if (!entity.ObEnabled.IsNull)
                {
                    ei.ObEnabled.Set(entity.ObEnabled.Value);
                }
                if (!entity.ObLevel.IsNull)
                {
                    ei.ObLevel.Set(entity.ObLevel.Value);
                }
                if (!entity.ObMoney.IsNull)
                {
                    ei.ObMoney.Set(entity.ObMoney.Value);
                }
                if (!entity.ObScore.IsNull)
                {
                    ei.ObScore.Set(entity.ObScore.Value);
                }

                if (!ei.Update())  //保存实体(更新记录)
                {
                    msg = "更新" + ENTITY_STR + "失败";
                    return(null);
                }
            }
            catch (Exception ex)
            {
                msg = "更新" + ENTITY_STR + "异常";
                Logger.Error(ex, msg);
                return(null);
            }
            msg = "";
            return(ei);
        }
Esempio n. 14
0
        internal List <ObModelInfo> SelectList(ObModelQuery query, out ListAttrInfo listAttr)
        {
            //初始化
            ObModelInfo om  = new ObModelInfo();
            IDbHandler  dbh = om.CreateHandler(); //创建数据库操作句柄接口

            dbh.SetFields(om.Fields);             //设置返回的实体字段

            //[BEGIN]::组装Where条件语句
            //组装日期时间条件
            string startTime;   //开始时间
            string endTime;     //结束时间
            string dtFormat = "yyyy-MM-dd HH:mm:ss";

            if (!query.StartTime.IsNull && (!query.StartTime.IsMinValue))
            {
                startTime = query.StartTime.Value.ToString(dtFormat);
                dbh.Where(om.ObCreated.Compare(">=", startTime));
            }
            if (!query.EndTime.IsNull && (!query.EndTime.IsMinValue))
            {
                endTime = query.EndTime.Value.ToString(dtFormat);
                dbh.Where(om.ObCreated.Compare("<=", endTime));
            }
            //组装记录ID串条件
            if (!query.Ids.IsNull && query.Ids.Count > 0)
            {
                dbh.Where(om.ObId.In(query.Ids.Value));
            }
            //组装关键字条件
            if (!query.Keyword.IsNullOrWhiteSpace)
            {
                dbh.Where(om.ObName.Like(query.Keyword.Value));
            }
            //组装复合条件(如果需要)

            /*
             * if (!query.Keyword.IsNullOrWhiteSpace)
             * {
             *  string keyword = query.Keyword.Value;
             *  CompoundCondition ccd = new CompoundCondition();    //复合条件类
             *  ccd.And(om.ObName.Like(keyword))
             *      .Or(om.ObDescri.Like(keyword));
             *  dbh.Where(ccd);
             * }
             */

            //
            if (!query.Level.IsNull)
            {
                dbh.Where(om.ObLevel.Equals(query.Level));
            }
            //组装记录状态条件
            if (!query.Enabled.IsNull)
            {
                dbh.Where(om.ObEnabled.Equals(query.Enabled.Value));
            }

            //组装JOIN条件
            if (!query.GetRelation.IsTrue())
            {
                ObRelationInfo ori = new ObRelationInfo();
                dbh.SetFields(ori.Fields);                  //设置返回的关联实体字段
                dbh.Join(ori).On(om.ObId.Equals(ori.ObId)); //关联条件
            }

            //组装排序条件(放在Where子句最后,分页时,必须有OrderBy)
            if (!query.OrderBy.IsNull && query.OrderBy.Count > 0)
            {
                OrderInfo[] oiArray = query.OrderBy.GetArray();
                //拼装的order by条件,case条件字段值需要和ObModelQuery查询实体的OrderByFields属性一致
                foreach (OrderInfo oi in oiArray)
                {
                    switch (oi.FieldAlias)
                    {
                    case "obLevel":
                        dbh.OrderBy(om.ObLevel, oi.OrderType);
                        break;

                    case "obName":
                        dbh.OrderBy(om.ObName, oi.OrderType);
                        break;

                    case "obEnabled":
                        dbh.OrderBy(om.ObEnabled, oi.OrderType);
                        break;

                    case "obMoney":
                        dbh.OrderBy(om.ObMoney, oi.OrderType);
                        break;

                    case "obScore":
                        dbh.OrderBy(om.ObScore, oi.OrderType);
                        break;

                    case "obCreated":
                        dbh.OrderBy(om.ObCreated, oi.OrderType);
                        break;

                    case "obId":
                    default:
                        dbh.OrderBy(om.ObId, oi.OrderType);
                        break;
                    }
                }
            }
            else
            {
                //默认排序条件
                dbh.OrderBy(om.ObId, OrderType.DESC);
            }

            //[END]::组装Where条件语句

            List <ObModelInfo> list = new List <ObModelInfo>();
            DataReader         dr   = dbh.Select(query, out listAttr);

            //获取结果集方法一(自动关闭读取器)
            list = dr.ReadList <ObModelInfo>();

            //获取结果集方法二(手动关闭读取器,更灵活)

            while (dr.Read())
            {
                ObModelInfo ei = new ObModelInfo();
                dr.ReadTo(ei);
                list.Add(ei);
            }
            dr.Close();

            return(list);
        }