Beispiel #1
0
        public ReturnValueInfo ReturnCard(UserCardPair_ucp_Info infoObject)
        {
            ReturnValueInfo rvInfo = new ReturnValueInfo();
            try
            {
                if (infoObject == null)
                {
                    rvInfo.isError = true;
                    rvInfo.messageText = Common.DefineConstantValue.SystemMessageText.strMessageText_E_ObjectNull;
                    return rvInfo;
                }
                using (SIOTSDB_HHZXDataContext db = new SIOTSDB_HHZXDataContext())
                {
                    db.Connection.Open();
                    db.Transaction = db.Connection.BeginTransaction();
                    try
                    {
                        UserCardPair_ucp pairInfo = db.UserCardPair_ucp.Where(x => x.ucp_cRecordID == infoObject.ucp_cRecordID).FirstOrDefault();
                        if (pairInfo != null)
                        {
                            pairInfo.ucp_cUseStatus = Common.DefineConstantValue.ConsumeCardStatus.Returned.ToString();
                            pairInfo.ucp_dReturnTime = infoObject.ucp_dReturnTime;
                            pairInfo.ucp_cLast = infoObject.ucp_cLast;
                            pairInfo.ucp_dLastDate = infoObject.ucp_dLastDate;
                            db.SubmitChanges();

                            ConsumeCardMaster_ccm cardInfo = db.ConsumeCardMaster_ccm.Where(x => x.ccm_cCardID == infoObject.ucp_cCardID).FirstOrDefault();
                            if (cardInfo != null)
                            {
                                cardInfo.ccm_cCardState = Common.DefineConstantValue.CardUseState.NotUsed.ToString();
                                cardInfo.ccm_cLast = infoObject.ucp_cLast;
                                cardInfo.ccm_dLastDate = infoObject.ucp_dLastDate;
                                db.SubmitChanges();
                            }
                            else
                            {
                                cardInfo = new ConsumeCardMaster_ccm();
                                cardInfo.ccm_cAdd = infoObject.ucp_cLast;
                                cardInfo.ccm_cLast = infoObject.ucp_cLast;
                                cardInfo.ccm_dAddDate = infoObject.ucp_dLastDate;
                                cardInfo.ccm_dLastDate = infoObject.ucp_dLastDate;
                                cardInfo.ccm_cCardState = Common.DefineConstantValue.CardUseState.NotUsed.ToString();
                                cardInfo.ccm_lIsActive = true;
                                cardInfo.ccm_cCardID = infoObject.ucp_cCardID;
                                db.ConsumeCardMaster_ccm.InsertOnSubmit(cardInfo);
                                db.SubmitChanges();
                            }

                            db.Transaction.Commit();
                            db.Connection.Close();
                            rvInfo.boolValue = true;
                        }
                    }
                    catch (Exception exx)
                    {
                        db.Transaction.Rollback();
                        db.Connection.Close();
                        throw exx;
                    }
                }
            }
            catch (Exception ex)
            {
                rvInfo.isError = true;
                rvInfo.messageText = ex.Message;
            }
            return rvInfo;
        }
Beispiel #2
0
        public ReturnValueInfo InsertNewCard(UserCardPair_ucp_Info infoObject, decimal dCost)
        {
            ReturnValueInfo rvInfo = new ReturnValueInfo();
            try
            {
                if (infoObject == null)
                {
                    rvInfo.isError = true;
                    rvInfo.messageText = Common.DefineConstantValue.SystemMessageText.strMessageText_E_ObjectNull;
                    return rvInfo;
                }
                using (SIOTSDB_HHZXDataContext db = new SIOTSDB_HHZXDataContext())
                {
                    try
                    {
                        db.Connection.Open();
                        db.Transaction = db.Connection.BeginTransaction();

                        ConsumeCardMaster_ccm cardInfo = db.ConsumeCardMaster_ccm.Where(x => x.ccm_cCardID == infoObject.ucp_cCardID).FirstOrDefault();
                        if (cardInfo == null)
                        {
                            //如未有卡主档信息,则添加
                            cardInfo = new ConsumeCardMaster_ccm();
                            cardInfo.ccm_cCardID = infoObject.ucp_cCardID;
                            cardInfo.ccm_cCardState = Common.DefineConstantValue.CardUseState.InUse.ToString();
                            cardInfo.ccm_cAdd = infoObject.ucp_cLast;
                            cardInfo.ccm_dAddDate = DateTime.Now;
                            cardInfo.ccm_cLast = infoObject.ucp_cLast;
                            cardInfo.ccm_dLastDate = DateTime.Now;
                            cardInfo.ccm_lIsActive = true;
                            db.ConsumeCardMaster_ccm.InsertOnSubmit(cardInfo);
                        }
                        else
                        {
                            //如已有卡主档信息,则更新卡的使用状态
                            cardInfo.ccm_cCardState = Common.DefineConstantValue.CardUseState.InUse.ToString();
                            cardInfo.ccm_cLast = infoObject.ucp_cLast;
                            cardInfo.ccm_dLastDate = DateTime.Now;
                        }

                        //检查是否已发卡
                        UserCardPair_ucp pair = db.UserCardPair_ucp.Where(x => x.ucp_cCUSID == infoObject.ucp_cCUSID && x.ucp_cUseStatus == Common.DefineConstantValue.ConsumeCardStatus.Normal.ToString()).FirstOrDefault();
                        if (pair != null)
                        {
                            rvInfo.isError = true;
                            rvInfo.messageText = "本用户已发卡,现用卡号为:" + pair.ucp_iCardNo.ToString();
                            return rvInfo;
                        }

                        pair = Common.General.CopyObjectValue<UserCardPair_ucp_Info, UserCardPair_ucp>(infoObject);
                        if (pair != null)
                        {
                            pair.ucp_dAddDate = DateTime.Now;
                            pair.ucp_dLastDate = DateTime.Now;
                            db.UserCardPair_ucp.InsertOnSubmit(pair);
                            db.SubmitChanges();

                            //查看是否已经创建账户
                            CardUserAccount_cua account = db.CardUserAccount_cua.Where(x => x.cua_cCUSID == pair.ucp_cCUSID).FirstOrDefault();
                            if (account == null)
                            {
                                //如未创建账户,则自动创建
                                account = new CardUserAccount_cua();
                                account.cua_cRecordID = Guid.NewGuid();
                                account.cua_cCUSID = pair.ucp_cCUSID;
                                account.cua_fCurrentBalance = 0;
                                account.cua_fOriginalBalance = 0;
                                account.cua_dLastSyncTime = DateTime.Now;
                                account.cua_lIsActive = true;
                                account.cua_cAdd = pair.ucp_cAdd;
                                account.cua_dAddDate = DateTime.Now;
                                db.CardUserAccount_cua.InsertOnSubmit(account);
                                db.SubmitChanges();
                            }
                            decimal fFormula = -1;
                            CodeMaster_cmt codeFormula = db.CodeMaster_cmt.Where(x => x.cmt_cKey1 == Common.DefineConstantValue.EnumFormulaKey.PRECOSTFORMULA.ToString() && x.cmt_cKey2 == Common.DefineConstantValue.ConsumeMoneyFlowType.NewCardCost.ToString()).FirstOrDefault();
                            if (codeFormula != null)
                            {
                                fFormula = codeFormula.cmt_fNumber;
                            }
                            //account.cua_fCurrentBalance += dCost * fFormula;
                            //account.cua_dLastSyncTime = DateTime.Now;
                            //db.SubmitChanges();

                            //插入【预消费记录】

                            PreConsumeRecord_pcs preConsume = new PreConsumeRecord_pcs();
                            preConsume.pcs_cAccountID = account.cua_cRecordID;
                            preConsume.pcs_cRecordID = Guid.NewGuid();
                            preConsume.pcs_cUserID = infoObject.ucp_cCUSID;
                            preConsume.pcs_cConsumeType = Common.DefineConstantValue.ConsumeMoneyFlowType.NewCardCost.ToString();
                            preConsume.pcs_dConsumeDate = DateTime.Now;
                            preConsume.pcs_fCost = dCost;
                            preConsume.pcs_cAdd = pair.ucp_cAdd;
                            preConsume.pcs_dAddDate = DateTime.Now;
                            if (dCost == 0)
                            {
                                preConsume.pcs_lIsSettled = true;
                                preConsume.pcs_dSettleTime = DateTime.Now;
                            }
                            else
                            {
                                preConsume.pcs_lIsSettled = false;
                            }
                            preConsume.pcs_cSourceID = pair.ucp_cRecordID;
                            db.PreConsumeRecord_pcs.InsertOnSubmit(preConsume);
                            db.SubmitChanges();

                            db.Transaction.Commit();
                            rvInfo.boolValue = true;

                        }
                        else
                        {
                            rvInfo.isError = true;
                            rvInfo.messageText = Common.DefineConstantValue.SystemMessageText.strMessageText_E_ObjectNull;
                            return rvInfo;
                        }
                    }
                    catch (Exception exx)
                    {
                        db.Transaction.Rollback();
                        db.Connection.Close();
                        throw exx;
                    }
                }
            }
            catch (Exception ex)
            {
                rvInfo.isError = true;
                rvInfo.messageText = ex.Message;
            }
            return rvInfo;
        }