/// <summary> /// 保存账号交易流水 /// </summary> /// <param name="req"></param> /// <returns></returns> public Ptcp <string> AddAccountRecord(M_AddAccountRecordReq req) { var ptcp = new Ptcp <string>(); if (req.IsNull()) { ptcp.DoResult = "请求数据非法"; return(ptcp); } string jsonParam = JsonConvert.SerializeObject(req); Logger.Write(LoggerLevel.Error, "AddAccountRecord_in", "", jsonParam, ""); if (req.TranType <= 0) { ptcp.DoResult = "交易类型错误"; return(ptcp); } if (req.UserId <= 0) { ptcp.DoResult = "会员ID错误"; return(ptcp); } //获取账号信息 var memberInfo = DbSession.MLT.T_MemberRepository.QueryBy(new T_Member() { SysNo = req.UserId }).FirstOrDefault(); if (memberInfo.IsNull() || memberInfo.SysNo <= 0) { ptcp.DoResult = "获取会员信息失败"; return(ptcp); } T_AccountRecord tRecord = new T_AccountRecord(); tRecord.TranType = req.TranType; tRecord.UserId = req.UserId; tRecord.RowCeateDate = DateTime.Now; tRecord.IsPushIn = 0; tRecord.IsEnable = true; tRecord.InRemarks = req.InRemarks; //极光推送消息 M_SendPushReq sendPush = new M_SendPushReq(); sendPush.UserId = req.UserId; #region 处理逻辑 decimal?scoreDb = 0; decimal?scoreWithdrawnDb = 0; DateTime dtNow = DateTime.Now; switch (req.TranType) { #region 一版的 case (int)Enums.TranType.Partic: //参与互动 tRecord.PlusReduce = 1; //交易获取或者使用 1增加 2 使用(减) tRecord.Company = Enums.Rmb; tRecord.TranName = "参与互动"; tRecord.TranNum = req.TranNum; //sendPush.MsgTitle = "参与互动积分增加-Title"; //sendPush.MsgAlert = "参与互动积分增加-Alert"; //sendPush.MsgContent = string.Format("恭喜您参与互动,获得{0}元奖励金。", req.TranNum); sendPush.MsgTitle = string.Format("参与互动{0}增加", Enums.ScoreName); sendPush.MsgAlert = string.Format("恭喜您参与互动,获得{0}{1}元。", Enums.ScoreName, req.TranNum); sendPush.MsgContent = string.Format("参与互动{0}增加", Enums.ScoreName); #region 更新账户积分信息 //更新账户积分信息 DbSession.MLT.T_MemberRepository.Update(new T_Member() { Score = (memberInfo.Score + req.TranNum), ModifyTime = dtNow }, new T_Member() { SysNo = req.UserId }); #endregion break; case (int)Enums.TranType.Share: //邀请好友,分享好友 tRecord.PlusReduce = 1; //交易获取或者使用 1增加 2 使用(减) tRecord.Company = Enums.Rmb; tRecord.TranName = "邀请好友"; tRecord.TranNum = req.TranNum; sendPush.MsgTitle = string.Format("邀请好友{0}增加", Enums.ScoreName); sendPush.MsgAlert = string.Format("恭喜您成功邀请好友,获得{0}{1}元。", Enums.ScoreName, req.TranNum); sendPush.MsgContent = string.Format("邀请好友{0}增加", Enums.ScoreName); #region 更新账户积分信息 //更新账户积分信息 DbSession.MLT.T_MemberRepository.Update(new T_Member() { Score = (memberInfo.Score + req.TranNum), ModifyTime = dtNow }, new T_Member() { SysNo = req.UserId }); #endregion break; case (int)Enums.TranType.PurchaseScore: //转出积分 tRecord.PlusReduce = 2; //交易获取或者使用 1增加 2 使用(减) tRecord.Company = Enums.Rmb; tRecord.TranName = string.Format("转出{0}", Enums.ScoreName); tRecord.TranNum = req.TranNum; sendPush.MsgTitle = string.Format("申请转出{0}", Enums.ScoreName); sendPush.MsgAlert = string.Format("申请转让{0}成功!", Enums.ScoreName); sendPush.MsgContent = string.Format("申请{0}转出", Enums.ScoreName); #region 更新账户积分信息 scoreDb = memberInfo.Score - req.TranNum; scoreWithdrawnDb = 0; if (scoreDb < 0) { scoreDb = 0; } if (scoreDb < memberInfo.ScoreWithdrawn) { scoreWithdrawnDb = scoreDb; } else { scoreWithdrawnDb = memberInfo.ScoreWithdrawn; } //更新账户积分信息 DbSession.MLT.T_MemberRepository.Update(new T_Member() { Score = scoreDb, ScoreWithdrawn = scoreWithdrawnDb, ModifyTime = dtNow }, new T_Member() { SysNo = req.UserId }); #endregion break; case (int)Enums.TranType.Sell: //转入积分 tRecord.PlusReduce = 1; //交易获取或者使用 1增加 2 使用(减) tRecord.Company = Enums.Rmb; tRecord.TranName = string.Format("转入{0}", Enums.ScoreName); tRecord.TranNum = req.TranNum; sendPush.MsgTitle = string.Format("转入{0}增加", Enums.ScoreName); sendPush.MsgAlert = string.Format("恭喜你获得{0}元现金。", req.TranNum); sendPush.MsgContent = string.Format("转入{0}增加", Enums.ScoreName); #region 更新账户积分信息 //更新账户积分信息 DbSession.MLT.T_MemberRepository.Update(new T_Member() { Score = (memberInfo.Score + req.TranNum), ModifyTime = dtNow }, new T_Member() { SysNo = req.UserId }); #endregion break; case (int)Enums.TranType.TiXian: //提现 tRecord.PlusReduce = 2; //交易获取或者使用 1增加 2 使用(减) tRecord.Company = Enums.Rmb; tRecord.TranName = "提现"; tRecord.TranNum = -req.TranNum; sendPush.MsgTitle = "提现操作"; sendPush.MsgAlert = string.Format("恭喜您成功提现{0}元。现金将在24小时通过微信红包发放,尽请查收!", req.TranNum); sendPush.MsgContent = "提现操作"; #region //持久化数据 //更新会员主表提现记录 DbSession.MLT.T_MemberRepository.Update(new T_Member() { Account = 0, //AccountWithdrawn = memberInfo.Account, AccountWithdrawn = 0, ModifyTime = dtNow }, new T_Member() { SysNo = req.UserId }); #endregion break; case (int)Enums.TranType.ExcGoods: //兑换抵用劵 tRecord.PlusReduce = 2; //交易获取或者使用 1增加 2 使用(减) tRecord.Company = Enums.Rmb; tRecord.TranName = "兑换抵用劵"; tRecord.TranNum = -req.TranNum; sendPush.MsgTitle = "兑换抵用劵"; sendPush.MsgAlert = string.Format("恭喜您成功兑换抵用劵,扣除{1}{0}元。", Enums.ScoreName, req.TranNum); sendPush.MsgContent = "兑换抵用劵"; #region 更新账户积分信息 scoreDb = memberInfo.Score - req.TranNum; scoreWithdrawnDb = 0; if (scoreDb < 0) { scoreDb = 0; } if (scoreDb < memberInfo.ScoreWithdrawn) { scoreWithdrawnDb = scoreDb; } else { scoreWithdrawnDb = memberInfo.ScoreWithdrawn; } //更新账户积分信息 DbSession.MLT.T_MemberRepository.Update(new T_Member() { Score = scoreDb, ScoreWithdrawn = scoreWithdrawnDb, ModifyTime = dtNow }, new T_Member() { SysNo = req.UserId }); #endregion break; case (int)Enums.TranType.ReadArticle: //付费,阅读文章 tRecord.PlusReduce = 2; //交易获取或者使用 1增加 2 使用(减) tRecord.Company = Enums.Rmb; tRecord.TranName = "阅读文章"; tRecord.TranNum = -req.TranNum; sendPush.MsgTitle = string.Format("阅读文章{0}扣除", Enums.ScoreName); sendPush.MsgAlert = string.Format("阅读文章,扣除{0}{1}元。", Enums.ScoreName, req.TranNum); sendPush.MsgContent = string.Format("阅读文章{0}扣除", Enums.ScoreName); #region 更新账户积分信息 //更新账户积分信息 DbSession.MLT.T_MemberRepository.Update(new T_Member() { Score = (memberInfo.Score - req.TranNum), ModifyTime = dtNow }, new T_Member() { SysNo = req.UserId }); #endregion break; case (int)Enums.TranType.SaveSelfMedia: //自媒体分享,注册手机号码,获取低佣金 tRecord.PlusReduce = 1; //交易获取或者使用 1增加 2 使用(减) tRecord.Company = Enums.Rmb; //tRecord.TranName = "自媒体分享注册"; tRecord.TranName = "阅读体验"; tRecord.TranNum = req.TranNum; sendPush.MsgTitle = string.Format("转入{0}增加", Enums.ScoreName); sendPush.MsgAlert = string.Format("恭喜你获得{0}元现金。", req.TranNum); sendPush.MsgContent = string.Format("转入{0}增加", Enums.ScoreName); #region 更新账户积分信息 //更新账户积分信息 DbSession.MLT.T_MemberRepository.Update(new T_Member() { Score = (memberInfo.Score + req.TranNum), ModifyTime = dtNow }, new T_Member() { SysNo = req.UserId }); #endregion break; #endregion case (int)Enums.TranType.Share_New: //参与互动 tRecord.PlusReduce = 1; //交易获取或者使用 1增加 2 使用(减) tRecord.Company = Enums.Rmb; tRecord.TranName = "参与互动"; tRecord.TranNum = req.TranNum; sendPush.MsgTitle = "参与互动,现金红包增加"; sendPush.MsgAlert = string.Format("恭喜您参与互动成功,获得 {0} 元现金红包。", req.TranNum); sendPush.MsgContent = "参与互动,现金红包增加"; #region 更新账户积分信息 //更新账户积分信息 DbSession.MLT.T_MemberRepository.Update(new T_Member() { Account = (memberInfo.Account + req.TranNum), ModifyTime = dtNow }, new T_Member() { SysNo = req.UserId }); #endregion break; case (int)Enums.TranType.RecCoupon: //领取优惠劵 tRecord.PlusReduce = 1; //交易获取或者使用 1增加 2 使用(减) tRecord.Company = Enums.Rmb; tRecord.TranName = "领取优惠劵"; tRecord.TranNum = req.TranNum; sendPush.MsgTitle = "领取优惠劵,现金红包增加"; sendPush.MsgAlert = string.Format("恭喜您领取优惠劵成功,获得 {0} 元现金红包。", req.TranNum); sendPush.MsgContent = "领取优惠劵,现金红包增加"; #region 更新账户积分信息 //更新账户积分信息 DbSession.MLT.T_MemberRepository.Update(new T_Member() { Account = (memberInfo.Account + req.TranNum), ModifyTime = dtNow }, new T_Member() { SysNo = req.UserId }); #endregion break; default: ptcp.DoResult = "交易类型错误"; return(ptcp); } DbSession.MLT.T_AccountRecordRepository.Add(tRecord); DbSession.MLT.SaveChange(); if (req.TranNum > 0) { //极光推送消息 jg.SendPush(sendPush); } #endregion ptcp.DoFlag = PtcpState.Success; ptcp.DoResult = "保存成功"; return(ptcp); }
/// <summary> /// 极光推送 /// </summary> /// <param name="req"></param> /// <returns></returns> public Ptcp <string> SendPush(M_SendPushReq req) { var ptcp = new Ptcp <string>(); if (req.IsNull()) { ptcp.DoResult = "请求错误"; return(ptcp); } string jsonParam = JsonConvert.SerializeObject(req); Logger.Write(LoggerLevel.Error, "SendPush_in", "", jsonParam, ""); try { #region if (req.UserId <= 0) { ptcp.DoResult = "会员ID错误"; return(ptcp); } //if (req.SourceTypeSysNo <= 0) //{ // ptcp.DoResult = "来源渠道错误"; // return ptcp; //} if (string.IsNullOrEmpty(req.MsgAlert)) { ptcp.DoResult = "消息alert不能为空"; return(ptcp); } var pushInfo = DbSession.MLT.T_JiGuangPushRepository.QueryBy(new T_JiGuangPush() { UserId = req.UserId, IsEnable = true }, " ORDER BY ModifyTime DESC").FirstOrDefault(); if (pushInfo.IsNull() || pushInfo.SysNo <= 0) { ptcp.DoResult = "没有获取到会员与极光的关联关系"; return(ptcp); } int sourceTypeSysNo = pushInfo.SourceTypeSysNo.GetValueOrDefault(); if (sourceTypeSysNo != (int)Enums.SourceTypeSysNo.AndroIdApp && sourceTypeSysNo != (int)Enums.SourceTypeSysNo.IosApp) { ptcp.DoResult = "平台类型错误"; return(ptcp); } if (string.IsNullOrEmpty(pushInfo.JiGuangSysNo)) { ptcp.DoResult = "没有获取到会员与极光的关联关系"; return(ptcp); } PushClient pushClient = new PushClient(); PushPayload pushPayload = new PushPayload(); if (sourceTypeSysNo == (int)Enums.SourceTypeSysNo.AndroIdApp) { pushPayload.platform = Platform.android(); if (!string.IsNullOrEmpty(req.MsgTitle)) { pushPayload.notification = Notification.android(req.MsgAlert, req.MsgTitle); } else { pushPayload.notification = new Notification().setAlert(req.MsgAlert); } } else if (sourceTypeSysNo == (int)Enums.SourceTypeSysNo.IosApp) { pushPayload.platform = Platform.ios(); pushPayload.notification = new Notification().setAlert(req.MsgAlert); } pushPayload.audience = Audience.s_registrationId(pushInfo.JiGuangSysNo); pushPayload.message = Message.content(req.MsgContent); var res = pushClient.sendPush(pushPayload); DbSession.MLT.T_JiGuangPushRecordRepository.Add(new T_JiGuangPushRecord() { UserId = req.UserId, JiGuangSysNo = pushInfo.JiGuangSysNo, MsgTitle = req.MsgTitle, MsgAlert = req.MsgAlert, MsgContent = req.MsgContent, PushMsgId = res.msg_id.ToString(), PushResult = res.isResultOK() == true ? "1" : "0", SourceTypeSysNo = pushInfo.SourceTypeSysNo, RowCeateDate = DateTime.Now, IsEnable = true }); DbSession.MLT.SaveChange(); ptcp.DoFlag = PtcpState.Success; ptcp.DoResult = "推送成功"; #endregion } catch (Exception ex) { string strEx = string.Format("请求参数:{0};异常:{1}", req, ex.ToString()); Logger.Write(LoggerLevel.Error, "SendPush_ex", "异常", strEx, ""); } return(ptcp); }