Пример #1
0
        public JsonResult EditSave(RedPack rp)
        {
            AjaxMsgResult  result      = new AjaxMsgResult();
            RedPackService x_opService = new RedPackService();

            if (rp.ID > 0)  //更新
            {
                int i = x_opService.Update(() => new RedPack()
                {
                    RbCount    = rp.RbCount,
                    RbMoney    = rp.RbMoney,
                    RbTotal    = rp.RbTotal,
                    UpdateTime = DateTime.Now,
                    GetPercent = rp.GetPercent
                }, a => a.ID == rp.ID);
                if (i > 0)
                {
                    result.Success = true;
                }
                else
                {
                    result.Msg = "更新失败,没有找到该用户!";
                }
            }
            else
            {
                rp.IsValid    = 1;
                rp.CreateTime = DateTime.Now;
                rp.UpdateTime = DateTime.Now;
                x_opService.Insert(rp);
                result.Success = true;
            }
            return(Json(result));
        }
Пример #2
0
        public string TestGetRedPack(string openid = "0")
        {
            //RedPack.CreateRedPack(2,"2018-08") ;

            //var a = RedPack.GetMoneys();
            //var a = RedPack.GetMoneys2();
            string nowday   = DateTime.Now.ToString("yyyy-MM-dd");
            string nowmonth = DateTime.Now.ToString("yyyy-MM");

            if (string.IsNullOrEmpty(openid))
            {
                for (int s = 51; s <= 52; s++)
                {
                    openid = "xjy" + s.ToString();
                    for (int i = 1; i <= 10; i++)
                    {
                        string sql        = string.Format("SELECT COUNT(1) FROM RedPackScanRecord WHERE   OpenId ='{0}' AND CONVERT(VARCHAR(10),ScanDate,121) = '{1}'  ", openid, nowday);
                        int    nowdayscan = SqlHelper2.GetCount(CommandType.Text, sql);
                        var    money      = RedPack.GetMoney(nowdayscan, openid, nowmonth);
                        //增加扫描红包记录
                        sql = string.Format(@"INSERT INTO dbo.RedPackScanRecord
                                            ( OpenId ,Money ,ScanCode ,IsPay ,PayId,IsFirst,ScanMonth)
                                    VALUES  ( '{0}' , -- OpenId - varchar(50)
                                              {1} , -- Money - float
                                              '{2}' , -- ScanCode - varchar(50)
                                              0 , -- IsPay - int
                                              0 , -- PayId - int
                                              {4},'{3}') ;
                                    ", openid, money, "", nowmonth, nowdayscan == 0 ? 1 : 0);
                        SqlHelper2.ExecuteNonQuery(CommandType.Text, sql);
                    }
                }
            }
            else
            {
                string sql        = string.Format("SELECT COUNT(1) FROM RedPackScanRecord WHERE   OpenId ='{0}' AND CONVERT(VARCHAR(10),ScanDate,121) = '{1}'  ", openid, nowday);
                int    nowdayscan = SqlHelper2.GetCount(CommandType.Text, sql);
                var    money      = RedPack.GetMoney(nowdayscan, openid, nowmonth);
                //增加扫描红包记录
                sql = string.Format(@"INSERT INTO dbo.RedPackScanRecord
                                            ( OpenId ,Money ,ScanCode ,IsPay ,PayId,IsFirst,ScanMonth)
                                    VALUES  ( '{0}' , -- OpenId - varchar(50)
                                              {1} , -- Money - float
                                              '{2}' , -- ScanCode - varchar(50)
                                              0 , -- IsPay - int
                                              0 , -- PayId - int
                                              {4},'{3}') ;
                                    ", openid, money, "", nowmonth, nowdayscan == 0 ? 1 : 0);
                SqlHelper2.ExecuteNonQuery(CommandType.Text, sql);
            }

            return("");
        }
Пример #3
0
        public string TiXian(dynamic requestData)
        {
            RJson  r      = new RJson();
            string openid = requestData.OpenId;

            try
            {
                string kaiguan = ConfigurationManager.AppSettings["kaiguan"];
                if (kaiguan == "ON")
                {
                    if (string.IsNullOrEmpty(openid))
                    {
                        r.message = "参数错误";
                    }
                    else
                    {
                        int isRegist = RedPack.GetIsRegist(openid);
                        if (isRegist == 0)
                        {
                            r.message = "您还未注册,注册后方可提现";
                        }
                        else if (isRegist == -2) //表示是岗位是调味品供货商 的会员
                        {
                            r.message = "调味品供货商";
                        }
                        else if (isRegist == -1) //表示是队员 返回
                        {
                            r.message = "队员不能参与活动";
                        }
                        else
                        {
                            r = RedPack.PayAction(openid);
                        }
                    }
                }
                else
                {
                    r.message = "活动现处于关闭状态,谢谢~";
                }
            }
            catch (Exception ex)
            {
                r.message = "有异常";
                RedPack.AddAlertLog(openid, ex.ToString(), "tixian-error");
            }
            return(JsonConvert.SerializeObject(r));
        }
Пример #4
0
        public string GetHistory(string openid)
        {
            RHistoryJson r = new RHistoryJson();

            try
            {
                if (string.IsNullOrEmpty(openid))
                {
                    r.message = "参数有误";
                }
                else
                {
                    string    sql = string.Format(@"SELECT  * FROM  RedPackScanRecord WHERE OpenId = '{0}'", openid);
                    DataTable dt  = SqlHelper2.ExecuteDataTable(sql);
                    r.haveTxMoney = Convert.ToDouble(dt.Compute("Sum(Money)", "IsPay=1").ToString() == "" ? 0 : dt.Compute("Sum(Money)", "IsPay=1")); //已提现金额
                    r.kTxMoney    = Convert.ToDouble(dt.Compute("Sum(Money)", "IsPay=0").ToString() == "" ? 0 : dt.Compute("Sum(Money)", "IsPay=0")); //还没有进行提现的金额
                    //获取用户扫描但是未提现的金额总和
                    //                string sql = string.Format(@"SELECT  ISNULL(SUM(Money),0) Total
                    //                                  FROM dbo.RedPackScanRecord WHERE OpenId = '{0}' AND IsPay = 0 ", openid);
                    //                r.kTxMoney = Convert.ToDouble(SqlHelper2.ExecuteScalar(CommandType.Text, sql));
                    if (r.kTxMoney > 1)
                    {
                        r.isKeTiXian = 1;
                    }
                    //获取用户扫描 提现记录
                    sql = string.Format(@"SELECT * FROM (
                                    SELECT Money Money,CONVERT(VARCHAR(30),ScanDate,121) CreateDate,'+' Action FROM dbo.RedPackScanRecord WHERE OpenId = '{0}'
                                    UNION 
                                    SELECT PayAmout Money,CONVERT(VARCHAR(30),PayDate,121) CreateDate,'-' Action FROM dbo.RedPackPayRecord WHERE OpenId = '{0}'
                                    ) t ORDER BY CreateDate", openid);
                    var q = SqlHelper2.ExecuteDataTable(sql);
                    r.data          = q;                           //用户扫描 提现记录
                    r.isRegist      = RedPack.GetIsRegist(openid); //是否注册用户 0未注册 1已注册
                    r.scanCount     = dt.Rows.Count;
                    r.result_status = "succ";                      //返回成功状态
                }
            }
            catch (Exception ex)
            {
                r.message = "有异常";
                RedPack.AddAlertLog(openid, ex.ToString(), "GetHistory-error");
            }

            return(JsonConvert.SerializeObject(r));
        }
Пример #5
0
        public override string GiveRedPackTo(Player player, decimal amount)
        {
            string  rl;
            RedPack redPack = new RedPack();

            if (!Request(redPack, player.WeixinName, amount, "恭喜获得苹果机游戏红包", "苹果机游戏", "申请红包", "一天只能领一个红包"))
            {
                _playerService.AdjustAccount(player, amount, "红包");
                rl = "发放出现异常,一天只能领两次,请明天再试";
            }
            else
            {
                rl = "红包领取成功";
            }
            _storeHouse.AddEntity <RedPack>(redPack);
            try
            {
                _storeHouse.SaveChanges();
            }
            catch (DbUpdateConcurrencyException ex)
            {
                foreach (var entry in ex.Entries)
                {
                    if (entry.Entity is Account)
                    {
                        decimal databaseValue = _storeHouse.GetAccountAsNoTracking(player.Account.Id).Balance;
                        decimal currentValue  = (decimal)entry.Property("balance").CurrentValue;
                        entry.Property("balance").CurrentValue  = currentValue + ((decimal)entry.Property("balance").OriginalValue - databaseValue);
                        entry.Property("balance").OriginalValue = databaseValue;
                    }
                    else
                    {
                        throw new NotSupportedException(player.Account.Id + "账户变更冲突");
                    }
                }
                _storeHouse.SaveChanges();
            }
            return(rl);
        }
Пример #6
0
        /// <summary>
        /// 调用外部红包发送接口
        /// </summary>
        /// <param name="redPack">红包</param>
        /// <param name="re_openid_"></param>
        /// <param name="amount_"></param>
        /// <param name="wishing_"></param>
        /// <param name="send_name_"></param>
        /// <param name="act_name_"></param>
        /// <param name="remark_"></param>
        /// <returns></returns>
        /// <summary>
        /// 一段时间发出的红包
        /// </summary>
        /// <param name="fromDate">开始日期</param>
        /// <param name="toDate">结束日期</param>
        /// <returns></returns>
        private bool Request(RedPack redPack, string re_openid_,
                             decimal amount_,
                             string wishing_,
                             string send_name_,
                             string act_name_,
                             string remark_)
        {
            WxPayData redPackRequest = new WxPayData();

            redPackRequest.SetValue("re_openid", re_openid_);
            redPackRequest.SetValue("total_amount", (int)(amount_ * 100));
            redPackRequest.SetValue("wishing", wishing_);
            redPackRequest.SetValue("send_name", send_name_);
            redPackRequest.SetValue("act_name", act_name_);
            redPackRequest.SetValue("remark", remark_);
            WxPayData res = WxPayApi.WxRedPack(redPackRequest);

            if (res.GetValue("return_code").ToString() == "SUCCESS")
            {
                redPack.Err_code = res.GetValue("err_code").ToString();
            }
            else
            {
                redPack.Err_code = "requestFail";
            }
            if (res.GetValue("return_code").ToString() == "SUCCESS" &&
                res.GetValue("result_code").ToString() == "SUCCESS")
            {
                redPack.Send_listid = res.GetValue("send_listid").ToString();
                redPack.WeixinName  = res.GetValue("re_openid").ToString();
                redPack.Amount      = decimal.Parse(res.GetValue("total_amount").ToString()) / 100;
                redPack.Mch_billno  = res.GetValue("mch_billno").ToString();
                return(true);
            }
            else
            {
                return(false);
            }
        }
Пример #7
0
        public static RedPackRes SendRePack(RedPack redPack, string key, string certpath, string certpwd)
        {
            var url = "https://api.mch.weixin.qq.com/mmpaymkttransfers/sendredpack";

            return(PayRequest <RedPackRes>(redPack, key, url, certpath, certpwd));
        }
Пример #8
0
        public async Task <string> ScanPressureTest(dynamic requestData)
        {
            RScanJson r = new RScanJson();

            string kaiGuan = ConfigurationManager.AppSettings["kaiguan"];
            //if (kaiGuan == "ON")
            //{
            string openid = requestData.OpenId;
            string scode  = requestData.Scode;

            try
            {
                if (string.IsNullOrEmpty(openid) || string.IsNullOrEmpty(scode))
                {
                    r.message = "参数有误";
                }
                else
                {
                    #region  1.判断是否注册,是否是队员
                    int isRegist = RedPack.GetIsRegist(openid);
                    if (isRegist == 1)
                    {
                        r.isRegist = 1;
                    }
                    else if (isRegist == -1) //表示是队员 返回
                    {
                        r.isRegist = 0;
                        r.message  = "队员不能扫码";
                        return(JsonConvert.SerializeObject(r));
                    }
                    #endregion

                    #region 2.获取用户扫描但是未提现的金额总和
                    string sql = "";
                    sql        = string.Format(@"SELECT  ISNULL(SUM(Money),0) Total 
                                  FROM dbo.RedPackScanRecord WHERE OpenId = '{0}' AND IsPay = 0 ", openid);
                    r.kTxMoney = Convert.ToDouble(SqlHelper2.ExecuteScalar(CommandType.Text, sql));
                    if (r.kTxMoney > 1)
                    {
                        r.isKeTiXian = 1;
                    }
                    #endregion

                    //当天
                    string nowDay = DateTime.Now.ToString("yyyy-MM-dd");
                    //当月
                    string nowMonth = DateTime.Now.ToString("yyyy-MM");

                    //string a = CheckRule(openid, scode);

                    //验证二维码是否有效
                    sql = string.Format(@"SELECT a.IsScan,b.Money,convert(varchar(19),b.ScanDate,121) ScanDate
                                            FROM dbo.RedPackCode a LEFT JOIN dbo.RedPackScanRecord b ON a.Code=b.ScanCode
                                            WHERE a.Code = '{0}' ", scode);
                    DataTable dt = SqlHelper2.ExecuteDataTable(sql);
                    if (dt.Rows.Count == 0)
                    {
                        r.code_status = "非活动码";
                        r.message     = "此码不属于本次活动";
                        RedPack.AddAlertLog(openid, scode + ":" + r.message, "scan");
                    }
                    //配合压测 mark掉
                    //else if (Convert.ToInt16(dt.Rows[0]["IsScan"]) == 1)
                    //{
                    //    r.code_status = "已被扫";
                    //    r.money = Convert.ToDouble(dt.Rows[0]["Money"]);
                    //    r.scan_date = dt.Rows[0]["ScanDate"].ToString();
                    //    r.message = "该二维码已被扫描";
                    //    RedPack.AddAlertLog(openid, scode + ":" + r.message, "scan");
                    //}
                    else
                    {
                        //验证当天扫描是否超过10次
                        sql = string.Format("SELECT COUNT(1) FROM RedPackScanRecord WHERE   OpenId ='{0}' AND CONVERT(VARCHAR(10),ScanDate,121) = '{1}'  ", openid, nowDay);
                        int nowDayScan = SqlHelper2.GetCount(CommandType.Text, sql);
                        if (nowDayScan >= 10)
                        {
                            r.message = "当天扫描是已超过10次";
                            RedPack.AddAlertLog(openid, r.message, "scan");
                        }
                        else
                        {
                            sql = string.Format("SELECT COUNT(1) FROM RedPackScanRecord WHERE   OpenId ='{0}' ", openid);
                            int allScan = SqlHelper2.GetCount(CommandType.Text, sql);

                            //去抽红包
                            double money = RedPack.GetMoney(allScan, openid, nowMonth);

                            #region 增加扫描红包记录
                            sql = string.Format(@"INSERT INTO dbo.RedPackScanRecord
                                            ( OpenId ,Money ,ScanCode ,IsPay ,PayId,IsFirst,ScanMonth)
                                    VALUES  ( '{0}' , -- OpenId - varchar(50)
                                              {1} , -- Money - float
                                              '{2}' , -- ScanCode - varchar(50)
                                              0 , -- IsPay - int
                                              0 , -- PayId - int
                                              {4},'{3}') ;
                                 UPDATE dbo.RedPackCode SET IsScan =1,UseDate = GETDATE() WHERE Code = '{2}';
                                 UPDATE dbo.RedPackConfig SET LeiJiMoney = LeiJiMoney + {1} WHERE Month = '{3}'
                                    ", openid, money, scode, nowMonth, nowDayScan == 0 ? 1 : 0);
                            LogHelper.WriteMsg("sacn增加扫描红包记录-openid:" + openid + ",sql:" + sql);
                            SqlHelper2.ExecuteNonQuery(CommandType.Text, sql);
                            #endregion

                            r.scan_date = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
                            r.money     = money; //返回本次中奖金额

                            //获取用户扫描但是未提现的金额总和
                            sql        = string.Format(@"SELECT  ISNULL(SUM(Money),0) Total 
                                  FROM dbo.RedPackScanRecord WHERE OpenId = '{0}' AND IsPay = 0 ", openid);
                            r.kTxMoney = Convert.ToDouble(SqlHelper2.ExecuteScalar(CommandType.Text, sql));
                            if (r.kTxMoney > 1)
                            {
                                r.isKeTiXian = 1;
                            }

                            r.result_status = "succ"; //返回成功状态
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                r.message = "有异常";
                RedPack.AddAlertLog(openid, ex.ToString(), "scan-error");
            }
            //}
            //else
            //{
            //    r.message = "活动现处于关闭状态,谢谢~";
            //}
            return(JsonConvert.SerializeObject(r));
        }
Пример #9
0
 public void AsyncGenerate(object obj)
 {
     RedPack.CreateQrCodeByMD5(Convert.ToInt32(obj));
 }
Пример #10
0
        /// <summary>
        /// 用户抽奖红包逻辑
        /// </summary>
        /// <param name="userId"></param>
        /// <returns></returns>
        public RedPackListInfo CheckInRedPack(int userId)
        {
            UserInfo            u           = new UserService().GetById(userId);
            RedPackListInfo     info        = new RedPackListInfo();
            List <RedPackCheck> clist       = new List <RedPackCheck>();
            RedPackService      x_rpService = new RedPackService();
            var list  = x_rpService.Get(a => a.IsValid == 1);
            int total = 0;

            foreach (var item in list)
            {
                int          nextv = total + item.GetPercent;
                RedPackCheck rc    = new RedPackCheck()
                {
                    RedPackId = item.ID,
                    MinV      = total,
                    MaxV      = nextv - 1
                };
                clist.Add(rc);
                total = nextv;
            }
            Random rnd       = new Random(DateTime.Now.GetHashCode());
            int    v         = rnd.Next(1, total);
            var    checkitem = clist.Where(a => v >= a.MinV && v <= a.MaxV).FirstOrDefault();

            if (checkitem != null)
            {
                lock (locker)
                {
                    var sitem = this.Get(a => a.UserId == userId).FirstOrDefault();
                    if (sitem == null)
                    {
                        var nowitem = x_rpService.Get(a => a.ID == checkitem.RedPackId && a.IsValid == 1).FirstOrDefault();
                        if (nowitem != null)
                        {
                            if (nowitem.RbCount > 0)
                            {
                                x_rpService.Update(() => new RedPack()
                                {
                                    RbCount = nowitem.RbCount - 1
                                }, a => a.ID == nowitem.ID);
                                RedPackListInfo rpinfo = new RedPackListInfo()
                                {
                                    PackId     = nowitem.ID,
                                    GetTime    = DateTime.Now,
                                    PackMoney  = nowitem.RbMoney,
                                    UserId     = userId,
                                    OpenId     = u.OpenId,
                                    PackStatus = 0
                                };
                                rpinfo.ID = Convert.ToInt32(this.Insert(rpinfo));
                                SendRP(rpinfo);
                                info.PackId    = nowitem.ID;
                                info.RbName    = nowitem.RbName;
                                info.PackMoney = nowitem.RbMoney;
                                return(info);
                            }
                            else
                            {
                                string  sql = "select top 1 * from t_d_redpack where isvalid = 1 and rbcount > 0 order by newid()";
                                RedPack rp  = DataHelper.Fill <RedPack>(sql).FirstOrDefault();
                                if (rp != null)
                                {
                                    x_rpService.Update(() => new RedPack()
                                    {
                                        RbCount = rp.RbCount - 1
                                    }, a => a.ID == rp.ID);
                                    RedPackListInfo rpinfo = new RedPackListInfo()
                                    {
                                        PackId     = rp.ID,
                                        GetTime    = DateTime.Now,
                                        PackMoney  = rp.RbMoney,
                                        OpenId     = u.OpenId,
                                        UserId     = userId,
                                        PackStatus = 0
                                    };
                                    rpinfo.ID = Convert.ToInt32(this.Insert(rpinfo));
                                    SendRP(rpinfo);
                                    info.PackId    = rp.ID;
                                    info.RbName    = rp.RbName;
                                    info.PackMoney = rp.RbMoney;
                                    return(info);
                                }
                                else
                                {
                                    info.PackId = 0;
                                    info.RbName = "红包已发完,请留意后续活动";
                                }
                            }
                        }
                    }
                    else
                    {
                        info.PackId = -1;
                        info.RbName = "您已领取过红包";
                    }
                }
            }
            else
            {
                info.PackId = 0;
                info.RbName = "很遗憾,本次未能抽中红包";
            }

            return(info);
        }