NopCommerce 4.2 之微信小程序 - 每日签到功能

Posted konkac

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NopCommerce 4.2 之微信小程序 - 每日签到功能相关的知识,希望对你有一定的参考价值。

        /// <summary>
        /// 调用接口自动签到,并返回签到结果
        /// </summary>
        /// <returns></returns>
        [Route("index")]
        [APIFilter(true, true)]
        public APIResult<object> index()
        {
            //设置为驼峰命名(即将实体全部首字母小写处理)
            var serializerSettings = new JsonSerializerSettings
            {
                ContractResolver = new CamelCasePropertyNamesContractResolver()
            };

            SignInDetailModel model = new SignInDetailModel();
            //配置信息需要传递
            model.Config = new SignInDetailModel.ConfigModel()
            {
                DayIntegral = _customerSignInSettings.DayIntegral,
                DurationReward = _customerSignInSettings.DurationReward,
                DurationCycle = _customerSignInSettings.DurationCycle,
                IsEnable = _customerSignInSettings.IsEnable
            };
            if (model.Config.IsEnable)
            {
                return Success(JsonConvert.DeserializeObject(JsonConvert.SerializeObject(model, Formatting.None, serializerSettings)), "");
            }

            model.IsCurSign = false;
            var signday = false;//是否当天签到
            if (CanSignInByToday(_workContext.CurrentCustomer.Id))
            {
                //签到
                var signinfo = GetCustomerSignIn(_workContext.CurrentCustomer.Id);
                DateTime oldlastsigntime = signinfo.LastSignTime.HasValue? signinfo.LastSignTime.Value:DateTime.UtcNow.AddYears(-1);//给一个默认的时间点(这里就给一个一年前的时间点)
                signinfo.LastSignTime = DateTime.UtcNow;
                signinfo.SignDaySum += 1;//签到的次数(单纯统计使用)
                //处理积分
                int needAddIntegral = _customerSignInSettings.DayIntegral;  //需要增加的各分
                bool isReward = false;


                //连续登录
                if (oldlastsigntime.Date == (DateTime.UtcNow.AddDays(-1).Date))
                {
                    //连续签到
                    signinfo.DurationDaySum += 1;

                    if (_customerSignInSettings.DurationCycle > 0)
                    {
                        signinfo.DurationDay += 1;
                        if (signinfo.DurationDay > _customerSignInSettings.DurationCycle)
                        {
                      
                            signinfo.DurationDay = 1;
                        }
                    
                        if (signinfo.DurationDay == _customerSignInSettings.DurationCycle)
                        {
                            needAddIntegral += _customerSignInSettings.DurationReward;
                            isReward = true;
                        }
                    }
                    else
                    {
                        signinfo.DurationDay = 1;
                    }
                }
                else
                {
                    //没有连续签到,从一天开始签到
                    signinfo.DurationDay = 1;
                    signinfo.DurationDaySum = 1;
                }
                //签到送积分
                if (_rewardPointsSettings.Enabled)
                {
                    var rewardPoints = needAddIntegral;
                    var customer = _customerService.GetCustomerById(_workContext.CurrentCustomer.Id);
                    _rewardPointService.AddRewardPointsHistoryEntry(customer, rewardPoints, _storeContext.CurrentStore.Id,
                    _localizationService.GetResource("RewardPoints.Message.PointsForCustomerSignIn"));
                }

                //当前签到
                signday = true;

            }
            //当天签到
            if (signday)
            {
                model.IsCurSign = true;
            }
           
            var customerSigninfo = GetCustomerSignIn(_workContext.CurrentCustomer.Id);
            model.CurSignDurationDay = customerSigninfo.DurationDay;
            model.CurSignDaySum = customerSigninfo.SignDaySum;
            //用户信息
            model.CustomerId = _workContext.CurrentCustomer.Id;
            model.CustomerName = _workContext.CurrentCustomer.Username;
            //获取当前用户的可用积分
            int rewardPointsBalance = _rewardPointService.GetRewardPointsBalance(_workContext.CurrentCustomer.Id, _storeContext.CurrentStore.Id);
            decimal rewardPointsAmountBase = _orderTotalCalculationService.ConvertRewardPointsToAmount(rewardPointsBalance);//将积分转换为价值
            decimal rewardPointsAmount = _currencyService.ConvertFromPrimaryStoreCurrency(rewardPointsAmountBase, _workContext.WorkingCurrency);
            model.RewardPointsBalance = rewardPointsBalance;//
            model.RewardPointsAmount = _priceFormatter.FormatPrice(rewardPointsAmount, true, false);//价值格式化为本地货币

            return Success(JsonConvert.DeserializeObject(JsonConvert.SerializeObject(model, Formatting.None, serializerSettings)), "");



        }

 

以上是关于NopCommerce 4.2 之微信小程序 - 每日签到功能的主要内容,如果未能解决你的问题,请参考以下文章

nopcommerce4.2微信小程序/微信商城开发/微信电商程序开发

性能测试之微信小程序小试

第二次作业之微信小程序

微信小程序之微信支付(Django)

《animationtransition之微信小程序》

《animationtransition之微信小程序》