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