public ReturnValueInfo InsertRecord(SystemAccountDetail_sad_Info infoObject)
 {
     ReturnValueInfo rvInfo = new ReturnValueInfo();
     try
     {
         if (infoObject != null)
         {
             using (SIOTSDB_HHZXDataContext db = new SIOTSDB_HHZXDataContext())
             {
                 SystemAccountDetail_sad record = Common.General.CopyObjectValue<SystemAccountDetail_sad_Info, SystemAccountDetail_sad>(infoObject);
                 if (record != null)
                 {
                     db.SystemAccountDetail_sad.InsertOnSubmit(record);
                     db.SubmitChanges();
                     rvInfo.boolValue = true;
                     rvInfo.ValueObject = infoObject;
                 }
                 else
                 {
                     rvInfo.messageText = "TransEntity is null";
                 }
             }
         }
         else
         {
             rvInfo.messageText = Common.DefineConstantValue.SystemMessageText.strMessageText_E_ObjectNull;
         }
     }
     catch (Exception ex)
     {
         rvInfo.isError = true;
         rvInfo.messageText = ex.Message;
     }
     return rvInfo;
 }
        public ReturnValueInfo UpdateRecord(SystemAccountDetail_sad_Info infoObject)
        {
            ReturnValueInfo rvInfo = new ReturnValueInfo();
            try
            {
                if (infoObject != null)
                {
                    using (SIOTSDB_HHZXDataContext db = new SIOTSDB_HHZXDataContext())
                    {
                        SystemAccountDetail_sad record = db.SystemAccountDetail_sad.Where(x => x.sad_cRecordID == infoObject.sad_cRecordID).FirstOrDefault();

                        if (record != null)
                        {
                            if (infoObject.sad_cConsumeID != null)
                                record.sad_cConsumeID = infoObject.sad_cConsumeID.Value;
                            record.sad_cFLowMoney = infoObject.sad_cFLowMoney;
                            record.sad_cFlowType = infoObject.sad_cFlowType;
                            record.sad_cOpt = infoObject.sad_cOpt;
                            record.sad_dOptTime = infoObject.sad_dOptTime;

                            db.SubmitChanges();
                            rvInfo.boolValue = true;
                        }
                        else
                        {
                            rvInfo.messageText = "GetEntity is null";
                        }
                    }
                }
                else
                {
                    rvInfo.messageText = Common.DefineConstantValue.SystemMessageText.strMessageText_E_ObjectNull;
                }
            }
            catch (Exception ex)
            {
                rvInfo.isError = true;
                rvInfo.messageText = ex.Message;
            }
            return rvInfo;
        }
        public ReturnValueInfo Save(IModelObject itemEntity, DefineConstantValue.EditStateEnum EditMode)
        {
            ReturnValueInfo rvInfo = new ReturnValueInfo();
            try
            {
                RechargeRecord_rcr_Info sourceInfo = itemEntity as RechargeRecord_rcr_Info;
                if (sourceInfo == null)
                {
                    rvInfo.messageText = DefineConstantValue.SystemMessageText.strMessageText_E_ObjectNull;
                    rvInfo.isError = true;
                    return rvInfo;
                }

                //检查充值用户的账户ID,如还未创建账户,则自动创建,如创建失败,则不给予充值
                Guid? accountID = GetAccountID(sourceInfo);
                if (accountID == null)
                {
                    rvInfo.messageText = "用户账户信息缺失,自动添加账户失败。";
                    rvInfo.isError = true;
                    return rvInfo;
                }

                //判断是否为需要录入用户账户中的记录
                bool isUserDetail = IsUserAccountRecord(sourceInfo);
                // 判断是否为需要录入到系统账户中的记录
                bool isSysDetail = IsSysAccountRecord(sourceInfo);

                switch (EditMode)
                {
                    case DefineConstantValue.EditStateEnum.OE_Insert:
                        {
                            /*插入充值记录时,判断是否需要同步一条卡用户账户资金流记录及系统账户资金流记录,
                             * 如需要,则在新增充值记录后同步插入一条资金流记录及系统账户资金流记录,
                             * 如插入失败,则需要在运行资金同步服务时重新新增*/
                            #region Insert Record

                            sourceInfo.rcr_dRechargeTime = DateTime.Now;
                            sourceInfo.rcr_dLastDate = sourceInfo.rcr_dRechargeTime;

                            rvInfo = this._IRechargeRecordDA.InsertRecord(sourceInfo);

                            if (rvInfo.boolValue && !rvInfo.isError)
                            {
                                if (isUserDetail)
                                {
                                    //同步插入一条用户资金流动记录
                                    #region 同步用户资金流动记录

                                    CardUserAccountDetail_cuad_Info accountDetail = new CardUserAccountDetail_cuad_Info();
                                    accountDetail.cuad_cConsumeID = sourceInfo.rcr_cRecordID;
                                    accountDetail.cuad_cCUAID = accountID.Value;
                                    accountDetail.cuad_fFlowMoney = sourceInfo.rcr_fRechargeMoney;
                                    accountDetail.cuad_cFlowType = sourceInfo.rcr_cRechargeType;
                                    accountDetail.cuad_cOpt = sourceInfo.rcr_cAdd;
                                    accountDetail.cuad_cRecordID = Guid.NewGuid();
                                    accountDetail.cuad_dOptTime = sourceInfo.rcr_dRechargeTime;
                                    ReturnValueInfo res = this._ICardUserAccountDetailDA.InsertRecord(accountDetail);
                                    rvInfo.messageText += res.messageText;

                                    #endregion
                                }
                                if (isSysDetail)
                                {
                                    //同步插入一条系统资金现金流
                                    #region 同步系统资金流动记录

                                    SystemAccountDetail_sad_Info sysAccountInfo = new SystemAccountDetail_sad_Info();
                                    sysAccountInfo.sad_cConsumeID = sourceInfo.rcr_cRecordID;
                                    sysAccountInfo.sad_cDesc = string.Empty;
                                    sysAccountInfo.sad_cFLowMoney = sourceInfo.rcr_fRechargeMoney;
                                    sysAccountInfo.sad_cFlowType = sourceInfo.rcr_cRechargeType;
                                    sysAccountInfo.sad_cOpt = sourceInfo.rcr_cAdd;
                                    sysAccountInfo.sad_cRecordID = Guid.NewGuid();
                                    sysAccountInfo.sad_dOptTime = sourceInfo.rcr_dRechargeTime;
                                    ReturnValueInfo res = this._ISystemAccountDetailDA.InsertRecord(sysAccountInfo);
                                    rvInfo.messageText += res.messageText;

                                    #endregion
                                }
                            }
                            break;

                            #endregion
                        }
                    case DefineConstantValue.EditStateEnum.OE_Update:
                        {
                            /*更新充值记录时,需检查是否有相应的资金流记录,
                             * 如有,则需同步更新
                             */
                            #region Update Record

                            sourceInfo.rcr_dLastDate = DateTime.Now;

                            rvInfo = this._IRechargeRecordDA.UpdateRecord(sourceInfo);

                            if (rvInfo.boolValue && !rvInfo.isError)
                            {
                                if (isUserDetail)
                                {
                                    //同步更新对应用户资金流记录
                                    #region 同步用户资金流记录

                                    CardUserAccountDetail_cuad_Info accountDetail = this._ICardUserAccountDetailDA.SearchRecords(new CardUserAccountDetail_cuad_Info() { cuad_cConsumeID = sourceInfo.rcr_cRecordID }).FirstOrDefault();
                                    if (accountDetail == null)
                                    {
                                        //如无对应资金流记录,则添加
                                        accountDetail = new CardUserAccountDetail_cuad_Info();
                                        accountDetail.cuad_cConsumeID = sourceInfo.rcr_cRecordID;
                                        accountDetail.cuad_cCUAID = accountID.Value;
                                        accountDetail.cuad_fFlowMoney = sourceInfo.rcr_fRechargeMoney;
                                        accountDetail.cuad_cFlowType = sourceInfo.rcr_cRechargeType;
                                        accountDetail.cuad_cOpt = sourceInfo.rcr_cAdd;
                                        accountDetail.cuad_cRecordID = Guid.NewGuid();
                                        accountDetail.cuad_dOptTime = sourceInfo.rcr_dRechargeTime;
                                        ReturnValueInfo res = this._ICardUserAccountDetailDA.InsertRecord(accountDetail);
                                        rvInfo.messageText += res.messageText;
                                    }
                                    else
                                    {
                                        //如存在对应资金流记录,则更新金额、流类型、操作人、最后操作时间
                                        accountDetail.cuad_cFlowType = sourceInfo.rcr_cRechargeType;
                                        accountDetail.cuad_cOpt = sourceInfo.rcr_cLast;
                                        accountDetail.cuad_dOptTime = sourceInfo.rcr_dLastDate;
                                        accountDetail.cuad_fFlowMoney = sourceInfo.rcr_fRechargeMoney;
                                        ReturnValueInfo res = this._ICardUserAccountDetailDA.UpdateRecord(accountDetail);
                                        rvInfo.messageText += res.messageText;
                                    }

                                    #endregion
                                }
                                if (isSysDetail)
                                {
                                    //同步更新对应系统资金流记录
                                    #region 同步系统资金流记录

                                    SystemAccountDetail_sad_Info sysAccountInfo = this._ISystemAccountDetailDA.SearchRecords(new SystemAccountDetail_sad_Info() { sad_cConsumeID = sourceInfo.rcr_cRecordID }).FirstOrDefault();
                                    if (sysAccountInfo == null)
                                    {
                                        sysAccountInfo.sad_cConsumeID = sourceInfo.rcr_cRecordID;
                                        sysAccountInfo.sad_cDesc = string.Empty;
                                        sysAccountInfo.sad_cFLowMoney = sourceInfo.rcr_fRechargeMoney;
                                        sysAccountInfo.sad_cFlowType = sourceInfo.rcr_cRechargeType;
                                        sysAccountInfo.sad_cOpt = sourceInfo.rcr_cAdd;
                                        sysAccountInfo.sad_cRecordID = Guid.NewGuid();
                                        sysAccountInfo.sad_dOptTime = sourceInfo.rcr_dRechargeTime;
                                        ReturnValueInfo res = this._ISystemAccountDetailDA.InsertRecord(sysAccountInfo);
                                        rvInfo.messageText += res.messageText;
                                    }
                                    else
                                    {
                                        sysAccountInfo.sad_cDesc = string.Empty;
                                        sysAccountInfo.sad_cFLowMoney = sourceInfo.rcr_fRechargeMoney;
                                        sysAccountInfo.sad_cFlowType = sourceInfo.rcr_cRechargeType;
                                        sysAccountInfo.sad_cOpt = sourceInfo.rcr_cAdd;
                                        sysAccountInfo.sad_cRecordID = Guid.NewGuid();
                                        sysAccountInfo.sad_dOptTime = sourceInfo.rcr_dRechargeTime;
                                        ReturnValueInfo res = this._ISystemAccountDetailDA.UpdateRecord(sysAccountInfo);
                                        rvInfo.messageText += res.messageText;
                                    }

                                    #endregion
                                }
                            }
                            break;

                            #endregion
                        }
                    case DefineConstantValue.EditStateEnum.OE_Delete:
                        {
                            /*需要删除充值记录时,不能做真正的删除记录操作,
                             * 只能添加一条交易金额为原金额*1的充值记录作为充数只用,充值类型也相应为对冲类型
                             * 同时也需要检查是否有资金流记录,进行同步操作
                             */
                            #region Delete Record

                            RechargeRecord_rcr_Info OldRechargeInfo = this._IRechargeRecordDA.DisplayRecord(sourceInfo);
                            if (OldRechargeInfo != null)
                            {
                                //插入一条金额对冲记录代替删除原充值记录
                                RechargeRecord_rcr_Info NewRechargeInfo = new RechargeRecord_rcr_Info();
                                NewRechargeInfo.rcr_fRechargeMoney = OldRechargeInfo.rcr_fRechargeMoney * -1;
                                NewRechargeInfo.rcr_dRechargeTime = DateTime.Now;
                                NewRechargeInfo.rcr_cUserID = OldRechargeInfo.rcr_cUserID;
                                NewRechargeInfo.rcr_cStatus = DefineConstantValue.ConsumeMoneyFlowStatus.Finished.ToString();
                                NewRechargeInfo.rcr_cRecordID = Guid.NewGuid();
                                NewRechargeInfo.rcr_cRechargeType = DefineConstantValue.ConsumeMoneyFlowType.HedgeFund.ToString();
                                NewRechargeInfo.rcr_cLast = sourceInfo.rcr_cLast;
                                NewRechargeInfo.rcr_dLastDate = NewRechargeInfo.rcr_dRechargeTime;

                                rvInfo = this._IRechargeRecordDA.InsertRecord(NewRechargeInfo);

                                if (rvInfo.boolValue && !rvInfo.isError)
                                {
                                    if (isUserDetail)
                                    {
                                        //同步插入用户账户资金流
                                        #region 同步用户资金流记录

                                        CardUserAccountDetail_cuad_Info accountDetail = new CardUserAccountDetail_cuad_Info();
                                        accountDetail.cuad_cConsumeID = sourceInfo.rcr_cRecordID;
                                        accountDetail.cuad_cCUAID = accountID.Value;
                                        accountDetail.cuad_fFlowMoney = sourceInfo.rcr_fRechargeMoney;
                                        accountDetail.cuad_cFlowType = sourceInfo.rcr_cRechargeType;
                                        accountDetail.cuad_cOpt = sourceInfo.rcr_cAdd;
                                        accountDetail.cuad_cRecordID = Guid.NewGuid();
                                        accountDetail.cuad_dOptTime = sourceInfo.rcr_dRechargeTime;
                                        ReturnValueInfo res = this._ICardUserAccountDetailDA.InsertRecord(accountDetail);

                                        #endregion
                                    }
                                    if (isSysDetail)
                                    {
                                        //同步插入系统资金现金流
                                        #region 同步系统资金流动记录

                                        SystemAccountDetail_sad_Info sysAccountInfo = new SystemAccountDetail_sad_Info();
                                        sysAccountInfo.sad_cConsumeID = sourceInfo.rcr_cRecordID;
                                        sysAccountInfo.sad_cDesc = string.Empty;
                                        sysAccountInfo.sad_cFLowMoney = sourceInfo.rcr_fRechargeMoney;
                                        sysAccountInfo.sad_cFlowType = sourceInfo.rcr_cRechargeType;
                                        sysAccountInfo.sad_cOpt = sourceInfo.rcr_cAdd;
                                        sysAccountInfo.sad_cRecordID = Guid.NewGuid();
                                        sysAccountInfo.sad_dOptTime = sourceInfo.rcr_dRechargeTime;
                                        ReturnValueInfo res = this._ISystemAccountDetailDA.InsertRecord(sysAccountInfo);
                                        rvInfo.messageText += res.messageText;

                                        #endregion
                                    }
                                }

                            }
                            else
                            {
                                rvInfo.messageText = "找不到原充值记录。";
                                rvInfo.isError = true;
                            }

                            break;

                            #endregion
                        }
                    default:
                        break;
                }
            }
            catch (Exception ex)
            {
                rvInfo.isError = true;
                rvInfo.messageText = ex.Message;
            }
            return rvInfo;
        }