public OptResult Save(TaskModel task) { OptResult rst = null; if (task == null) { rst = OptResult.Build(ResultCode.ParamError, "参数不能为空或格式不正确"); return(rst); } if (string.IsNullOrEmpty(task.id)) { task.id = GuidExtension.GetOne(); task.state = "编辑"; _rep.Insert(task); } else { var oldTask = _rep.GetById(task.id); oldTask.name = task.name; oldTask.content = task.content; oldTask.priority = task.priority; oldTask.receiver = task.receiver; oldTask.expire_time = task.expire_time; _rep.Update(oldTask); } rst = OptResult.Build(ResultCode.Success, "保存成功"); return(rst); }
public OptResult Add(Table table) { OptResult rst = null; if (table == null) { rst = OptResult.Build(ResultCode.ParamError, string.Format("{0},参数不能为空!", Msg_AddTable)); return(rst); } //1、表名或别名是否存在 if (IsRepeat(table)) { rst = OptResult.Build(ResultCode.DataRepeat, string.Format("{0},查询表名称或别名已存在!", Msg_AddTable)); return(rst); } //2、插入数据库 table.id = GuidExtension.GetOne(); try { _tableRep.Insert(table); rst = OptResult.Build(ResultCode.Success, Msg_AddTable); } catch (Exception ex) { LogHelper.LogError(Msg_AddTable, ex); rst = OptResult.Build(ResultCode.DbError, Msg_AddTable); } return(rst); }
private OptResult ProcessFieldName(IEnumerable <Field> fields, IEnumerable <Table> tables) { OptResult rst; if (tables.IsEmpty()) { rst = OptResult.Build(ResultCode.DataNotFound, string.Format("{0},查询表不存在!", Msg_InitFields)); return(rst); } var groups = fields.GroupBy(f => f.tbid); Table tb = null; foreach (var gp in groups) { tb = tables.Where(t => t.id == gp.Key).FirstOrDefault(); if (tb == null) { rst = OptResult.Build(ResultCode.DataNotFound, string.Format("{0},查询表不存在!", Msg_InitFields)); return(rst); } foreach (var field in gp) { ProcessFieldName(field, tb); field.id = GuidExtension.GetOne(); if (field.displayname.IsEmpty()) { field.displayname = field.fieldname; } } } rst = OptResult.Build(ResultCode.Success, Msg_InitFields); return(rst); }
void SetUserInfo() { if (_auditInfoEntities != null && _auditInfoEntities.Count > 0) { Guid userId = Guid.Empty; String actionPerformedByUser = null; if (HttpContext.Current != null && HttpContext.Current.User != null && HttpContext.Current.User.Identity != null && !String.IsNullOrEmpty(HttpContext.Current.User.Identity.Name) && HttpContext.Current.User.Identity.IsAuthenticated) { userId = HttpContext.Current.User.GetProviderUserKey(); actionPerformedByUser = HttpContext.Current.User.Identity.Name; } for (int i = 0; i < _auditInfoEntities.Count; i++) { var item = _auditInfoEntities.GetAt(i) as AuditInfoEntity; if (item != null) { item.ActionPerformedByUser = actionPerformedByUser; item.UserId = userId; item.UserAgent = String.Empty; item.Referrer = String.Empty; item.IpAddress = String.Empty; if (HttpContext.Current != null && HttpContext.Current.Request != null) { if (HttpContext.Current.Request.UserAgent != null) { item.UserAgent = ToTrimmedWordString(HttpContext.Current.Request.UserAgent, AuditInfoFields.UserAgent.MaxLength, true); } if (HttpContext.Current.Request.UrlReferrer != null) { item.Referrer = ToTrimmedWordString(HttpContext.Current.Request.UrlReferrer.AbsoluteUri, AuditInfoFields.Referrer.MaxLength, true); } item.IpAddress = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"]; } //HttpContext.Current.User not available when just logging in. if (GuidExtension.IsNullOrEmpty(item.UserId) && item.ActionDataLog != null && item.ActionDataLog.Data != null) { if (item.ActionDataLog.Data is LogInAudit) { var logInData = item.ActionDataLog.Data as LogInAudit; item.UserId = logInData.UserId; } else if (item.ActionDataLog.Data is LogOutAudit) { var logOutData = item.ActionDataLog.Data as LogOutAudit; item.UserId = logOutData.UserId; } } } } } }
public OptResult Add(Dict dict) { OptResult rst = null; //1、编号类型是否存在 var count = _dictTypeRep.Count(Predicates.Field <DictType>(t => t.type_code, Operator.Eq, dict.dict_type)); if (count < 1) { rst = OptResult.Build(ResultCode.DataNotFound, string.Format("{0},编号类型{1}不存在!", Msg_Add, dict.dict_type)); return(rst); } //2、相同类型下,编号是否已存在 PredicateGroup pg = new PredicateGroup { Operator = GroupOperator.And, Predicates = new List <IPredicate>() }; pg.Predicates.Add(Predicates.Field <Dict>(d => d.dict_type, Operator.Eq, dict.dict_type)); pg.Predicates.Add(Predicates.Field <Dict>(d => d.dict_code, Operator.Eq, dict.dict_code)); count = _dictRep.Count(pg); if (count > 0) { rst = OptResult.Build(ResultCode.DataRepeat, string.Format("{0},类型{1}下已存在编号{2}!", Msg_Add, dict.dict_type, dict.dict_code)); return(rst); } //3、相同类型下,只能有一个默认值 if (dict.dict_default == true) { pg.Predicates.Clear(); pg.Predicates.Add(Predicates.Field <Dict>(d => d.dict_type, Operator.Eq, dict.dict_type)); pg.Predicates.Add(Predicates.Field <Dict>(d => d.dict_default, Operator.Eq, true)); count = _dictRep.Count(pg); if (count > 0) { rst = OptResult.Build(ResultCode.DataRepeat, string.Format("{0},类型{1}下已存在默认值!", Msg_Add, dict.dict_type)); return(rst); } } //4、新增 dict.dict_id = GuidExtension.GetOne(); try { var val = _dictRep.Insert(dict); rst = OptResult.Build(ResultCode.Success, Msg_Add); } catch (Exception ex) { LogHelper.LogError(Msg_Add, ex); rst = OptResult.Build(ResultCode.DbError, Msg_Add); } return(rst); }
public OptResult Save(PartyActAreaModel area) { OptResult rst = null; if (area == null) { rst = OptResult.Build(ResultCode.ParamError, "参数不能为空或格式不正确"); return(rst); } if (string.IsNullOrEmpty(area.id)) { area.id = GuidExtension.GetOne(); var tran = _rep.Begin(); try { _rep.Insert(area, tran); if (area.pic != null && area.pic.Count > 0) { //_picRep.InsertBatch(pics, tran); //保存图片数据(直接写到文件) UploadHelper.Upload(area.id, area.pic); } tran.Commit(); } catch (Exception ex) { LogHelper.LogError("新增area", ex); rst = OptResult.Build(ResultCode.DbError, "新增area"); return(rst); } } else { var oldArea = _rep.GetById(area.id); oldArea.town = area.town; oldArea.village = area.village; oldArea.floor_area = area.floor_area; oldArea.courtyard_area = area.courtyard_area; oldArea.levels = area.levels; oldArea.rooms = area.rooms; oldArea.location = area.location; oldArea.gps = area.gps; oldArea.levels = area.levels; _rep.Update(area); } rst = OptResult.Build(ResultCode.Success, "保存成功"); return(rst); }
/// <summary> /// 给用户分配权限 /// </summary> /// <param name="usrId"></param> /// <param name="perIds">新的权限id列表</param> /// <param name="assignAll">是否分配所有权限,如果true,则忽略perIds</param> /// <returns></returns> public OptResult AssignPermissions(string usrId, List <string> perIds = null, bool assignAll = false) { OptResult rst = null; //1、用户是否存在 var usr = _usrRep.GetById(usrId); if (usr == null) { rst = OptResult.Build(ResultCode.DataNotFound, string.Format("{0}失败,用户不存在!", Msg_AssignPer)); return(rst); } //新权限(非数据库操作尽量放到事务外) var newRels = new List <UserPermissionRel>(); if (!assignAll && perIds != null && perIds.Count > 0) { //去重 perIds.Distinct().ToList() .ForEach(newPerId => { newRels.Add(new UserPermissionRel { rel_id = GuidExtension.GetOne(), rel_userid = usrId, rel_permissionid = newPerId }); }); } if (assignAll) { newRels.Add(new UserPermissionRel { rel_id = GuidExtension.GetOne(), rel_userid = usrId, rel_permissionid = "*" }); } var tran = _usrPerRelRep.Begin(); try { //2、清空用户当前所有权限 bool val = _usrPerRelRep.Delete(Predicates.Field <UserPermissionRel>(r => r.rel_userid, Operator.Eq, usrId), tran); //3、添加新权限 if (newRels.Count > 0) { _usrPerRelRep.InsertBatch(newRels, tran); } tran.Commit(); rst = OptResult.Build(ResultCode.Success, Msg_AssignPer); } catch (Exception ex) { LogHelper.LogError(Msg_AssignPer, ex); rst = OptResult.Build(ResultCode.DbError, Msg_AssignPer); } return(rst); }
public static void Upload(string subPath, string content) { var path = _uploadRootPath + "/" + subPath; if (!Directory.Exists(path)) { Directory.CreateDirectory(path); } string filePath = path + "/" + GuidExtension.GetOne(); File.WriteAllText(filePath, content); }
public OptResult Init(IEnumerable <Table> tables) { OptResult rst = null; if (tables.IsEmpty()) { rst = OptResult.Build(ResultCode.ParamError, string.Format("{0},参数不能为空!", Msg_Init)); return(rst); } //预处理 List <Field> fields = new List <Field>(); foreach (var t in tables) { //主键、别名 t.id = GuidExtension.GetOne(); if (t.alias.IsEmpty()) { t.alias = t.tbname; } fields.AddRange(t.fields); } var tran = _tableRep.Begin(); try { //1、清除查询表所有信息、查询字段所有信息 //TODO,如果后续还有查询模板啥的,是不是都得清除? _fieldRep.Delete(Predicates.Field <Field>(f => f.id, Operator.Eq, null, true), tran); _tableRep.Delete(Predicates.Field <Table>(t => t.id, Operator.Eq, null, true), tran); //2、新增 _tableRep.InsertBatch(tables, tran); if (fields.IsNotEmpty()) { _fieldRep.InsertBatch(fields, tran); } _tableRep.Commit(); rst = OptResult.Build(ResultCode.Success, Msg_Init); } catch (Exception ex) { LogHelper.LogError(Msg_Init, ex); rst = OptResult.Build(ResultCode.DbError, Msg_Init); } return(rst); }
public OptResult Add(Permission per) { OptResult rst = null; //1、校验权限编号是否已存在 var count = _perRep.Count(Predicates.Field <Permission>(p => p.per_code, Operator.Eq, per.per_code)); if (count > 0) { rst = OptResult.Build(ResultCode.DataRepeat, string.Format("{0},编号为{1}的权限已存在!", Msg_AddPer, per.per_code)); return(rst); } //2、权限类型是否合法 string msg = ""; if (!ValidatePermissionType(per.per_type, out msg)) { rst = OptResult.Build(ResultCode.ParamError, Msg_AddPer + "," + msg); return(rst); } //3、上级权限是否存在 if (!ValidateParent(per.per_parent, out msg)) { rst = OptResult.Build(ResultCode.ParamError, Msg_AddPer + "," + msg); return(rst); } per.per_id = GuidExtension.GetOne(); try { _perRep.Insert(per); rst = OptResult.Build(ResultCode.Success, Msg_AddPer); } catch (Exception ex) { LogHelper.LogError(Msg_AddPer, ex); rst = OptResult.Build(ResultCode.DbError, Msg_AddPer); } return(rst); }
public OptResult Add(Field field) { OptResult rst = null; if (field == null) { rst = OptResult.Build(ResultCode.ParamError, string.Format("{0},参数不能为空!", Msg_AddField)); return(rst); } //1、字段名是否存在 if (IsRepeat(field)) { rst = OptResult.Build(ResultCode.DataRepeat, string.Format("{0},字段名称已存在!", Msg_AddField)); return(rst); } //2、查询表是否存在 var table = _tableRep.GetById(field.tbid); if (table == null) { rst = OptResult.Build(ResultCode.DataNotFound, string.Format("{0},对应查询表不存在!", Msg_AddField)); return(rst); } //3、修改查询字段名称 ProcessFieldName(field, table); //4、插入数据库 field.id = GuidExtension.GetOne(); try { _fieldRep.Insert(field); rst = OptResult.Build(ResultCode.Success, Msg_AddField); } catch (Exception ex) { LogHelper.LogError(Msg_AddField, ex); rst = OptResult.Build(ResultCode.DbError, Msg_AddField); } return(rst); }
public OptResult Add(User usr) { OptResult rst = null; //1、用户名是否已存在 PredicateGroup pg = new PredicateGroup { Operator = GroupOperator.Or, Predicates = new List <IPredicate>() }; pg.Predicates.Add(Predicates.Field <User>(u => u.user_name, Operator.Eq, usr.user_name)); pg.Predicates.Add(Predicates.Field <User>(u => u.user_idcard, Operator.Eq, usr.user_idcard)); var count = _usrRep.Count(pg); if (count > 0) { rst = OptResult.Build(ResultCode.DataRepeat, string.Format("{0},用户{1}或身份证号{2}已存在", Msg_AddUser, usr.user_name, usr.user_idcard)); return(rst); } //2、处理 usr.user_id = GuidExtension.GetOne(); usr.user_pwd = EncryptionExtension.GetMd5Hash(usr.user_idcard.Substring(usr.user_idcard.Length - 6, 6));//初始密码身份证后六位 try { var val = _usrRep.Insert(usr); //3、新增用户默认权限 //TODO rst = OptResult.Build(ResultCode.Success, Msg_AddUser); } catch (Exception ex) { LogHelper.LogError(Msg_AddUser, ex); rst = OptResult.Build(ResultCode.DbError, Msg_AddUser); } return(rst); }
public OptResult Add(Group group) { OptResult rst = null; //1、校验组织编号是否已存在 var count = _groupRep.Count(Predicates.Field <Group>(gp => gp.gp_code, Operator.Eq, group.gp_code)); if (count > 0) { rst = OptResult.Build(ResultCode.DataRepeat, string.Format("{0},编号为{1}的组织已存在!", Msg_AddGroup, group.gp_code)); return(rst); } //2、上级组织是否存在 string msg = ""; if (!ValidateParent(group.gp_parent, out msg)) { rst = OptResult.Build(ResultCode.ParamError, Msg_AddGroup + "," + msg); return(rst); } group.gp_id = GuidExtension.GetOne(); try { _groupRep.Insert(group); rst = OptResult.Build(ResultCode.Success, Msg_AddGroup); } catch (Exception ex) { LogHelper.LogError(Msg_AddGroup, ex); rst = OptResult.Build(ResultCode.DbError, Msg_AddGroup); } return(rst); }
//公共方法 /// <summary> /// 注册一卡通账户 /// </summary> /// <param name="card"></param> /// <returns></returns> public OptResult Register(CardInfo newCard) { OptResult rst = null; var operation = CardOperation.Reg; var optDesc = operation.GetDescription(); PredicateGroup pg = new PredicateGroup { Operator = GroupOperator.Or, Predicates = new List <IPredicate>() }; pg.Predicates.Add(Predicates.Field <CardInfo>(c => c.card_idcard, Operator.Eq, newCard.card_idcard)); pg.Predicates.Add(Predicates.Field <CardInfo>(c => c.card_number, Operator.Eq, newCard.card_number)); pg.Predicates.Add(Predicates.Field <CardInfo>(c => c.card_phone, Operator.Eq, newCard.card_phone)); var card = _cardInfoRep.GetList(pg).FirstOrDefault(); if (card != null) { //1、身份证号是否已存在 if (card.card_idcard.Equals(newCard.card_idcard)) { rst = OptResult.Build(ResultCode.DataRepeat, string.Format("{0}——创建本地一卡通账户失败,身份证号已存在!", optDesc)); return(rst); } //2、一卡通号是否已存在 if (card.card_number.Equals(newCard.card_number)) { rst = OptResult.Build(ResultCode.DataRepeat, string.Format("{0}——创建本地一卡通账户失败,一卡通号已存在!", optDesc)); return(rst); } //3、手机号号是否已存在 if (card.card_phone.Equals(newCard.card_phone)) { rst = OptResult.Build(ResultCode.DataRepeat, string.Format("{0}——创建本地一卡通账户失败,手机号已存在!", optDesc)); return(rst); } } //4、创建 //主键 if (string.IsNullOrEmpty(newCard.card_id)) { newCard.card_id = GuidExtension.GetOne(); } //默认状态 newCard.card_state = CardState.Normal.ToString(); //新增一卡通数据 var cardRecord = new CardRecord { rec_id = GuidExtension.GetOne(), rec_number = newCard.card_number, rec_username = newCard.card_username, rec_idcard = newCard.card_idcard, rec_type = operation.ToString(), rec_time = DateTime.Now, rec_operator = newCard.card_creator, rec_remark = optDesc }; var tran = _cardInfoRep.Begin(); try { var val = _cardInfoRep.Insert(newCard, tran); //新增操作记录 val = _cardRecordRep.Insert(cardRecord, tran); tran.Commit(); rst = OptResult.Build(ResultCode.Success, optDesc); } catch (Exception ex) { //这里不用rollback了,因为仓储层已处理 //tran.Rollback(); LogHelper.LogError(optDesc, ex); rst = OptResult.Build(ResultCode.DbError, optDesc); } return(rst); }
public override void InitializeAuditInfoEntity(AuditInfoEntity auditInfoEntity) { ((AuditInfoEntity)auditInfoEntity).Id = GuidExtension.NewSequentialGuid(); }
/// <summary> /// 付款 /// </summary> /// <param name="pay"></param> /// <returns></returns> public OptResult Pay(PayEntity pay) { OptResult rst = null; var operation = CardOperation.Pay; var optDesc = operation.GetDescription(); if (pay == null) { rst = OptResult.Build(ResultCode.ParamError, optDesc + "——参数不能为空!"); return(rst); } string msg = string.Empty; if (!pay.Check(out msg)) { rst = OptResult.Build(ResultCode.ParamError, string.Format("{0}——{1}!", optDesc, msg)); return(rst); } //1、账户是否存在 var card = GetByIdcard(pay.idcard); if (card == null) { rst = OptResult.Build(ResultCode.DataNotFound, string.Format("{0}——指定身份证号{1}的账户不存在!", optDesc, pay.idcard)); return(rst); } //2、如果一卡通号存在,看是否和身份证号对应 if (!string.IsNullOrEmpty(pay.number) && !string.Equals(card.card_number, pay.number)) { rst = OptResult.Build(ResultCode.ParamError, string.Format("{0}——身份证号{1}与一卡通号{2}不匹配!", optDesc, pay.idcard, pay.number)); return(rst); } //3、一卡通状态是否正常 if (card.State != CardState.Normal) { rst = OptResult.Build(ResultCode.ParamError, string.Format("{0}——一卡通状态异常[{1}]!", optDesc, card.State.GetDescription())); return(rst); } //4、余额是否充足 if (pay.amount > card.card_govmoney + card.card_mymoney) { rst = OptResult.Build(ResultCode.ParamError, string.Format("{0}——余额不足!", optDesc)); return(rst); } //5、是否已经支付过(该一卡通和订单号下,存在"支付"流水或"退款"流水) var pg = new PredicateGroup { Operator = GroupOperator.And, Predicates = new List <IPredicate>() }; pg.Predicates.Add(Predicates.Field <CardBill>(b => b.bill_idcard, Operator.Eq, card.card_idcard)); pg.Predicates.Add(Predicates.Field <CardBill>(b => b.bill_order, Operator.Eq, pay.order)); pg.Predicates.Add(Predicates.Field <CardBill>(b => b.bill_type, Operator.Eq, new string[] { CardOperation.Pay.ToString(), CardOperation.Refund.ToString() })); var count = _cardBillRep.Count(pg); if (count > 0) { //已付款或退款 rst = OptResult.Build(ResultCode.OptRepeat, optDesc + "——已付款或退款,不能再次支付!"); return(rst); } //6、支付 /* * 消费扣费逻辑: * 优先扣除gov:if pay > govnow,govchanged=govnow,govnew=0;mychanged=pay-govnow,mynew=mynow-mychanged; * else govchanged=pay,govnew=govnow-govchanged;mychanged=0,mynew=mynow; * 优先扣除my: if pay > mynow, mychanged=mynow,mynew=0;govchanged=pay-mynow,govnew=govnow-govchanged; * else mychanged=pay,mynew=mynow-mychanged;govchanged=0,govnew=govnow; * 1)更新card_info, * 2)新增操作记录,type:付款 * 3)新增一卡通流水,type:付款 * 注:扣费时,变动额为负数 */ decimal govnew, govchanged, mynew, mychanged; if (pay.priority == MoneyEnum.gov) { if (pay.amount > card.card_govmoney) { govchanged = -card.card_govmoney; govnew = 0; mychanged = -(pay.amount - card.card_govmoney); mynew = card.card_mymoney + mychanged;//因为mychanged是负数 } else { govchanged = -pay.amount; govnew = card.card_govmoney - pay.amount; mychanged = 0; mynew = card.card_mymoney; } } else { if (pay.amount > card.card_mymoney) { mychanged = -card.card_mymoney; mynew = 0; govchanged = -(pay.amount - card.card_mymoney); govnew = card.card_govmoney + govchanged;//因为govchanged是负数 } else { mychanged = -pay.amount; mynew = card.card_mymoney - pay.amount; govchanged = 0; govnew = card.card_govmoney; } } // var rec_id = GuidExtension.GetOne();//操作记录id DateTime optTime = DateTime.Now; var cardRecord = new CardRecord { rec_id = rec_id, rec_number = card.card_number, rec_idcard = card.card_idcard, rec_type = operation.ToString(), rec_time = optTime, rec_username = card.card_username, rec_remark = string.Format("付款金额:{0}", pay.amount), rec_operator = pay.opt }; var cardBill = new CardBill { bill_id = GuidExtension.GetOne(), bill_number = card.card_number, bill_idcard = card.card_idcard, bill_agoall = card.card_govmoney + card.card_mymoney, bill_agogov = card.card_govmoney, bill_agomy = card.card_mymoney, bill_changegov = govchanged, bill_changemy = mychanged, bill_nowall = mynew + govnew, bill_nowgov = govnew, bill_nowmy = mynew, bill_type = operation.ToString(), bill_time = optTime, bill_order = pay.order, bill_src = pay.src, bill_record = rec_id, bill_remark = pay.remark }; var tran = base.Begin(); try { // count = _cardInfoRep.UpdateBySqlName(SqlName_Update, new { card_govmoney = govnew, card_mymoney = mynew, card_modifier = pay.opt, card_modifytime = optTime, card_idcard = pay.idcard }, new string[] { "card_govmoney", "card_mymoney", "card_modifier", "card_modifytime" }, tran); if (count < 1) { tran.Rollback(); rst = OptResult.Build(ResultCode.Fail, optDesc + "——未知错误!"); return(rst); } // _cardRecordRep.Insert(cardRecord); // _cardBillRep.Insert(cardBill); tran.Commit(); rst = OptResult.Build(ResultCode.Success, optDesc + "——idcard:" + pay.idcard); } catch (Exception ex) { LogHelper.LogError(optDesc, ex); rst = OptResult.Build(ResultCode.DbError, optDesc); } return(rst); }
private static void DoTestFromStringBase64url(string i, string e) { var g = new Guid(e); Assert.AreEqual(g, GuidExtension.FromStringBase64url(i)); }
/// <summary> /// 变更手机号 /// </summary> /// <param name="idcard"></param> /// <param name="newPhone"></param> /// <param name="opt"></param> /// <returns></returns> public OptResult ChangePhone(string idcard, string newPhone, string opt) { OptResult rst = null; var operation = CardOperation.ChgPhone; var optDesc = operation.GetDescription(); //1、指定身份证号账户是否存在 var card = GetByIdcard(idcard); if (card == null) { rst = OptResult.Build(ResultCode.DataNotFound, string.Format("{0}——指定身份证号{1}的账户不存在!", optDesc, idcard)); return(rst); } //2、手机号是否已存在 var count = _cardInfoRep.Count(Predicates.Field <CardInfo>(c => c.card_phone, Operator.Eq, newPhone)); if (count > 0) { rst = OptResult.Build(ResultCode.DataNotFound, string.Format("{0}——手机号{1}已存在!", optDesc, newPhone)); return(rst); } //3、数据库操作 var optTime = DateTime.Now; var cardRecord = new CardRecord { rec_id = GuidExtension.GetOne(), rec_number = card.card_number, rec_username = card.card_username, rec_idcard = idcard, rec_type = operation.ToString(), rec_time = optTime, rec_operator = opt, rec_remark = string.Format("手机号,变更前:{0},变更后:{1}", card.card_phone, newPhone) }; var tran = _cardInfoRep.Begin(); try { count = _cardInfoRep.UpdateBySqlName(SqlName_Update, new { card_phone = newPhone, card_idcard = idcard, card_modifier = opt, card_modifytime = optTime }, new string[] { "card_phone", "card_modifier", "card_modifytime" }, tran); if (count < 1) { tran.Rollback(); rst = OptResult.Build(ResultCode.Fail, optDesc + "——未知错误!"); return(rst); } //添加操作记录 var val = _cardRecordRep.Insert(cardRecord, tran); rst = OptResult.Build(ResultCode.Success, optDesc); tran.Commit(); } catch (Exception ex) { LogHelper.LogError(optDesc, ex); rst = OptResult.Build(ResultCode.DbError, optDesc); } return(rst); }
/// <summary> /// 挂失 /// </summary> /// <param name="idcard"></param> /// <param name="opt"></param> /// <returns></returns> public OptResult ReportLoss(string idcard, string opt) { OptResult rst = null; var operation = CardOperation.RepLoss; var optDesc = operation.GetDescription(); //1、账户是否存在 var card = GetByIdcard(idcard); if (card == null) { rst = OptResult.Build(ResultCode.DataNotFound, string.Format("{0}——指定身份证号{1}的账户不存在!", optDesc, idcard)); return(rst); } //2、状态是否“正常” if (card.State != CardState.Normal) { rst = OptResult.Build(ResultCode.Fail, string.Format("{0}——一卡通账户状态异常[{1}]!", optDesc, card.State.GetDescription())); return(rst); } var optTime = DateTime.Now; var cardRecord = new CardRecord { rec_id = GuidExtension.GetOne(), rec_number = card.card_number, rec_username = card.card_username, rec_idcard = idcard, rec_type = operation.ToString(), rec_time = optTime, rec_operator = opt, rec_remark = optDesc }; // var tran = base.Begin(); try { var count = _cardInfoRep.UpdateBySqlName(SqlName_Update, new { card_state = CardState.Loss.ToString(), card_idcard = idcard, card_modifier = opt, card_modifytime = optTime }, new string[] { "card_state", "card_modifier", "card_modifytime" }, tran); if (count < 1) { tran.Rollback(); rst = OptResult.Build(ResultCode.Fail, optDesc + "失败,未知错误!"); return(rst); } _cardRecordRep.Insert(cardRecord, tran); tran.Commit(); rst = OptResult.Build(ResultCode.Success, optDesc); } catch (Exception ex) { LogHelper.LogError(optDesc, ex); rst = OptResult.Build(ResultCode.DbError, optDesc); } return(rst); }
//私有方法 private OptResult CloseDownSingle(SingleProcessParam param) { OptResult rst = null; var operation = CardOperation.CloseDwn; var optDesc = operation.GetDescription() + "(单账户)"; if (param.card == null) { rst = OptResult.Build(ResultCode.DataNotFound, string.Format("{0}——一卡通账户不存在!", optDesc)); return(rst); } if (param.card.State != CardState.Normal)//暂定只有正常状态的账户才能注销 { rst = OptResult.Build(ResultCode.Fail, string.Format("{0}——身份证号为{1}的账户状态为{2},不能注销!", optDesc, param.card.card_idcard, param.card.State.GetDescription())); return(rst); } //2、数据库处理 /* * 流程: * 1)更新card_info * 2)新增操作记录,type:注销 * 3)新增一卡通流水 */ var rec_id = GuidExtension.GetOne(); var optTime = DateTime.Now; var cardRecord = new CardRecord { rec_id = rec_id, rec_number = param.card.card_number, rec_username = param.card.card_username, rec_idcard = param.card.card_idcard, rec_type = operation.ToString(), rec_time = optTime, rec_operator = param.opt, rec_remark = string.Format("{0}——本次变动额:{1}", optDesc, param.card.card_govmoney + param.card.card_mymoney) }; var cardBill = new CardBill { bill_id = Guid.NewGuid().ToString("N"), bill_number = param.card.card_number, bill_idcard = param.card.card_idcard, bill_agoall = param.card.card_govmoney + param.card.card_mymoney, bill_agogov = param.card.card_govmoney, bill_agomy = param.card.card_mymoney, bill_changegov = -param.card.card_govmoney, bill_changemy = -param.card.card_mymoney, bill_nowall = 0, bill_nowgov = 0, bill_nowmy = 0, bill_type = operation.ToString(), bill_time = optTime, bill_record = rec_id, bill_remark = optDesc }; var innerTran = param.tran; if (innerTran == null) { innerTran = _cardInfoRep.Begin(); } try { //1 var count = _cardInfoRep.UpdateBySqlName(SqlName_Update, new { card_govmoney = 0, card_mymoney = 0, card_idcard = param.card.card_idcard, card_state = CardState.Off.ToString(), card_modifier = param.opt, card_modifytime = optTime }, new string[] { "card_govmoney", "card_mymoney", "card_state", "card_modifier", "card_modifytime" }, innerTran); if (count < 1) { if (param.tran == null) { //外部事务为null,说明是本方法内部事务,这里自行回滚 innerTran.Rollback(); } rst = OptResult.Build(ResultCode.Fail, string.Format("{0}——idcard={1}", optDesc, param.card.card_idcard)); return(rst); } //2 _cardRecordRep.Insert(cardRecord, innerTran); //3 _cardBillRep.Insert(cardBill, innerTran); if (param.tran == null) { //外部事务为null,说明是本方法内部事务,这里自行提交 innerTran.Commit(); } rst = OptResult.Build(ResultCode.Success, string.Format("{0}——idcard={1}", optDesc, param.card.card_idcard)); } catch (Exception ex) { LogHelper.LogError(optDesc, ex); rst = OptResult.Build(ResultCode.DbError, optDesc); return(rst); } return(rst); }
//私有方法 /// <summary> /// 设置单个一卡通账户的金额 /// 关于事务: /// * 1、如果从外部传递事务,则事务操作也由调用方处理 /// * 2、如果外部没有传入事务,则内部起一个事务,并自行负责事务操作 /// </summary> /// <param name="card"></param> /// </param> /// <returns></returns> private OptResult SetMoneySingle(SetMoneySingleProcessParam param) { OptResult rst = null; if (param == null) { rst = OptResult.Build(ResultCode.ParamError, "补贴/充值——参数错误!"); return(rst); } var operation = param.moneyType == MoneyEnum.gov ? CardOperation.SetGov : CardOperation.SetMy; var optDesc = operation.GetDescription() + "(单账户)"; if (param.card == null) { rst = OptResult.Build(ResultCode.DataNotFound, string.Format("{0}[{1}]——一卡通账户不存在!", optDesc, param.moneyType.GetDescription())); return(rst); } //2、数据库处理 /* * 流程: * 1)更新card_info * 2)新增操作记录,type:补贴、充值 * 3)新增一卡通流水 */ var rec_id = GuidExtension.GetOne(); var optTime = DateTime.Now; var cardRecord = new CardRecord { rec_id = rec_id, rec_number = param.card.card_number, rec_username = param.card.card_username, rec_idcard = param.card.card_idcard, rec_type = operation.ToString(), rec_time = optTime, rec_operator = param.opt, rec_remark = string.Format("{0},本次变动额:{1}", optDesc, param.money) }; //政府补贴金时,不保留政府补贴现有余额,直接更新成新的金额 var cardBill = new CardBill { bill_id = Guid.NewGuid().ToString("N"), bill_number = param.card.card_number, bill_idcard = param.card.card_idcard, bill_agoall = param.card.card_govmoney + param.card.card_mymoney, bill_agogov = param.card.card_govmoney, bill_agomy = param.card.card_mymoney, bill_changegov = param.moneyType == MoneyEnum.gov ? (param.money - param.card.card_govmoney) : 0, bill_changemy = param.moneyType == MoneyEnum.my ? param.money : 0, bill_nowall = param.moneyType == MoneyEnum.gov ? (param.money + param.card.card_mymoney) : (param.card.card_govmoney + param.card.card_mymoney + param.money), bill_nowgov = param.moneyType == MoneyEnum.gov ? param.money : param.card.card_govmoney, bill_nowmy = param.moneyType == MoneyEnum.my ? (param.card.card_mymoney + param.money) : param.card.card_mymoney, bill_type = operation.ToString(), bill_time = optTime, bill_record = rec_id, bill_remark = optDesc }; var innerTran = param.tran; if (innerTran == null) { innerTran = _cardInfoRep.Begin(); } try { var count = 0; //1 if (param.moneyType == MoneyEnum.gov) { count = _cardInfoRep.UpdateBySqlName(SqlName_Update, new { card_govmoney = param.money, card_idcard = param.card.card_idcard, card_modifier = param.opt, card_modifytime = optTime }, new string[] { "card_govmoney", "card_modifier", "card_modifytime" }, innerTran); } else { count = _cardInfoRep.UpdateBySqlName(SqlName_Update, new { card_mymoney = param.card.card_mymoney + param.money, card_idcard = param.card.card_idcard, card_modifier = param.opt, card_modifytime = optTime }, new string[] { "card_mymoney", "card_modifier", "card_modifytime" }, innerTran); } if (count < 1) { if (param.tran == null) { //外部事务为null,说明是本方法内部事务,这里自行回滚 innerTran.Rollback(); } rst = OptResult.Build(ResultCode.Fail, string.Format("{0}——idcard={1}", optDesc, param.card.card_idcard)); return(rst); } //2 _cardRecordRep.Insert(cardRecord, innerTran); //3 _cardBillRep.Insert(cardBill, innerTran); if (param.tran == null) { //外部事务为null,说明是本方法内部事务,这里自行提交 innerTran.Commit(); } rst = OptResult.Build(ResultCode.Success, string.Format("{0}——idcard={1}", optDesc, param.card.card_idcard)); } catch (Exception ex) { LogHelper.LogError(optDesc, ex); rst = OptResult.Build(ResultCode.DbError, optDesc); return(rst); } return(rst); }
private OptResult RecoverSingle(SingleProcessParam param) { OptResult rst = null; var operation = CardOperation.Recover; var optDesc = operation.GetDescription() + "(单账户)"; if (param.card == null) { rst = OptResult.Build(ResultCode.DataNotFound, string.Format("{0}——一卡通账户不存在!", optDesc)); return(rst); } if (param.card.State == CardState.Normal)//"正常"状态的账户无需恢复 { rst = OptResult.Build(ResultCode.Success, string.Format("{0}——身份证号为{1}的账户状态为{2},无需恢复!", optDesc, param.card.card_idcard, param.card.State.GetDescription())); return(rst); } //2、数据库处理 /* * 流程: * 1)更新card_info * 2)新增操作记录,type:注销 * 3)新增一卡通流水 */ var rec_id = GuidExtension.GetOne(); var optTime = DateTime.Now; var cardRecord = new CardRecord { rec_id = rec_id, rec_number = param.card.card_number, rec_username = param.card.card_username, rec_idcard = param.card.card_idcard, rec_type = operation.ToString(), rec_time = optTime, rec_operator = param.opt, rec_remark = optDesc }; var innerTran = param.tran; if (innerTran == null) { innerTran = _cardInfoRep.Begin(); } try { //1 var count = _cardInfoRep.UpdateBySqlName(SqlName_Update, new { card_idcard = param.card.card_idcard, card_state = CardState.Normal.ToString(), card_modifier = param.opt, card_modifytime = optTime }, new string[] { "card_state", "card_modifier", "card_modifytime" }, innerTran); if (count < 1) { if (param.tran == null) { //外部事务为null,说明是本方法内部事务,这里自行回滚 innerTran.Rollback(); } rst = OptResult.Build(ResultCode.Fail, string.Format("{0}——idcard={1}", optDesc, param.card.card_idcard)); return(rst); } //2 _cardRecordRep.Insert(cardRecord, innerTran); if (param.tran == null) { //外部事务为null,说明是本方法内部事务,这里自行提交 innerTran.Commit(); } rst = OptResult.Build(ResultCode.Success, string.Format("{0}——idcard={1}", optDesc, param.card.card_idcard)); } catch (Exception ex) { LogHelper.LogError(optDesc, ex); rst = OptResult.Build(ResultCode.DbError, optDesc); return(rst); } return(rst); }
/// <summary> /// 退款 /// </summary> /// <param name="refund"></param> /// <returns></returns> public OptResult Refound(RefundEntity refund) { OptResult rst = null; var operation = CardOperation.Refund; var optDesc = operation.GetDescription(); if (refund == null) { rst = OptResult.Build(ResultCode.ParamError, optDesc + "——参数不能为空!"); return(rst); } string msg = string.Empty; if (!refund.Check(out msg)) { rst = OptResult.Build(ResultCode.ParamError, string.Format("{0}——{1}!", optDesc, msg)); return(rst); } //1、账户是否存在(获取账户信息) var card = GetByIdcard(refund.idcard); if (card == null) { rst = OptResult.Build(ResultCode.DataNotFound, string.Format("{0}——指定身份证号{1}的账户不存在!", optDesc, refund.idcard)); return(rst); } //2、账户状态 if (card.State != CardState.Normal) { rst = OptResult.Build(ResultCode.Fail, string.Format("{0}——一卡通状态异常[{1}]!", optDesc, card.State.GetDescription())); return(rst); } //3、指定订单是否已付款并且未退款(获取付款流水信息) PredicateGroup pg = new PredicateGroup { Operator = GroupOperator.And, Predicates = new List <IPredicate>() }; pg.Predicates.Add(Predicates.Field <CardBill>(b => b.bill_idcard, Operator.Eq, card.card_idcard)); pg.Predicates.Add(Predicates.Field <CardBill>(b => b.bill_order, Operator.Eq, refund.order)); var payTypeWhere = Predicates.Field <CardBill>(b => b.bill_type, Operator.Eq, CardOperation.Pay.ToString()); pg.Predicates.Add(payTypeWhere); var payBill = _cardBillRep.GetList(pg).FirstOrDefault(); if (payBill == null) { rst = OptResult.Build(ResultCode.DataNotFound, string.Format("{0}——指定身份证号{1}的订单{2}尚未支付!", optDesc, card.card_idcard, refund.order)); return(rst); } pg.Predicates.Remove(payTypeWhere); pg.Predicates.Add(Predicates.Field <CardBill>(b => b.bill_type, Operator.Eq, "退款")); var count = _cardBillRep.Count(pg); if (count > 0) { rst = OptResult.Build(ResultCode.OptRepeat, string.Format("{0}——指定身份证号{1}的订单{2}已退款!", optDesc, card.card_idcard, refund.order)); return(rst); } //4、数据库操作 /* * 退款流程 * 1)更新一卡通基本信息 * gov_new=gov_now+bill.gov_change,my_new=my_now+bill.my_change * 2)新增操作记录,type:退款 * 3)新增流水记录,type:退款 */ decimal govchanged = -payBill.bill_changegov; //求反 decimal mychanged = -payBill.bill_changemy; //求反 decimal govnew = card.card_govmoney + govchanged; decimal mynew = card.card_mymoney + mychanged; var rec_id = GuidExtension.GetOne(); var optTime = DateTime.Now; var cardRecord = new CardRecord { rec_id = rec_id, rec_number = card.card_number, rec_idcard = card.card_idcard, rec_type = operation.ToString(), rec_time = optTime, rec_username = card.card_username, rec_remark = string.Format("退款金额:{0}", govchanged + mychanged), rec_operator = refund.opt }; var cardBill = new CardBill { bill_id = GuidExtension.GetOne(), bill_number = card.card_number, bill_idcard = card.card_idcard, bill_agoall = card.card_govmoney + card.card_mymoney, bill_agogov = card.card_govmoney, bill_agomy = card.card_mymoney, bill_changegov = govchanged, bill_changemy = mychanged, bill_nowall = govnew + mynew, bill_nowgov = govnew, bill_nowmy = mynew, bill_type = operation.ToString(), bill_time = optTime, bill_order = refund.order, bill_src = refund.src, bill_record = rec_id, bill_remark = refund.remark }; // var tran = base.Begin(); try { // count = _cardInfoRep.UpdateBySqlName(SqlName_Update, new { card_govmoney = govnew, card_mymoney = mynew, card_modifier = refund.opt, card_modifytime = optTime, card_idcard = refund.idcard }, new string[] { "card_govmoney", "card_mymoney", "card_modifier", "card_modifytime" }, tran); if (count < 1) { tran.Rollback(); rst = OptResult.Build(ResultCode.Fail, optDesc + "——未知错误!"); return(rst); } // _cardRecordRep.Insert(cardRecord); // _cardBillRep.Insert(cardBill); tran.Commit(); rst = OptResult.Build(ResultCode.Success, string.Format("{0}——身份证号{1},订单号{2}", optDesc, refund.idcard, refund.order)); } catch (Exception ex) { LogHelper.LogError(optDesc, ex); rst = OptResult.Build(ResultCode.DbError, optDesc); } return(rst); }