/// <summary> /// 点赞或踩 /// </summary> /// <param name="req"></param> /// <returns></returns> public bool CreateAttitude(ReqCreateAttitude req) { TnetReginfo regInfo = PxinCache.GetRegInfo(req.Nodeid); TpxinMessage tpxinMessage = db.TpxinMessageSet.FirstOrDefault(a => a.Infoid == req.Infoid && a.Status == 1); if (tpxinMessage == null) { Alert("信友圈信息不存在"); return(false); } if (req.Isupdown != -1 && req.Isupdown != 1) { Alert("参数不正确"); return(false); } if (regInfo.Nodeid == tpxinMessage.Nodeid) { Alert("不能自己给自己点赞或踩"); return(false); } if (tpxinMessage.Price > 0) { TpxinPayhis tpxinPayhis = db.TpxinPayhisSet.FirstOrDefault(a => a.Infoid == tpxinMessage.Infoid && a.Nodeid == req.Nodeid && a.Typeid == 3); if (tpxinPayhis == null) { Alert("请支付V点查看后点赞或踩"); return(false); } } TpxinPraise tpxinPraise = db.TpxinPraiseSet.FirstOrDefault(a => a.Infoid == req.Infoid && a.Fromnodeid == req.Nodeid); if (tpxinPraise != null && tpxinPraise.Status != 0) { Alert("一个文章只能点赞或踩一次"); return(false); } try { db.BeginTransaction(); if (tpxinPraise == null) { //添加信友圈踩赞历史表 tpxinPraise = new TpxinPraise { Infoid = req.Infoid, Createtime = DateTime.Now, Fromnodeid = req.Nodeid, Tonodeid = tpxinMessage.Nodeid, Remarks = "", Reward = 0, Status = req.Isupdown }; db.TpxinPraiseSet.Add(tpxinPraise); } else { tpxinPraise.Status = req.Isupdown; } //查询法比用户信息 TpxinUserinfo userinfo = db.TpxinUserinfoSet.FirstOrDefault(a => a.Nodeid == tpxinMessage.Nodeid); if (userinfo == null) { Alert("用户不存在"); db.Rollback(); return(false); } if (req.Isupdown == 1) { //添加文章表的赞的次数 tpxinMessage.Up += 1; //增加一个用户p点 userinfo.Up += 1; } else { //添加文章表的踩的次数 tpxinMessage.Down += 1; //减去一个用户p点 userinfo.Down += 1; } ////添加金额变化记录 //var amount = req.Isupdown == 1 ? 1 : -1; //var reason = req.Isupdown == 1 ? AmountChangeReason.PraiseArticle : AmountChangeReason.TreadArticle; ////var tpxinMsgUser = PxinCache.GetRegInfo(userinfo.Nodeid);//db.TchatUserSet.First(c => c.Nodeid == userinfo.Nodeid);// //var remarks = (req.Isupdown == 1 ? "赞-" : "踩-") + regInfo.Nodename; //var amountChangeHis = CreateAmountChangeHis(tpxinMessage.Nodeid, 2, amount, (int)reason, Guid.NewGuid().ToString(), remarks); //db.TpxinAmountChangeHisSet.Add(amountChangeHis); #region 由VP服务来处理V点P点操作 if (db.SaveChanges() <= 0) { Alert("操作失败"); log.Error("点赞点踩失败,提交db失败:" + db.Message); db.Rollback(); return(false); } var vp = new VPHelper(); var result = vp.SetP(new VPAuction { Nodeid = tpxinMessage.Nodeid, Reason = (int)(req.Isupdown == 1 ? AmountChangeReason.PraiseArticle : AmountChangeReason.TreadArticle), Remark = (req.Isupdown == 1 ? "赞-" : "踩-") + regInfo.Nodename, Amount = req.Isupdown == 1 ? 1 : -1, Transferid = tpxinPraise.Hisid.ToString(), }); if (result.Result <= 0) { Alert(result.Message, result.Result); db.Rollback(); return(false); } db.Commit(); #endregion } catch (Exception ex) { log.Info("点赞或踩失败,原因:" + ex); Alert("操作失败"); db.Rollback(); return(false); } Alert("操作成功", 1); return(true); }
/// <summary> /// 评论 /// </summary> /// <param name="req"></param> /// <returns></returns> public bool CreateComment(ReqCreateComment req) { if (req.Content.Length > 100) { Alert("评论不能超过100字哦"); return(false); } TnetReginfo regInfo = PxinCache.GetRegInfo(req.Nodeid); TpxinMessage tpxinMessage = db.TpxinMessageSet.FirstOrDefault(a => a.Infoid == req.Infoid && a.Status == 1); if (tpxinMessage == null) { Alert("信友圈信息不存在"); return(false); } //发布文章的用户不只是自己的要支付V点 if (tpxinMessage.Price > 0 && tpxinMessage.Nodeid != regInfo.Nodeid) { TpxinPayhis tpxinPayhis = db.TpxinPayhisSet.FirstOrDefault(a => a.Infoid == tpxinMessage.Infoid && a.Nodeid == req.Nodeid && a.Typeid == 3); if (tpxinPayhis == null) { Alert("请支付V点查看后评论"); return(false); } } int Pnodeid = 0; if (req.Phisid > 0) { TpxinCommentHis His = db.TpxinCommentHisSet.FirstOrDefault(a => a.Hisid == req.Phisid && a.Status == 1 && a.Infoid == req.Infoid); if (His == null) { Alert("回复的评论不存在,或已删除"); return(false); } Pnodeid = His.Nodeid; if (Pnodeid == req.Nodeid) { Alert("自己不能回复自己的评论"); return(false); } } //添加评论历史表 TpxinCommentHis commentHis = new TpxinCommentHis { Nodeid = req.Nodeid, Content = req.Content, Createtime = DateTime.Now, Infoid = req.Infoid, Remarks = "", Status = 1, Phisid = req.Phisid, Pnodeid = Pnodeid }; db.TpxinCommentHisSet.Add(commentHis); //添加文章评论次数 tpxinMessage.Commentnum += 1; if (db.SaveChanges() <= 0) { Alert("评论失败"); return(false); } PxinSerivce.EnqueueComment(commentHis.Hisid); Alert("评论成功", 1); CommentHisId = commentHis.Hisid; return(true); }
/// <summary> /// 支付V点流程 /// </summary> /// <param name="regInfo"></param> /// <param name="Price"></param> /// <returns></returns> public bool ChargeVDian_Pro(TnetReginfo regInfo, decimal Price) { TpxinUserinfo userinfo = db.TpxinUserinfoSet.FirstOrDefault(a => a.Nodeid == regInfo.Nodeid); if (userinfo == null) { userinfo = new TpxinUserinfo { Nodeid = regInfo.Nodeid, Backpic = "", Createtime = DateTime.Now, Up = 0, Down = 0, P = 0, V = 0, Remarks = "" }; db.TpxinUserinfoSet.Add(userinfo); } //1.添加 信友圈付费V点历史表 TPXIN_PAYHIS TpxinPayhis payhis = new TpxinPayhis { Createtime = DateTime.Now, Infoid = 0, Typeid = 1, Nodeid = regInfo.Nodeid, Tonodeid = 0, Price = Price, Remarks = "充值V点" }; //2.修改用户信息表的v点 db.TpxinPayhisSet.Add(payhis); //userinfo.V += Price; //3.添加金额变化记录 //var amountChangeHis = CreateAmountChangeHis(regInfo.Nodeid, 1, Price, (int)AmountChangeReason.ChargeVDian, Guid.NewGuid().ToString(), "充值V点"); //db.TpxinAmountChangeHisSet.Add(amountChangeHis); if (db.SaveChanges() <= 0) { Alert("充值V点失败"); return(false); } //由VP服务处理V点 var vp = new VPHelper(); var result = vp.SetV(new VPChargeVDian { Amount = Price, Nodeid = regInfo.Nodeid, Reason = (int)AmountChangeReason.ChargeVDian, Remark = "充值V点", Transferid = payhis.Hisid.ToString(), }); if (result.Result <= 0) { Alert("充值V点失败"); log.Error("充值V点失败:" + result.Message); return(false); } _businessID = payhis.Hisid; return(true); }
/// <summary> /// 支付V点(查看文章) /// </summary> /// <param name="req"></param> /// <returns></returns> public MessageDto PayVDian(ReqPayVDian req) { #region 数据验证 TnetReginfo regInfo = PxinCache.GetRegInfo(req.Nodeid); if (regInfo == null) { Alert("用户不存在"); return(null); } //检查支付密码 //if (!CheckPayPwd(regInfo, req.Pwd, false)) //{ // Alert("支付密码错误"); // return false; //} TpxinMessage tpxinMessage = db.TpxinMessageSet.FirstOrDefault(a => a.Infoid == req.InfoID && a.Status == 1); if (tpxinMessage == null) { Alert("文章不存在"); return(null); } if (tpxinMessage.Price == 0) { Alert("该文章不需要收费"); return(null); } if (tpxinMessage.Nodeid == regInfo.Nodeid) { Alert("不能给自己的文章付费"); return(null); } //TpxinUserinfo tpxinUserinfo = db.TpxinUserinfoSet.FirstOrDefault(a => a.Nodeid == regInfo.Nodeid); var vp = new VPHelper(); var vpDian = vp.GetTpxinUserinfo(regInfo.Nodeid); if (vpDian.VDianBalance < tpxinMessage.Price) { Alert("V点余额不足,请先充值"); return(null); } TpxinPayhis pay = db.TpxinPayhisSet.FirstOrDefault(a => a.Infoid == tpxinMessage.Infoid && a.Nodeid == regInfo.Nodeid && a.Typeid == 3); if (pay != null) { Alert("您已支付查看文章费用"); return(null); } #endregion try { db.BeginTransaction(); //添加查看用户v点支付历史 TpxinPayhis payhis = new TpxinPayhis() { Createtime = DateTime.Now, Infoid = tpxinMessage.Infoid, Typeid = 3, Nodeid = regInfo.Nodeid, Tonodeid = tpxinMessage.Nodeid, Price = tpxinMessage.Price, Remarks = "查看文章" }; db.TpxinPayhisSet.Add(payhis); //减去查看用户v点数量 //TpxinUserinfo userinfo = db.TpxinUserinfoSet.FirstOrDefault(a => a.Nodeid == regInfo.Nodeid); //if (userinfo.V <= 0) //{ // Alert("支付失败,V点不足"); // return null; //} //userinfo.V -= tpxinMessage.Price; //var transferId = Guid.NewGuid().ToString(); //增加发布用户v点数量 //TpxinUserinfo userinfo1 = db.TpxinUserinfoSet.FirstOrDefault(a => a.Nodeid == tpxinMessage.Nodeid); //userinfo1.V += tpxinMessage.Price; var tpxinMsgUser = PxinCache.GetRegInfo(tpxinMessage.Nodeid); var nodeName = tpxinMsgUser == null ? "" : tpxinMsgUser.Nodename; //添加金额变化记录 //var reduce = CreateAmountChangeHis(regInfo.Nodeid, 1, -tpxinMessage.Price, (int)AmountChangeReason.ViewArticle, transferId, $"查看付费-{nodeName}"); //db.TpxinAmountChangeHisSet.Add(reduce); //var add = CreateAmountChangeHis(tpxinMessage.Nodeid, 1, tpxinMessage.Price, (int)AmountChangeReason.ViewArticle, transferId, $"查看收款-{regInfo.Nodename}"); //db.TpxinAmountChangeHisSet.Add(add); if (db.SaveChanges() <= 0) { Alert("支付失败:" + db.Message); log.Error("查看文章,支付失败,db:" + db.Message); db.Rollback(); return(null); } //VP服务设置V点 var result = vp.SetV(new VPPayVDian { FromNodeid = regInfo.Nodeid, FromRemark = $"查看付费-{Helper.FilterChar(nodeName)}", ToNodeid = tpxinMessage.Nodeid, ToRemark = $"查看收款-{Helper.FilterChar(regInfo.Nodename)}", Amount = tpxinMessage.Price, Reason = (int)AmountChangeReason.ViewArticle, Transferid = payhis.Hisid.ToString(), }); if (result.Result <= 0) { Alert(result.Message, result.Result); db.Rollback(); return(null); } db.Commit(); } catch (Exception ex) { log.Info("查看文章,支付失败。原因:" + ex); Alert("支付失败"); db.Rollback(); return(null); } var query = from msg in db.VpxinMessageSet where msg.Infoid == req.InfoID select new MessageDto { Commentnum = msg.Commentnum, Nodeid = msg.Msgnodeid, Localnodeid = msg.Localnodeid, Content = msg.Content, Createtime = msg.Createtime, Down = msg.Down, Infoid = msg.Infoid, Ispay = msg.Ispay, Picurl = msg.Picurl, Price = msg.Price, Reward = msg.Reward, Sound = msg.Sound, Up = msg.Up, Video = msg.Video, IsDown = msg.IsDown, IsUp = msg.IsUp }; MessageDto msgModel = query.FirstOrDefault(); Alert("支付成功", 1); return(msgModel); }
/// <summary> /// 打赏 /// </summary> /// <param name="req"></param> /// <returns></returns> public bool CreateReward(ReqCreateReward req) { if (req.Reward > 100) { Alert("打赏金额不能超过100V"); return(false); } TnetReginfo regInfo = PxinCache.GetRegInfo(req.Nodeid); TpxinMessage tpxinMessage = db.TpxinMessageSet.FirstOrDefault(a => a.Infoid == req.Infoid && a.Status == 1); if (tpxinMessage == null) { Alert("信友圈信息不存在"); return(false); } if (regInfo.Nodeid == tpxinMessage.Nodeid) { Alert("不能自己给自己打赏"); return(false); } if (tpxinMessage.Price > 0) { TpxinPayhis tpxinPayhis = db.TpxinPayhisSet.FirstOrDefault(a => a.Infoid == tpxinMessage.Infoid && a.Nodeid == req.Nodeid && a.Typeid == 3); if (tpxinPayhis == null) { Alert("请支付V点查看后点赞或踩"); return(false); } } TpxinPraise tpxinPraise = db.TpxinPraiseSet.FirstOrDefault(a => a.Infoid == req.Infoid && a.Fromnodeid == req.Nodeid); if (tpxinPraise != null && tpxinPraise.Reward > 0) { Alert("一个文章只能打赏一次"); return(false); } #region 由VP服务设置V点 try { db.BeginTransaction(); if (tpxinPraise == null) { //添加打赏用户踩赞历史表 tpxinPraise = new TpxinPraise { Infoid = req.Infoid, Createtime = DateTime.Now, Fromnodeid = req.Nodeid, Tonodeid = tpxinMessage.Nodeid, Remarks = "", Reward = req.Reward, Status = 0 }; db.TpxinPraiseSet.Add(tpxinPraise); } else { tpxinPraise.Reward = req.Reward; } var tpxinMsgUser = PxinCache.GetRegInfo(tpxinMessage.Nodeid); if (db.SaveChanges() <= 0) { Alert("打赏失败"); log.Error("打赏失败,提交db失败:" + db.Message); db.Rollback(); return(false); } var vp = new VPHelper(); var result = vp.SetV(new VPPayVDian { FromNodeid = req.Nodeid, FromRemark = $"打赏-{Helper.FilterChar(tpxinMsgUser.Nodename)}", ToNodeid = tpxinMessage.Nodeid, ToRemark = $"赏金-{Helper.FilterChar(regInfo.Nodename)}", Amount = req.Reward, Reason = (int)AmountChangeReason.Reward, Transferid = tpxinPraise.Hisid.ToString(), }); if (result.Result <= 0) { Alert(result.Message, result.Result); db.Rollback(); return(false); } db.Commit(); } catch (Exception ex) { Alert("打赏失败"); log.Error("打赏失败,异常:" + ex); db.Rollback(); return(false); } #endregion Alert("打赏成功", 1); return(true); }