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)); }
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(""); }
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)); }
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)); }
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); }
/// <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); } }
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)); }
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)); }
public void AsyncGenerate(object obj) { RedPack.CreateQrCodeByMD5(Convert.ToInt32(obj)); }
/// <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); }