Example #1
0
        /// <summary>
        /// 注册
        /// </summary>
        /// <param name="domainModel"></param>
        /// <returns></returns>
        public async Task <int> InsertTokenBrandAsync(RegisterRequestDomainModel domainModel)
        {
            if (domainModel == null)
            {
                return(0);
            }
            var oldTokenBrand = await GetTokenBrandAsync(domainModel.Token, domainModel.AppId?.ToString() ?? "", domainModel.DeviceId);

            PushTokenBrand entity = null;

            if (oldTokenBrand == null)
            {
                entity          = _mapper.Map <RegisterRequestDomainModel, PushTokenBrand>(domainModel);
                entity.CreateAt = entity.UpdateAt = DateTimeHelper.GetNow();
                entity.Id       = _idGeneratorService.GenerateId();
                int row = await _repository.InsertAsync(entity);
            }
            else
            {
                entity = oldTokenBrand;
            }

            foreach (var detail in domainModel.DeviceTokens)
            {
                detail.TokenBrandId = entity.Id;
                detail.CreateAt     = detail.UpdateAt = DateTimeHelper.GetNow();
                await _pushTokenBrandDetailService.InsertAsync(detail);
            }
            return(domainModel.DeviceTokens.Count() + 1);
        }
Example #2
0
        public ErrCode Register(RegisterRequestDto dto, out string retMsg)
        {
            retMsg = "";
            try
            {
                int brandId;
                if (!_tokenBrandLogic.MatchBrandId(dto.Brand, out brandId))
                {
                    return(ErrCode.DataIsnotExist);
                }
                int systemType = brandId == APPLE_BRAND_ID ? 0 : 1;
                //获取通过RToken获取注册列表
                var tokenBrandList = _pushTokenBrandService.GetTokenBrandListByTokenAsync(dto.Token).Result;
                var tokenBrands    = tokenBrandList.Where(e => e.SystemType == systemType).OrderByDescending(e => e.UpdateAt).ToList();
                var tokenBrand     = tokenBrands.SingleOrDefault(e => e.AppId == dto.AppId && e.BrandId == brandId && e.DeviceId == dto.DeviceId);

                if (tokenBrands.Count() >= 3)
                {
                    for (int i = 2; i < tokenBrands.Count(); i++)
                    {
                        int deleteRow = _pushTokenBrandService.DeleteTokenBrandByIdAsync(tokenBrands[i].Id).Result;
                    }
                }

                //检查AppId是否存在
                if (!_tokenBrandLogic.CheckAppId(dto.AppId.Value, out retMsg))
                {
                    return(ErrCode.AppNotExist);
                }

                //清除设备之前注册的用户信息,避免设备收到别的用户的消息。
                _pushTokenBrandService.TryClearDeviceOldUserAsync(dto.DeviceId, dto.Token).Wait();

                RegisterRequestDomainModel model = _mapper.Map <RegisterRequestDomainModel>(dto);
                model.SystemType = systemType;
                model.BrandId    = brandId;
                var ret = _pushTokenBrandService.InsertTokenBrandAsync(model).Result;
                if (ret > 0)
                {
                    return(ErrCode.Sucess);
                }
                return(ErrCode.Failure);
            }
            catch (Exception ex)
            {
                retMsg = ex.Message;
                return(ErrCode.Failure);
            }
        }