Exemplo n.º 1
0
        public Respbase AuctionAddpricePay(ReqPayAuctionAddPrice req)
        {
            var result = facade.AuctionAddpricePay(req);

            if (!result)
            {
                return(new Respbase {
                    Result = 0, Message = facade.PromptInfo.Message
                });
            }
            return(new Respbase {
                Result = 1, Message = "支付成功"
            });
        }
Exemplo n.º 2
0
        /// <summary>
        /// 竞拍加价支付
        /// </summary>
        /// <param name="req"></param>
        /// <returns></returns>
        public bool AuctionAddpricePay(ReqPayAuctionAddPrice req)
        {
            var auctionHis = db.TpxinPaiHisSet.Where(w => req.Auctionid.Contains(w.Hisid)).ToList();

            #region 验证
            if (auctionHis.Count != req.Auctionid.Count)
            {
                var hisids = req.Auctionid.Except(auctionHis.Select(s => s.Hisid)).ToList();
                log.Info($"AuctionAddpricePay参数错误,hisid不存在:{string.Join(",", hisids)}");
                Alert("参数错误");
                return(false);
            }
            if (auctionHis.Any(a => (a.Status == -1 || a.Status == 1)))
            {
                Alert("此竞拍不可加价");
                return(false);
            }
            #endregion
            try
            {
                lock (obj)
                {
                    db.BeginTransaction();
                    #region 释放P点
                    //var puser= db.TpxinUserinfoSet.FirstOrDefault(w => w.Nodeid == req.Nodeid);
                    //var freedP = auctionHis.Sum(s => s.Totalprice);
                    //puser.P += freedP;
                    //db.Entry(puser).State = System.Data.Entity.EntityState.Modified;
                    //db.TpxinAmountChangeHisSet.Add(new TpxinAmountChangeHis
                    //{
                    //    Amount = freedP,
                    //    Createtime = DateTime.Now,
                    //    Nodeid = req.Nodeid,
                    //    Reason = 2000,
                    //    Remarks = "A点竞拍加价退还",
                    //    Typeid = 2,
                    //    Transferid = Guid.NewGuid().ToString(),
                    //    Amountbefore = puser.P- freedP,
                    //    Amountafter = puser.P
                    //});
                    //if (db.SaveChanges() <= 0)
                    //{
                    //    log.Info("竞拍加价支付提交失败:" + db.Message);
                    //    db.Rollback();
                    //    Alert("提交失败");
                    //    return false;
                    //}
                    #endregion
                    //var amountP = auctionHis.Select(s => s.Num * (s.Price + req.Price)).Sum();
                    var sumNum  = auctionHis.Sum(s => s.Num);
                    var amountP = sumNum * req.Price;
                    (bool result, TpxinPaiConfig config, TpxinUserinfo user) = PayCheck(req.Nodeid, req.PayPwd, sumNum, amountP);
                    if (!result)
                    {
                        db.Rollback();
                        return(false);
                    }
                    var transferid = new List <int>();
                    foreach (var item in auctionHis)
                    {
                        var reqPay = new ReqPayAuction()
                        {
                            Num = item.Num, MinPrice = req.Price + item.Price, PayPwd = req.PayPwd, Nodeid = req.Nodeid
                        };
                        (bool payResult, int id) = PayNew(reqPay, user, config);
                        if (!payResult)
                        {
                            db.Rollback();
                            return(false);
                        }
                        transferid.Add(id);
                    }
                    var ids         = string.Join(",", auctionHis.Select(s => s.Hisid).ToList());
                    var delteResult = db.ExecuteSqlCommand($"DELETE tpxin_pai_his WHERE hisid in ({ids})");
                    if (delteResult <= 0)
                    {
                        log.Info("竞拍加价支付删除失败,ids:" + ids);
                        Alert("竞拍加价支付失败");
                        db.Rollback();
                        return(false);
                    }
                    if (db.SaveChanges() <= 0)
                    {
                        log.Info("竞拍加价支付提交失败:" + db.Message);
                        db.Rollback();
                        Alert("提交失败");
                        return(false);
                    }
                    if (!ComputeMinPrice(config))
                    {
                        return(false);
                    }
                    //调用接口支付p点
                    var vpResult = AuctionVP(req.Nodeid, amountP, "A点竞拍加价", string.Join(",", transferid));
                    if (vpResult.Result <= 0)
                    {
                        Alert(vpResult.Message, vpResult.Result);
                        db.Rollback();
                        return(false);
                    }
                    db.Commit();
                    return(true);
                }
            }
            catch (Exception e)
            {
                db.Rollback();
                log.Error("A点竞拍加价支付异常:" + e);
                Alert("支付失败");
                return(false);
            }
        }