/// <summary> /// 刷新缓存 /// </summary> /// <returns></returns> private async Task <bool> RefreshDeviceCache() { using (var client = new Service.Config.ConfigClient()) { var result = await client.RefreshDeviceModelCacheAsync(); return(result.Result); } }
/// <summary> /// 发红包 /// </summary> /// <returns></returns> public async Task <Tuple <bool, string, string> > SendRedEnvelopAsync() { try { // 发红包之前再验证下 var validateResult = await ValidateAsync(); if (!validateResult.Item1) { return(validateResult); } // 怼到redis里面 var cacheResult = await _oaRedEnvelopeCacheManager.SaveUserOARedEnvelopeObjectAsync(_oaRedEnvelopeBuilderModel); // 判断是否异步 using (var configClient = new Service.Config.ConfigClient()) { // 判断开关是否打开 var asyncFlag = configClient.GetOrSetRuntimeSwitch("OAEnvelopeAsyscFlag")?.Result?.Value ?? false; // 判断是走同步还是异步 if (asyncFlag) { // 发送MQ if (cacheResult) { // 成功 // 发送到MQ中 MqProducer.Send("notification.OAEnvelopeReciveConsumer", _oaRedEnvelopeBuilderModel, 1000); return(await Task.FromResult(Tuple.Create(true, string.Empty, string.Empty))); } } else { return(await CallbackRedEnvelopAsync()); } } // 失败 return(Tuple.Create(false, "-3", "")); } catch (Exception e) { Logger.Error( $"OARedEnvelopeUserReceiveManager -> SendRedEnvelopAsync -> {JsonConvert.SerializeObject(_oaRedEnvelopeBuilderModel)}", e.InnerException ?? e); throw; } }
/// <summary> /// 获取所有年检代办供应商 /// </summary> /// <returns></returns> public List <string> GetAllAnnualInspectionVender() { var result = null as List <string>; try { using (var client = new Service.Config.ConfigClient()) { var clientResult = client.GetVehicleAnnualInspectionVenderList(); clientResult.ThrowIfException(true); result = clientResult.Result?.Select(s => s.VenderShortName)?.ToList(); } } catch (Exception ex) { Logger.Error("GetAllAnnualInspectionVender", ex); } return(result ?? new List <string>()); }
/// <summary> /// 发红包回调 /// </summary> /// <returns></returns> public async Task <Tuple <bool, string, string> > CallbackRedEnvelopAsync() { try { // 领取记录增加到数据库中。 using (var dbHelper = DbHelper.CreateDbHelper()) { // 获取user var user = await FetchUserByUserIdByCacheAsync(_oaRedEnvelopeBuilderModel.UserId); // 添加到明细表 var result = await DalOARedEnvelopeDetail.InsertOARedEnvelopeDetailAsync(dbHelper, new OARedEnvelopeDetailModel { GetMoney = _oaRedEnvelopeBuilderModel.Money, OfficialAccountType = _oaRedEnvelopeBuilderModel.OfficialAccountType, OpenId = _oaRedEnvelopeBuilderModel.OpenId, UserId = _oaRedEnvelopeBuilderModel.UserId, ReferrerUserId = _oaRedEnvelopeBuilderModel.ReferrerUserId, NickName = _oaRedEnvelopeBuilderModel.WXNickName, WXHeadImgUrl = _oaRedEnvelopeBuilderModel.WXHeadPicUrl, GetDate = _oaRedEnvelopeBuilderModel.RequestTime.Date, }); if (result > 0) { // 设置数据库插入成功 _oaRedEnvelopeBuilderModel.DbDetailGet(result); using (var configClient = new Service.Config.ConfigClient()) { // 判断开关是否打开 var payServiceFlag = configClient.GetOrSetRuntimeSwitch("OAEnvelopeUsePayService")?.Result?.Value ?? false; if (payServiceFlag) { // 调用PAY 实际给用户发钱 using (var payClient = new PayClient()) { var payResult = await payClient.Wx_SendRedBagAsync(new WxSendRedBagRequest { ActName = "关注公众号领红包", Channel = "关注公众号领红包", // 这边 *100 是因为 支付系统是不支持小数的 Money = (int)(_oaRedEnvelopeBuilderModel.Money * 100), OpenId = _oaRedEnvelopeBuilderModel.OpenId, Remark = "关注公众号领红包奖励" }); payResult.ThrowIfException(); if (!payResult.Success || !payResult.Result) { // 判断异常类型 --- 发送提醒 Logger.Warn( $"OARedEnvelopeUserReceiveManager -> CallbackRedEnvelopAsync -> Wx_SendRedBagAsync -> false -> {JsonConvert.SerializeObject(_oaRedEnvelopeBuilderModel)} {payResult.ErrorMessage} {payResult.ErrorCode} "); return(Tuple.Create(false, "-10", "")); } } } } } // 写日志 Logger.Info( $"OARedEnvelopeUserReceiveManager -> CallbackRedEnvelopAsync -> finish -> {JsonConvert.SerializeObject(_oaRedEnvelopeBuilderModel)}"); // 实时统计 await _oaRedEnvelopeCacheManager.StatisticsDoingAsync(1, _oaRedEnvelopeBuilderModel.Money); } return(await Task.FromResult(Tuple.Create(true, string.Empty, string.Empty))); } catch (Exception e) { Logger.Error( $"OARedEnvelopeUserReceiveManager -> CallbackRedEnvelopAsync -> {JsonConvert.SerializeObject(_oaRedEnvelopeBuilderModel)}", e.InnerException ?? e); throw; } }