예제 #1
0
    /// <summary>
    /// 启动结算
    /// </summary>
    /// <param name="Name">添加的操作名</param>
    /// <param name="action">添加的操作方法</param>
    public void StartSettle(PSettle Settle)
    {
        SettleRecord NewSettleRecord = new SettleRecord(Settle);

        lock (SettleRecordStack) {
            SettleRecordStack.Push(NewSettleRecord);
        }
        PLogger.Log("开始结算 " + Settle.Name);
        NewSettleRecord.Settle.SettleAction(Game);
        //NewSettleRecord.ActionThread.Start();
        //PThread.WaitUntil(() => NewSettleRecord.Finished);
        PLogger.Log("终止结算 " + Settle.Name);
        //if (NewSettleRecord.ActionThread.IsAlive) {
        //    NewSettleRecord.ActionThread.Abort();
        //}
        lock (SettleRecordStack) {
            if (SettleRecordStack.Count > 0 && NewSettleRecord.Equals(SettleRecordStack.Peek()))
            {
                SettleRecordStack.Pop();
            }
        }
    }
예제 #2
0
        /// <summary>
        /// 周结算
        /// </summary>
        public void Send(int type)
        {
            using (var tran = BeginTransaction)
            {
                try
                {
                    Xml_Site config = DB.XmlConfig.XmlSite;
                    //周结算,收益
                    string[] typeName = new string[] {
                        "直推一代奖",
                        "直推二代奖",
                        "互助奖",
                    };
                    if (type == Enums.SettleType.月计算.GetHashCode())
                    {
                        typeName = new string[] {
                            "领导奖",
                            //"师长分红",
                            //"社区店分红",
                            "重消奖",
                        };
                    }


                    //1.添加记录
                    SettleRecord record = new SettleRecord();
                    record.CreateTime = DateTime.Now;
                    record.Type       = type;
                    //2.处理到账
                    var list = DB.Fin_Info.Where(q => typeName.Contains(q.TypeName) &&
                                                 q.IsSettlement != true);
                    foreach (var item in list)
                    {
                        //到账处理
                        Member_Info member = DB.Member_Info.FindEntity(item.MemberId);
                        member.Commission    += item.RealAmount;
                        member.CommissionSum += item.RealAmount;
                        member.ShopCoins     += item.Poundage ?? 0;
                        member.CommissionBan += item.Amount ?? 0;

                        //如果操作1万,赠送路由积分
                        if (member.CommissionBan >= config.TourScoresStep)
                        {
                            member.CommissionBan -= config.TourScoresStep;
                            member.TourScores    += config.TourScores;
                        }
                        DB.Member_Info.Update(member);

                        //修改记录状态
                        item.IsSettlement   = true;
                        item.SettlementTime = DateTime.Now;
                        DB.Fin_Info.Update(item);

                        record.AllAmount     += item.Amount ?? 0;
                        record.AllCoins      += item.Poundage ?? 0;
                        record.AllCommission += item.RealAmount ?? 0;
                        record.AllCount++;
                    }

                    if (base.Insert(record) == false)
                    {
                        throw new Exception("添加记录失败");
                    }

                    //提交处理
                    tran.Complete();
                }
                catch (Exception ex)
                {
                    DB.Rollback();
                    throw ex;
                }
            }
        }