Example #1
0
        /// <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);
        }
Example #2
0
        /// <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);
        }