public async Task SendPrintAsync(string who, ChargeLog cl, string actionName)
 {
     foreach (var connectionId in PrintHub.connections.GetConnections(who))
     {
         await _hub.Clients.Client(connectionId).SendAsync(actionName, cl);
     }
 }
Пример #2
0
 public JsonResult Charge(ChargePostModel chargepostmodel)
 {
     try
     {
         var charge = new ChargeLog()
         {
             Number      = Utils.GetOrderNumber(),
             Money       = chargepostmodel.Money,
             UserId      = chargepostmodel.UserId,
             CanUseCount = chargepostmodel.CanUseCount,
             PayMethod   = chargepostmodel.PayMethod,
             OrderType   = chargepostmodel.OrderType,
             CreateTime  = DateTime.Now,
         };
         _db.ChargeLogs.Add(charge);
         var user = _db.Users.Find(chargepostmodel.UserId);
         if (chargepostmodel.OrderType == OrderType.TuiNa)
         {
             user.CanUseCount += chargepostmodel.CanUseCount;
         }
         if (chargepostmodel.OrderType == OrderType.BaoJian)
         {
             user.BaoJianCount += chargepostmodel.CanUseCount;
         }
         _db.SaveChanges();
         return(Json(new { success = true }));
     }
     catch (Exception ex)
     {
         logger.Debug(ex.Message);
         return(Json(new { success = false, msg = ex.Message }));
     }
 }
 public ResultJSON <ChargeLog> Put([FromBody] ChargeLog model)
 {
     r.CurrentUser = UserName;
     return(new ResultJSON <ChargeLog>
     {
         Code = 0,
         Data = r.InsertOrUpdate(model)
     });
 }
        public async Task <ResultJSON <ChargeLog> > PrintCompanyPrepay([FromBody] ChargeLog cl, string to)
        {
            await SendPrintAsync(to, cl, "printcompanyprepayment");

            return(new ResultJSON <ChargeLog>
            {
                Code = 0,
                Data = cl
            });
        }
        public ResultJSON <ChargeLog> Get(int id)
        {
            ChargeLog s = r.Get(id);

            return(new ResultJSON <ChargeLog>
            {
                Code = 0,
                Data = s
            });
        }
        private void PrintCharge(ChargeLog log)
        {
            Log.Logs += "正在打印charge:{log.Name}\r";

            printer.Print("———————————");
            printer.Print("充值回执");
            printer.Print("———————————");
            printer.Print($"商户名称:{ShopName}");
            printer.Print($"客户名称:{log.Name}");
            printer.Print($"充值金额:{log.Money}");
            printer.Print($"打印时间:{DateTime.Now}");
            printer.Print("———————————");
            printer.Print($"地址:{Address}");
            printer.Print($"电话:{Phone}");
            printer.Print($"欢迎再次光临");
            printer.EndDoc();
        }
Пример #7
0
        /// <summary>
        /// 获取充值记录
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public static ChargeLog GetChargeLog(int id)
        {
            var result  = new ChargeLog();
            var cmdText = @"select * from ChargeLog where Id=?Id;";

            List <MySqlParameter> parameters = new List <MySqlParameter>();

            parameters.Add(new MySqlParameter("?Id", id));
            try
            {
                using (var conn = Utility.ObtainConn(Utility._gameDbConn))
                {
                    MySqlDataReader reader = MySqlHelper.ExecuteReader(conn, CommandType.Text, cmdText,
                                                                       parameters.ToArray());
                    if (reader.HasRows)
                    {
                        if (reader.Read())
                        {
                            result.Id               = reader.GetInt32(0);
                            result.SellerId         = (int)reader["SellerId"];
                            result.UserId           = (int)reader["UserId"];
                            result.Money            = (float)reader["Money"];
                            result.Pid              = (int)reader["Pid"];
                            result.PayName          = reader["PayName"].ToString();
                            result.OrderId          = reader["OrderId"].ToString();
                            result.CreateTime       = (DateTime)reader["CreateTime"];
                            result.Status           = (RechargeStatus)reader["Status"];
                            result.UpdateStatusTime = (DateTime)reader["UpdateStatusTime"];
                            result.GidList          = Utility.GetListint(reader["Gids"].ToString());
                            result.NumList          = Utility.GetListint(reader["Nums"].ToString());
                            result.Num              = (int)reader["Num"];
                        }
                    }
                }
            }
            catch (System.Exception ex)
            {
                throw;
            }
            return(result);
        }
Пример #8
0
        /// <summary>
        /// 更新充值状态
        /// </summary>
        /// <param name="chargeLog"></param>
        /// <param name="orderId"></param>
        /// <returns></returns>
        public static bool UpdateStatus(ChargeLog chargeLog, string orderId)
        {
            var cmdText = string.Empty;
            List <MySqlParameter> parameters = new List <MySqlParameter>();

            cmdText = @"update ChargeLog set Status=?Status,UpdateStatusTime=?UpdateStatusTime,OrderId=?OrderId where Id=?Id;";

            parameters.Add(new MySqlParameter("?Status", (int)chargeLog.Status));
            parameters.Add(new MySqlParameter("?UpdateStatusTime", DateTime.Now));
            parameters.Add(new MySqlParameter("?OrderId", orderId));
            parameters.Add(new MySqlParameter("?Id", chargeLog.Id));

            try
            {
                using (var conn = Utility.ObtainConn(Utility._gameDbConn))
                {
                    bool result = MySqlHelper.ExecuteNonQuery(conn, CommandType.Text, cmdText,
                                                              parameters.ToArray()) > 0;
                    if (result && chargeLog.Status == RechargeStatus.Success)
                    {
                        if (chargeLog.Money > 0)
                        {
                            //充值统计
                            RechargeStatisticsHelper.AddRechargeStatistics(chargeLog.SellerId, chargeLog.Money, chargeLog.CreateTime);
                        }
                        else if (chargeLog.Money < 0)
                        {
                            //消费统计
                            ConsumeStatisticsHelper.AddConsumeStatistics(chargeLog.SellerId, Math.Abs(chargeLog.Money), chargeLog.CreateTime);
                        }
                    }
                    return(result);
                }
            }
            catch (Exception e)
            {
            }

            return(false);
        }
        public ResultJSON <ChargeLog> Post([FromBody] ChargeLog model)
        {
            r.CurrentUser = UserName;
            ChargeLog c = r.InsertAndUpdateBalances(model);

            if (c == null)
            {
                return new ResultJSON <ChargeLog>
                       {
                           Code = 501,
                           Msg  = "无法更新客户余额"
                       }
            }
            ;
            else
            {
                return new ResultJSON <ChargeLog>
                       {
                           Code = 0,
                           Data = c
                       }
            };
        }
        /// <summary>
        /// 公司预收款确认单
        /// </summary>
        /// <param name="order"></param>
        private void PrintCompanyPrepayment(ChargeLog cl)
        {
            Log.Logs += $"正在打印ClientPrepayment:{cl.Company.Name}\r";

            Word.Application thisApplication = new Word.ApplicationClass();
            wApp = thisApplication;
            string tmpDocFile   = AppDomain.CurrentDomain.BaseDirectory + folder + Properties.Settings.Default.PrintCompanyPrepaymentDocx;
            object templatefile = tmpDocFile;

            wDoc = wApp.Documents.Add(ref templatefile, ref missing, ref missing, ref missing); //在现有进程内打开文档
            wDoc.Activate();                                                                    //当前文档置前

            //填充数据
            WordReplace(wApp, "#CompanyName#", cl.Company.Name);
            WordReplace(wApp, "#Money#", cl.Money.ToString("0.00"));
            WordReplace(wApp, "#CNMoney#", ConvertToChinese(cl.Money));
            WordReplace(wApp, "#CreatedBy#", cl.CreatedBy);
            WordReplace(wApp, "#CreatedAt#", cl.CreatedAt.ToString("yyyy-MM-dd HH:mm"));
            WordReplace(wApp, "#PayType#", strPayType(cl.PayType));
            WordReplace(wApp, "#Balances#", cl.Company.Balances.ToString());
            PrintTime(wApp);

            object background = false; //这个很重要,否则关闭的时候会提示请等待Word打印完毕后再退出,加上这个后可以使Word所有
            object filename   = AppDomain.CurrentDomain.BaseDirectory + createdfolder + cl.Company.Name + ".docx";

            wDoc.SaveAs(ref filename, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref
                        missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing);
            wDoc.PrintOut(ref background, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref
                          missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing,
                          ref missing);
            object saveOption = Word.WdSaveOptions.wdSaveChanges;

            wDoc.Close(ref saveOption, ref missing, ref missing); //关闭当前文档,如果有多个模版文件进行操作,则执行完这一步后接着执行打开Word文档的方法即可
                        saveOption = Word.WdSaveOptions.wdDoNotSaveChanges;

            wApp.Quit(ref saveOption, ref missing, ref missing); //关闭Word进程
        }
Пример #11
0
        public static PagResults <ChargeLog> GetChargeLogs(int sellerId, int start = 0, int limit = 0,
                                                           int ifgetcount          = 0)
        {
            var result = new PagResults <ChargeLog>();

            result.Results = new List <ChargeLog>();
            string limitsql = start != 0 ? " LIMIT ?start,?limit" : string.Empty;
            var    cmdText  =
                @"select * from ChargeLog where SellerId=?SellerId order by createtime desc " +
                limitsql;

            List <MySqlParameter> parameters = new List <MySqlParameter>();

            if (limit != 0)
            {
                parameters.Add(new MySqlParameter("?start", start));
                parameters.Add(new MySqlParameter("?limit", limit));
            }
            parameters.Add(new MySqlParameter("?SellerId", sellerId));
            try
            {
                using (var conn = Utility.ObtainConn(Utility._gameDbConn))
                {
                    MySqlDataReader reader = MySqlHelper.ExecuteReader(conn, CommandType.Text, cmdText,
                                                                       parameters.ToArray());
                    while (reader.Read())
                    {
                        ChargeLog ChargeLog = new ChargeLog();
                        ChargeLog.Id               = reader.GetInt32(0);
                        ChargeLog.SellerId         = (int)reader["SellerId"];
                        ChargeLog.UserId           = (int)reader["UserId"];
                        ChargeLog.Money            = (float)reader["Money"];
                        ChargeLog.Pid              = (int)reader["Pid"];
                        ChargeLog.PayName          = reader["PayName"].ToString();
                        ChargeLog.OrderId          = reader["OrderId"].ToString();
                        ChargeLog.CreateTime       = (DateTime)reader["CreateTime"];
                        ChargeLog.Status           = (RechargeStatus)reader["Status"];
                        ChargeLog.UpdateStatusTime = (DateTime)reader["UpdateStatusTime"];
                        ChargeLog.UpdateStatusTime = (DateTime)reader["UpdateStatusTime"];
                        ChargeLog.GidList          = Utility.GetListint(reader["Gids"].ToString());
                        ChargeLog.NumList          = Utility.GetListint(reader["Nums"].ToString());
                        ChargeLog.Num              = (int)reader["Num"];

                        result.Results.Add(ChargeLog);
                    }

                    if (ifgetcount > 0)
                    {
                        //一个函数有两次连接数据库 先把连接断开 然后重连
                        conn.Close();
                        conn.Dispose();
                        conn.Open();

                        cmdText    = @"select count(*) from ChargeLog where SellerId=?SellerId";
                        parameters = new List <MySqlParameter>();
                        parameters.Add(new MySqlParameter("?SellerId", sellerId));
                        reader = MySqlHelper.ExecuteReader(conn, CommandType.Text, cmdText, parameters.ToArray());
                        if (reader.HasRows)
                        {
                            if (reader.Read())
                            {
                                result.TotalCount = reader.GetInt32(0);
                            }
                        }
                    }
                }
            }
            catch (System.Exception ex)
            {
                throw;
            }
            return(result);
        }
Пример #12
0
        /// <summary>
        /// 获取统计充值记录列表信息
        /// </summary>
        /// <param name="sellerId"></param>
        /// <param name="startTime"></param>
        /// <param name="endTime"></param>
        /// <param name="start"></param>
        /// <param name="limit"></param>
        /// <returns></returns>
        public static List <ChargeLog> GetChargeLogList(int sellerId, DateTime startTime, DateTime endTime, int start = 0, int limit = 0)
        {
            var    result   = new List <ChargeLog>();
            string limitsql = start != 0 ? " LIMIT ?start,?limit" : string.Empty;
            var    cmdText  =
                @"select * from chargelog where SellerId=?SellerId and money<0 and orderid>0 and `Status` =10 and CreateTime>=?StartTime and CreateTime<=?EndTime;" +
                limitsql;

            List <MySqlParameter> parameters = new List <MySqlParameter>();

            if (limit != 0)
            {
                parameters.Add(new MySqlParameter("?start", start));
                parameters.Add(new MySqlParameter("?limit", limit));
            }
            parameters.Add(new MySqlParameter("?SellerId", sellerId));
            parameters.Add(new MySqlParameter("?StartTime", startTime));
            parameters.Add(new MySqlParameter("?EndTime", endTime));
            try
            {
                using (var conn = Utility.ObtainConn(Utility._gameDbConn))
                {
                    MySqlDataReader reader = MySqlHelper.ExecuteReader(conn, CommandType.Text, cmdText,
                                                                       parameters.ToArray());
                    while (reader.Read())
                    {
                        ChargeLog item = new ChargeLog();
                        item.Id               = reader.GetInt32(0);
                        item.SellerId         = (int)reader["SellerId"];
                        item.UserId           = (int)reader["UserId"];
                        item.Money            = (float)reader["Money"];
                        item.Pid              = (int)reader["Pid"];
                        item.PayName          = reader["PayName"].ToString();
                        item.OrderId          = reader["OrderId"].ToString();
                        item.CreateTime       = (DateTime)reader["CreateTime"];
                        item.Status           = (RechargeStatus)reader["Status"];
                        item.UpdateStatusTime = (DateTime)reader["UpdateStatusTime"];
                        item.GidList          = Utility.GetListint(reader["Gids"].ToString());
                        item.NumList          = Utility.GetListint(reader["Nums"].ToString());
                        item.Num              = (int)reader["Num"];

                        result.Add(item);
                    }

                    //一个函数有两次连接数据库 先把连接断开 然后重连
                    //conn.Close();
                    //conn.Dispose();
                    //conn.Open();

                    //cmdText = @"select count(*) from ChargeLog where SellerId=?SellerId and Money>0 and CreateTime>=?StartTime and EndTime<=?EndTime;";
                    //parameters = new List<MySqlParameter>();
                    //parameters.Add(new MySqlParameter("?SellerId", sellerId));
                    //parameters.Add(new MySqlParameter("?StartTime", startTime));
                    //parameters.Add(new MySqlParameter("?EndTime", endTime));
                    //reader = MySqlHelper.ExecuteReader(conn, CommandType.Text, cmdText, parameters.ToArray());
                    //if (reader.HasRows)
                    //{
                    //    if (reader.Read())
                    //    {
                    //        result.TotalCount = reader.GetInt32(0);
                    //    }
                    //}
                }
            }
            catch (System.Exception ex)
            {
                throw;
            }
            return(result);
        }
Пример #13
0
        /// <summary>
        /// 保存充值记录
        /// </summary>
        /// <param name="chargeLog"></param>
        /// <returns></returns>
        public static int AddChargeLog(ChargeLog chargeLog)
        {
            var cmdText = string.Empty;
            List <MySqlParameter> parameters = new List <MySqlParameter>();

            cmdText = @"insert into ChargeLog
                                        (
                                        UserId,
                                        Money,
                                        Pid,
                                        OrderId,
                                        SellerId,
                                        PayName,
                                        CreateTime,
                                        Status,
                                        UpdateStatusTime,
                                        Gids,
                                        Nums,
                                        Num
                                        ) 
                                        values 
                                        (
                                        ?UserId,
                                        ?Money,
                                        ?Pid,
                                        ?OrderId,
                                        ?SellerId,
                                        ?PayName,
                                        ?CreateTime,
                                        ?Status,
                                        ?UpdateStatusTime,
                                        ?Gids,
                                        ?Nums,
                                        ?Num
                                        )";
            parameters.Add(new MySqlParameter("?UserId", chargeLog.UserId));
            parameters.Add(new MySqlParameter("?Money", chargeLog.Money));
            parameters.Add(new MySqlParameter("?Pid", chargeLog.Pid));
            parameters.Add(new MySqlParameter("?OrderId", chargeLog.OrderId));
            parameters.Add(new MySqlParameter("?SellerId", chargeLog.SellerId));
            parameters.Add(new MySqlParameter("?PayName", chargeLog.PayName));
            parameters.Add(new MySqlParameter("?CreateTime", chargeLog.CreateTime));
            parameters.Add(new MySqlParameter("?Status", chargeLog.Status));
            parameters.Add(new MySqlParameter("?UpdateStatusTime", chargeLog.UpdateStatusTime));
            parameters.Add(new MySqlParameter("?Gids", Utility.GetString(chargeLog.GidList)));
            parameters.Add(new MySqlParameter("?Nums", Utility.GetString(chargeLog.NumList)));
            parameters.Add(new MySqlParameter("?Num", chargeLog.Num));
            try
            {
                using (var conn = Utility.ObtainConn(Utility._gameDbConn))
                {
                    var num = MySqlHelper.ExecuteNonQuery(conn, CommandType.Text, cmdText,
                                                          parameters.ToArray());
                    if (num > 0)
                    {
                        cmdText = @"select LAST_INSERT_ID();";
                        var reader = MySqlHelper.ExecuteReader(conn, CommandType.Text, cmdText);
                        if (reader.HasRows)
                        {
                            if (reader.Read())
                            {
                                num = reader.GetInt32(0);
                                return(num);
                            }
                        }
                    }
                    return(0);
                }
            }
            catch (System.Exception ex)
            {
                throw;
            }
            return(0);
        }
 public async Task addLog(ChargeLog chargeLog)
 {
     _repo.Add(chargeLog);
     await _repo.SaveAll();
 }
    protected void Page_Load(object sender, EventArgs e)
    {
        logger.Info("支付宝充值回调开始wap_notify_ordersurl");
        logger.Info("开始解析参数");
        Dictionary <string, string> sPara = GetRequestPost();

        if (sPara.Count > 0)//判断是否有带返回参数
        {
            //logger.Info("判断有带参数");
            AlipayXmlNotify aliNotify = new AlipayXmlNotify();
            var             sign      = Request.Form["sign"];
            logger.InfoFormat("验证签名:{0}", sign);
            bool verifyResult = aliNotify.VerifyNotify(sPara, sign);

            if (verifyResult)//验证成功
            {
                logger.Info("签名通过验证");
                /////////////////////////////////////////////////////////////////////////////////////////////////////////////
                //请在这里加上商户的业务逻辑程序代码


                //——请根据您的业务逻辑来编写程序(以下代码仅作参考)——
                //获取支付宝的通知返回参数,可参考技术文档中服务器异步通知参数列表
                //解密(如果是RSA签名需要解密,如果是MD5签名则下面一行清注释掉)
                //sPara = aliNotify.Decrypt(sPara);

                //XML解析notify_data数据
                try
                {
                    XmlDocument xmlDoc      = new XmlDocument();
                    string      notify_data = sPara["notify_data"];
                    //logger.InfoFormat("notify_data:{0}", notify_data);
                    xmlDoc.LoadXml(notify_data);
                    //商户订单号
                    string out_trade_no = xmlDoc.SelectSingleNode("/notify/out_trade_no").InnerText;
                    //支付宝交易号
                    string trade_no = xmlDoc.SelectSingleNode("/notify/trade_no").InnerText;
                    //交易状态
                    string trade_status = xmlDoc.SelectSingleNode("/notify/trade_status").InnerText;

                    logger.InfoFormat("out_trade_no:{0},trade_no:{1},trade_status:{2}", out_trade_no, trade_no, trade_status);
                    if (trade_status == "TRADE_FINISHED" || trade_status == "TRADE_SUCCESS")
                    {
                        //判断该笔订单是否在商户网站中已经做过处理
                        //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
                        //如果有做过处理,不执行商户的业务程序

                        //注意:
                        //该种交易状态只在两种情况下出现
                        //1、开通了普通即时到账,买家付款成功后。
                        //2、开通了高级即时到账,从该笔交易成功时间算起,过了签约时的可退款时限(如:三个月以内可退款、一年以内可退款等)后。

                        if (Utility.IsNum(out_trade_no))
                        {
                            var id     = Convert.ToInt32(out_trade_no);
                            var orders = OrdersHelper.GetOrders(id);
                            if (orders != null && orders.Status < OrderStatus.Pay)
                            {
                                //添加
                                var user = AccountHelper.GetUser(orders.UserId);
                                if (user == null)
                                {
                                    logger.ErrorFormat("不存在用户Id={0}", orders.UserId);
                                }
                                else
                                {
                                    var payMent = new Payment();
                                    if (orders.Pid > 0)
                                    {
                                        PaymentHelper.GetPayment(orders.Pid);
                                    }

                                    var chargeLog = new ChargeLog();
                                    chargeLog.UserId   = orders.UserId;
                                    chargeLog.Money    = -orders.TotalPrice;
                                    chargeLog.Pid      = orders.Pid;
                                    chargeLog.SellerId = orders.SellerId;
                                    chargeLog.OrderId  = orders.Id.ToString();
                                    chargeLog.PayName  = payMent.Id == 0 ? "账户余额" : payMent.Name;
                                    chargeLog.Status   = RechargeStatus.Success;
                                    chargeLog.GidList  = orders.GidList;
                                    chargeLog.NumList  = orders.NumList;
                                    chargeLog.Num      = orders.NumList.Sum(o => o);
                                    //记录消费记录
                                    ChargeLogHelper.AddChargeLog(chargeLog);
                                    var setting = SystemHelper.GetMerchantExtend(chargeLog.SellerId);
                                    //积分获得
                                    var log = new ExtcreditLog();
                                    log.UserId   = orders.UserId;
                                    log.SellerId = user.SellerId;

                                    log.SourceId   = orders.Id;
                                    log.Extcredit  = (int)(orders.TotalPrice * 1.0 / (setting != null ? setting.ConsumeIntegral : 0));
                                    log.Type       = ExtcreditSourceType.Consume;
                                    log.CreateTime = DateTime.Now;

                                    ExtcreditLogHelper.AddExtcreditLog(log);

                                    user.Integral += log.Extcredit;
                                    user.Concume(orders.TotalPrice, 1);

                                    //保存用户信息
                                    AccountHelper.SaveAccount(user);

                                    //更新订单中商品的销量
                                    GoodsHelper.UpdateGoodsSales(orders.GidList, orders.NumList);

                                    orders.Status = OrderStatus.Pay;
                                    OrdersHelper.SaveOrders(orders);

                                    logger.InfoFormat("订单付款成功;UserId={1},Money={0},OrdersId:{2},Status:{3}", orders.TotalPrice, orders.UserId, orders.Id, (int)orders.Status);
                                }
                            }
                            else if (orders == null)
                            {
                                logger.ErrorFormat("不存在订单记录Id={0}", id);
                            }
                            else
                            {
                                logger.Error("该订单已处理过");
                            }
                        }
                        else
                        {
                            logger.Error("商户订单号不是int型");
                        }

                        Response.Write("success");  //请不要修改或删除
                    }
                    //else if (trade_status == "TRADE_SUCCESS")
                    //{
                    //    //判断该笔订单是否在商户网站中已经做过处理
                    //    //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
                    //    //如果有做过处理,不执行商户的业务程序

                    //    //注意:
                    //    //该种交易状态只在一种情况下出现——开通了高级即时到账,买家付款成功后。


                    //    Response.Write("success");  //请不要修改或删除
                    //}
                    else
                    {
                        if (Utility.IsNum(out_trade_no))
                        {
                            var id     = Convert.ToInt32(out_trade_no);
                            var orders = OrdersHelper.GetOrders(id);
                            if (orders != null)
                            {
                                logger.ErrorFormat("订单付款失败;UserId={1},Money={0}", orders.TotalPrice, orders.UserId);

                                orders.Status = OrderStatus.Update;
                                //关闭时才更改状态
                                if (trade_status == "TRADE_Close")
                                {
                                    orders.Status = OrderStatus.Cancel;
                                    trade_status  = "success";//返回success
                                }
                                OrdersHelper.SaveOrders(orders);
                            }
                            else
                            {
                                logger.ErrorFormat("订单付款失败,订单未找到Id:{0}", id);
                            }
                        }
                        else
                        {
                            logger.ErrorFormat("订单付款失败,订单付款id不是int型;Id={0}", out_trade_no);
                        }
                        Response.Write(trade_status);
                    }
                }
                catch (Exception exc)
                {
                    logger.ErrorFormat("异常:{0})", exc.Message);
                    Response.Write(exc.ToString());
                }
                //——请根据您的业务逻辑来编写程序(以上代码仅作参考)——

                /////////////////////////////////////////////////////////////////////////////////////////////////////////////
            }
            else//验证失败
            {
                logger.Info("签名验证失败");
                Response.Write("fail");
            }
        }
        else
        {
            logger.Info("无通知参数");
            Response.Write("无通知参数");
        }
    }
Пример #16
0
        /// <summary>
        /// 结算订单
        /// </summary>
        /// <param name="model">Model</param>
        /// <returns></returns>
        public ResultJSON <Order> Pay(Order model)
        {
            ResultJSON <Order> ret = new ResultJSON <Order> {
                Code = 0
            };
            Order o = _dbContext.Orders.Find(model.Id);

            o.PayState = model.PayState;
            o.Cashier  = CurrentUser;

            //计算订单销售提成,未结算、挂账、已结算都计算提成
            o.SalesCommission = (o.Price - o.MinPrice) * o.Count * 0.2M;

            //新增付款记录Payment
            foreach (Payment p in model.Payments)
            {
                //要加载order下才会关联OrderId,直接加在db下不会反应关联关系
                o.Payments.Add(p);
                if (p.PayTypeId == OrderPayType.账户扣减 || p.PayTypeId == OrderPayType.公司账户扣减)
                {
                    bool isCompany = (p.PayTypeId == OrderPayType.公司账户扣减) ? true : false;
                    if (!model.ClientId.HasValue)
                    {
                        ret.Code = 500;
                        ret.Msg  = "请检查是否存在该客户";
                        break;
                    }
                    //新增消费记录并且扣减账户余额
                    cl_r.CurrentUser = CurrentUser;
                    ChargeLog cl = new ChargeLog
                    {
                        PayType    = (isCompany) ? OrderPayType.公司账户扣减 : OrderPayType.账户扣减,
                        ChargeType = ChargeType.消费,
                        Money      = p.Money,
                        IsCompany  = isCompany
                    };
                    if (model.ClientId.HasValue)
                    {
                        cl.ClientId = int.Parse(model.ClientId.ToString());
                    }

                    ChargeLog cl_return = cl_r.InsertAndUpdateBalances(cl);

                    if (cl_return == null)
                    {
                        ret.Code = 500;
                        ret.Msg  = "扣减金额必须少于或等于账户余额";
                        break;
                    }
                }
            }

            if (ret.Code == 500)
            {
                return(ret);
            }

            //更新计划状态为“已完成”
            if (o.SalesPlanId != null)
            {
                var sp = _dbContext.SalesPlans.Where(s => s.Id == o.SalesPlanId).FirstOrDefault();
                sp.State = SalesPlanState.已完成;
            }

            o.LastUpdatedAt = DateTime.Now;

            Save();
            ret.Data = o;

            return(ret);
        }
 private async Task logTransaction(ChargeLog chargeLog)
 {
     await _chargeService.addLog(chargeLog);
 }