Exemple #1
0
        /// <summary>
        /// 红包开关
        /// </summary>
        /// <param name="companyId">公司ID</param>
        /// <returns></returns>
        public string OpenRedBag(string companyID)
        {
            HF.Cloud.BLL.Common.Logger.Error("OpenRedBag 获取到的参数CompanyID:" + companyID);
            //查看时间,过期则不可打开
            //if(DateTime.Now.ToString()<"2018-02-16 23:12:12:123")
            //{
            //}
            string resultStr     = "";
            long   companyIdLong = 0;//公司ID

            if (long.TryParse(companyID, out companyIdLong))
            {
                //1通过公司id在用户表中看当前公司够5个人不够
                SB_UserEL userEL = new SB_UserEL();
                userEL.CompanyID = companyIdLong;
                DataTable dt_User = userEL.ExecDT(44);
                //1.1够5个人则开始在红包表里面添加红包数据
                if (dt_User != null && dt_User.Rows.Count >= 5)
                {
                    //2 查看已经发了多少钱,发过的总数大于1000停止发送
                    DataTable dt_HongBalAllVa = DbHelperSQL.Query("select sum(HongBaoValue) as AllValue from T_HongBao where Valid=1").Tables[0];
                    string    allValueStr     = dt_HongBalAllVa.Rows[0][0].ToString();
                    //2.1已经发送的总金额小于900的话继续发
                    if (string.IsNullOrEmpty(allValueStr) || double.Parse(allValueStr) < 850)
                    {
                        T_HongBaoEL hongBaoEl = new T_HongBaoEL();
                        //查看红包表是否已经存在记录,存在则不添加红包记录
                        hongBaoEl.CompanyID = companyIdLong;
                        DataTable dt_HongBao = hongBaoEl.ExecDT(33);
                        if (dt_HongBao == null || dt_HongBao.Rows.Count < 1)
                        {
                            //3发红包表添加记录
                            //3.1生成公司红包金额10-100随机数,红包个数是金额的0.5-1倍
                            Random ran = new Random();
                            //3.1.1红包金额,取下不取上
                            int comAllValue = ran.Next(10, 100);
                            //3.1.2人数
                            int comNumber = (int)Math.Floor(ran.Next(5, 10) * 0.1 * comAllValue);
                            HF.Cloud.BLL.Common.Logger.Error("OpenRedBag方法红包总金额是:" + comAllValue + "---总人数:" + comNumber);
                            //3.2通过总金额和人数获取评分后的红包值
                            List <Double> listHongV = HongBao.GetRedBagList(double.Parse(comAllValue.ToString()), comNumber, 1.00);
                            //3.3通过获取到的红包值列表,给红包表添加记录
                            for (int i = 0; i < listHongV.Count; i++)
                            {
                                //ID,CompanyID,HongBaoValue,GetUserID,IsGet,
                                //CreateTime,GiveOutTime,Valid
                                //HF.Cloud.BLL.Common.Logger.Error("OpenRedBag方法获得的红包值listHongV是:" + listHongV[i]);
                                hongBaoEl.CompanyID = companyIdLong;
                                //hongBaoEl.HongBaoValue = decimal.Round((decimal)listHongV[i],2);
                                hongBaoEl.HongBaoValue = decimal.Parse(listHongV[i].ToString());
                                hongBaoEl.IsGet        = 1;
                                hongBaoEl.CreateTime   = DateTime.Now.ToString();
                                hongBaoEl.GiveOutTime  = "";
                                hongBaoEl.Valid        = 1;
                                int ra;
                                hongBaoEl.ExecNonQuery(1, out ra);
                            }
                            HF.Cloud.BLL.Common.Logger.Error("OpenRedBag方法生成的红包个数:" + listHongV.Count);
                            resultStr = "success";
                        }
                        else    //已经激活不能再次激活
                        {
                            resultStr = "actived";
                        }
                    }
                    else    //2.2红包奖金池已经用完额度
                    {
                        resultStr = "empty";
                    }
                }
                else//1.2不够5个人则提示人数不够
                {
                    resultStr = "notenough";
                }
            }
            else
            {
                resultStr = "error";
            }
            HF.Cloud.BLL.Common.Logger.Error("OpenRedBag 结果:" + resultStr);
            return(resultStr);
        }
Exemple #2
0
        /// <summary>
        /// 领红包
        /// </summary>
        /// <param name="session">用户sesison</param>
        /// <param name="companyID">发红包的公司ID</param>
        ///<param name="formID">用户提交submit表单的formID</param>
        /// <returns></returns>
        public string GetRedBag(string session, string companyID, string formID)
        {
            HF.Cloud.BLL.Common.Logger.Error("GetRedBag获取的参数session:" + session + "---companyID" + companyID + "---formID" + formID);
            string resultStr = "";
            //查看当前公司有没有红包记录
            long companyIdLong = 0;//公司ID

            if (long.TryParse(companyID, out companyIdLong) && !string.IsNullOrEmpty(companyID) && !string.IsNullOrEmpty(session))
            {
                UserBLL userBLL = new UserBLL();
                //通过session获取UserID
                // long userID = userBLL.GetUserIDBySession(session);

                T_HongBaoEL honBaoEL = new T_HongBaoEL();
                honBaoEL.CompanyID = companyIdLong;
                //查看是否领取过当前公司的红包
                honBaoEL.GetUserSession_True = session.Substring(22, 28);//只获取openid,只有openID是唯一的
                DataTable dt_GetHongBao = honBaoEL.ExecDT(32);
                //如果领取过就返回领取的金额(不能再次领取)
                if (dt_GetHongBao != null && dt_GetHongBao.Rows.Count > 0)
                {
                    resultStr = dt_GetHongBao.Rows[0]["HongBaoValue"].ToString();
                }
                else//没有记录的话就领取红包
                {
                    //获取当前公司未领取的红包
                    DataTable dt_HongBao = honBaoEL.ExecDT(31);
                    if (dt_HongBao != null && dt_HongBao.Rows.Count > 0)
                    {
                        //获取红包值
                        decimal hongBaoValueDecimal = (decimal)dt_HongBao.Rows[0]["HongBaoValue"];
                        decimal dt_decimal_100      = hongBaoValueDecimal * 100;
                        int     dt_decimal_int      = Decimal.ToInt32(dt_decimal_100);
                        int     sHonBao             = dt_decimal_int;
                        HF.Cloud.BLL.Common.Logger.Error("GetRedBag获取的红包值hongBaoValueDecimal:" + hongBaoValueDecimal);

                        //修改当前的红包记录的状态为已经领取
                        honBaoEL.ID = (long)dt_HongBao.Rows[0]["ID"];
                        honBaoEL.GetUserSession_True = session.Substring(22, 28);//只获取openid,只有openID是唯一的
                        honBaoEL.IsGet       = 0;
                        honBaoEL.GiveOutTime = DateTime.Now.ToString();
                        int  ra;
                        long exResult = honBaoEL.ExecNonQuery(21, out ra);
                        if (ra > 0)
                        {
                            //从session中解析openid
                            string str_openid = session.Substring(22, 28);
                            //调用接口发红包
                            string sendResult = SendRedBag(formID, str_openid, hongBaoValueDecimal, companyID);
                            if (sendResult == "success")//红包发送成功
                            {
                                resultStr = hongBaoValueDecimal.ToString();
                            }
                            else
                            {
                                resultStr = "error";
                            }
                        }
                        else
                        {
                            resultStr = "error";
                        }
                    }
                    else//红包已经领完了
                    {
                        resultStr = "null";
                    }
                }
            }
            return(resultStr);
        }