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); }
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); }
/// <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); }
/// <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); }
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); } }
/// <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); }
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); } }
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); }
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); }
/// <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); }
/// <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); }
/** * 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); } }
/// <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); }
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); }