Exemple #1
0
        /// <summary>
        /// 赠币
        /// author:林辉
        /// </summary>
        /// <returns></returns>
        public async Task <bool> GiveCurrencyAsync(GiveCurrencyDto giveCurrency)
        {
            ZhangYuRequest Request = new ZhangYuRequest();

            Request.AppKey = _options.Value.AppKey;
            Request.Data   = _sys.Base64Encode(Encoding.UTF8, JsonHelper.SerializeObject(giveCurrency));
            Request.Sign   = _sys.Sha512Encode($"{Request.AppKey}{_options.Value.AppSecret}{Request.Data}{Request.Nonce}{Request.Timestamp}");
            string strJson = JsonHelper.SerializeObject(Request);
            string strUrl  = string.Format(_options.Value.Url, "v1", "gift");

            _log.Info($"用户赠币请求参数{strJson}");
            var response = JsonHelper.DeserializeJsonToObject <ZhangYuResponse>(_sys.PostJsonData(strUrl, strJson, Encoding.UTF8));
            var result   = JsonHelper.DeserializeJsonToObject <CostStatusResult>(_sys.Base64Decode(response.Data));

            _log.Info($"用户赠币返回值{JsonHelper.SerializeObject(response)}");
            if (result.code == 0)
            {
                GiveCurrencyLogDto giveCurrencyLogDto = new GiveCurrencyLogDto
                {
                    CreateTime = DateTime.Now,
                    Key        = giveCurrency.key,
                    Order      = giveCurrency.forderId,
                    UserId     = long.Parse(giveCurrency.fuserId)
                };
                var entity = _mapper.Map <GiveCurrencyLogDto, GiveCurrencyLogEntity>(giveCurrencyLogDto);
                _context.giveCurrencyLog.Add(entity);
                await _context.SaveChangesAsync();

                return(true);
            }
            return(false);
        }
        public async Task <H5ResponseViewModel <object> > UserNewAward([FromBody] H5RequestViewModel Parameters)
        {
            var sysCode = _sys.CheckParameters(Parameters.data, "userverify");
            H5ResponseViewModel <object> response = null;

            if (sysCode == SysCode.Ok)
            {
                string token = Parameters.data.token;
                //token是否有效
                bool isLog = _token.VerifyToken(token);
                if (isLog)
                {
                    UserLoginDto userLogin = JsonHelper.DeserializeJsonToObject <UserLoginDto>(RedisHelper.StringGet($"{CacheKey.Token}{token}", RedisFolderEnum.token, RedisEnum.Five));
                    long         userId    = long.Parse(userLogin.Userid.ToString());
                    sysCode = _userTask.JudgeUser518(userId);
                    bool            isNo         = false;
                    GiveCurrencyDto giveCurrency = new GiveCurrencyDto
                    {
                        amount   = 518.00,
                        forderId = Guid.NewGuid().ToString(),
                        fuserId  = userId.ToString(),
                        key      = _currencyKey.Activity
                    };
                    if (sysCode == SysCode.Ok)
                    {
                        //关闭章鱼赠币
                        // isNo = await _biz.GiveCurrencyAsync(giveCurrency);
                        //从php赠币
                        isNo = await _accout.GiveCurrencyAsync_php(giveCurrency);
                    }
                    _log.InfoFormat("H5用户518领取, 用户id:{0},订单号:{1},code:{2},赠送结果{3}", userLogin.Userid, giveCurrency.forderId, sysCode, isNo);
                }
                else
                {
                    sysCode = SysCode.TokenLose;
                }
            }

            response = new H5ResponseViewModel <object>(sysCode, null);
            return(response);
        }
Exemple #3
0
        public async Task <H5ResponseViewModel <object> > UserEight([FromBody] H5RequestViewModel Parameters)
        {
            Thread.Sleep(3000);
            H5ResponseViewModel <object> response = null;
            bool isLog   = _token.VerifyToken((string)Parameters.data.userOpenId, (string)Parameters.data.sessionToken);
            var  sysCode = SysCode.Ok;

            if (isLog)
            {
                string strJson = RedisHelper.StringGet($"{CacheKey.Token}{(string)Parameters.data.userOpenId}", RedisFolderEnum.token, RedisEnum.Three);
                var    userLog = JsonHelper.DeserializeJsonToObject <UserLoginDto>(strJson);
                sysCode = _userTask.JudgeUser518(userLog.Userid);
                GiveCurrencyDto giveCurrency = new GiveCurrencyDto
                {
                    amount   = 518.00,
                    forderId = Guid.NewGuid().ToString(),
                    fuserId  = userLog.Userid.ToString(),
                    key      = _currencyKey.Activity
                };
                bool isNo = false;
                if (sysCode == SysCode.Ok)
                {
                    //关闭章鱼赠币
                    //isNo = await _biz.GiveCurrencyAsync(giveCurrency);
                    //从php赠币
                    isNo = await _accout.GiveCurrencyAsync_php(giveCurrency);
                }
                _log.InfoFormat("518,用户id:{0},订单号:{1},code:{2},赠送结果{3}", userLog.Userid, giveCurrency.forderId, sysCode, isNo);
            }
            else
            {
                sysCode = SysCode.SessionTokenLose;
            }
            response = new H5ResponseViewModel <object>(sysCode, null);
            return(response);
        }
Exemple #4
0
        public async Task <H5ResponseViewModel <userSignInfoViewModel> > UserSign_v1([FromBody] H5RequestViewModel Parameters)
        {
            H5ResponseViewModel <userSignInfoViewModel> response = null;
            string userId  = _biz.IsNoLogin((string)Parameters.data.token, (string)Parameters.data.userOpenId);
            var    sysCode = SysCode.Ok;
            userSignInfoViewModel userSignInfo = null;

            if (userId != "0")
            {
                int     day      = 0;
                decimal multiple = 0.00m;
                decimal amout    = 0.00m;
                long    user_id  = long.Parse(userId);
                var     userSign = await _userTask.QueryUserSignAsync(user_id);

                UserSignDto userSignDto = null;
                DateTime    nowTime     = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd")); //当前时间
                Random      rd          = new Random();
                int         num         = rd.Next(10, 16);                                         //随机数
                if (userSign != null)
                {
                    //有签到信息
                    DateTime time = Convert.ToDateTime(userSign.Createtime.ToString("yyyy-MM-dd")); //用户最后一次签到时间
                    if (nowTime != time)
                    {
                        if (TimeHelper.Dateday(nowTime, time) == 1)                          //当前时间和签到时间相差一天
                        {
                            if (userSign.Number < 6)                                         //小于六天
                            {
                                multiple = Convert.ToDecimal((userSign.Number * 0.5) + 0.5); //从新计算倍数
                                amout    = num * multiple;
                            }
                            else
                            {
                                multiple = 3;
                                amout    = num * multiple;
                            }
                            day = userSign.Number + 1;
                        }
                        else
                        {
                            //签到中断,从第一天开始计算
                            multiple = Convert.ToDecimal((1 * 0.5) + 0.5);//签到倍数
                            amout    = num * multiple;
                            day      = 1;
                        }
                    }
                    else
                    {
                        sysCode = SysCode.RepeatToReceive;
                    }
                }
                else
                {
                    multiple = Convert.ToDecimal((1 * 0.5) + 0.5);//签到倍数
                    amout    = num * multiple;
                    day      = 1;
                }
                if (sysCode == SysCode.Ok)
                {
                    userSignDto = new UserSignDto
                    {
                        Amount     = amout,
                        Createtime = DateTime.Now,
                        Multiple   = multiple,
                        Number     = day,
                        UserId     = long.Parse(userId)
                    };
                    if (await _userTask.RecordUserSignAsync(userSignDto)) //记录签到记录
                    {
                        GiveCurrencyDto giveCurrencyDto = new GiveCurrencyDto
                        {
                            amount   = double.Parse(userSignDto.Amount.ToString()),
                            forderId = Guid.NewGuid().ToString(),
                            fuserId  = userId.ToString(),
                            key      = _currencyKey.Sign,
                        };
                        bool isNo = false;
                        //关闭章鱼赠币
                        //isNo = await _biz.GiveCurrencyAsync(giveCurrencyDto);
                        //从php 赠币
                        isNo = await _accout.GiveCurrencyAsync_php(giveCurrencyDto);

                        userSignInfo = new userSignInfoViewModel
                        {
                            Amount         = amout.ToString(),
                            Multiple       = multiple.ToString(),
                            SignTime       = DateTime.Now,
                            UserSignNumber = userSignDto.Number.ToString()
                        };
                        _log.InfoFormat("签到,用户id:{0},金额:{1},签到时间{2},订单号:{3},签到结果:{4}"
                                        , userId, userSignDto.Amount, userSignDto.Createtime, giveCurrencyDto.forderId, isNo);
                    }
                }
            }
            else
            {
                sysCode = SysCode.SessionTokenLose;
            }
            response = new H5ResponseViewModel <userSignInfoViewModel>(sysCode, sysCode == SysCode.Ok ? userSignInfo : null);
            return(response);
        }
        public async Task <H5ResponseViewModel <userSignInfoViewModel> > UserSign([FromBody] H5RequestViewModel Parameters)
        {
            var sysCode = _sys.CheckParameters(Parameters.data, "userverify");
            H5ResponseViewModel <userSignInfoViewModel> response = null;
            userSignInfoViewModel userSignInfo = null;

            if (sysCode == SysCode.Ok)
            {
                string token = Parameters.data.token;
                //token是否有效
                bool isLog = _token.VerifyToken(token);
                if (isLog)
                {
                    UserLoginDto userLogin = JsonHelper.DeserializeJsonToObject <UserLoginDto>(RedisHelper.StringGet($"{CacheKey.Token}{token}", RedisFolderEnum.token, RedisEnum.Five));
                    long         userId    = long.Parse(userLogin.Userid.ToString());
                    UserSignDto  userSign  = await _userTask.QueryUserSignAsync(userId);

                    UserSignDto userSignDto = null;
                    DateTime    nowTime     = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd"));//当前时间
                    Random      rd          = new Random();
                    int         day         = 0;
                    decimal     multiple    = 0.00m;
                    decimal     amout       = 0.00m;
                    int         num         = rd.Next(10, 16);//随机数
                    if (userSign != null)
                    {
                        //有签到信息
                        DateTime time = Convert.ToDateTime(userSign.Createtime.ToString("yyyy-MM-dd")); //用户最后一次签到时间
                        if (nowTime != time)
                        {
                            if (TimeHelper.Dateday(nowTime, time) == 1)                          //当前时间和签到时间相差一天
                            {
                                if (userSign.Number < 6)                                         //小于六天
                                {
                                    multiple = Convert.ToDecimal((userSign.Number * 0.5) + 0.5); //从新计算倍数
                                    amout    = num * multiple;
                                }
                                else
                                {
                                    multiple = 3;
                                    amout    = num * multiple;
                                }
                                day = userSign.Number + 1;
                            }
                            else
                            {
                                //签到中断,从第一天开始计算
                                multiple = Convert.ToDecimal((1 * 0.5) + 0.5);//签到倍数
                                amout    = num * multiple;
                                day      = 1;
                            }
                        }
                        else
                        {
                            sysCode = SysCode.RepeatToReceive;
                        }
                    }
                    else
                    {
                        multiple = Convert.ToDecimal((1 * 0.5) + 0.5);//签到倍数
                        amout    = num * multiple;
                        day      = 1;
                    }
                    if (sysCode == SysCode.Ok)
                    {
                        userSignDto = new UserSignDto
                        {
                            Amount     = amout,
                            Createtime = DateTime.Now,
                            Multiple   = multiple,
                            Number     = day,
                            UserId     = userId
                        };
                        if (await _userTask.RecordUserSignAsync(userSignDto)) //记录签到记录
                        {
                            GiveCurrencyDto giveCurrencyDto = new GiveCurrencyDto
                            {
                                amount   = double.Parse(userSignDto.Amount.ToString()),
                                forderId = Guid.NewGuid().ToString(),
                                fuserId  = userId.ToString(),
                                key      = _currencyKey.Sign,
                            };
                            bool isNo = false;
                            //关闭章鱼赠币
                            //isNo = await _biz.GiveCurrencyAsync(giveCurrencyDto);
                            //从php赠币
                            isNo = await _accout.GiveCurrencyAsync_php(giveCurrencyDto);

                            userSignInfo = new userSignInfoViewModel
                            {
                                Amount         = amout.ToString(),
                                Multiple       = multiple.ToString(),
                                SignTime       = DateTime.Now,
                                UserSignNumber = userSignDto.Number.ToString()
                            };
                            _log.InfoFormat("签到,用户id:{0},金额:{1},签到时间{2},订单号:{3},签到结果:{4}"
                                            , userId, userSignDto.Amount, userSignDto.Createtime, giveCurrencyDto.forderId, isNo);
                        }
                    }
                }
                else
                {
                    sysCode = SysCode.TokenLose;
                }
            }
            response = new H5ResponseViewModel <userSignInfoViewModel>(sysCode, sysCode == SysCode.Ok ? userSignInfo : null);
            return(response);
        }