public void CoinChangeAsync(long uId, CoinChangeEnum coinChangeType, string remark = "", int changeValue = 0, string operateUser = "") { Task.Factory.StartNew(() => { CoinChange(uId, coinChangeType, remark, changeValue, operateUser); }); }
public bool CoinChange(long uId, CoinChangeEnum coinChangeType, string remark = "", int changeValue = 0, string operateUser = "") { var coin = letterDal.GetCoinByUId(uId); if (coin == null) { coin = new CoinEntity() { UId = uId, TotalCoin = 0, CreateTime = DateTime.Now, UpdateTime = DateTime.Now }; bool success = letterDal.InsertCoin(coin); if (success) { coin.CoinId = letterDal.GetCoinByUId(uId).CoinId; } } if (changeValue <= 0) { string config = ""; switch (coinChangeType) { case CoinChangeEnum.PublishReward: config = "PublishRewardValue"; break; case CoinChangeEnum.CollectedReward: config = "CollectedRewardValue"; break; case CoinChangeEnum.SignReward: config = "SignRewardValue"; break; case CoinChangeEnum.ShareReward: config = "ShareRewardValue"; break; case CoinChangeEnum.ActivityReward: config = "ActivityRewardValue"; break; case CoinChangeEnum.FirstLoginReward: config = "FirstLoginRewardValue"; break; case CoinChangeEnum.PickUpDeducted: config = "PickUpDeductedValue"; break; case CoinChangeEnum.ReportedDeducted: config = "ReportedDeductedValue"; break; default: break; } if (!string.IsNullOrWhiteSpace(config)) { string configStr = JsonSettingHelper.AppSettings[config]; if (!string.IsNullOrEmpty(configStr)) { changeValue = Convert.ToInt16(configStr); } } } if (changeValue != 0) { //金币余额为0时不再继续扣除 if (UserTotalCoin(uId) <= 0 && changeValue < 0) { return(true); } var coinDetail = new CoinDetailEntity() { CoinDetailId = Guid.NewGuid(), UId = uId, CoinId = coin.CoinId, CoinChangeType = coinChangeType, OperateUser = string.IsNullOrWhiteSpace(operateUser) ? "system" : operateUser, Remark = remark, ChangeValue = changeValue, CreateTime = DateTime.Now, UpdateTime = DateTime.Now }; bool insertCoinDetailSuccess = letterDal.InsertCoinDetail(coinDetail); if (insertCoinDetailSuccess) { return(letterDal.UpdateUserTotalCoin(coin.CoinId, coin.UId, changeValue)); } } LogHelper.Info("CoinChangeAsync", "用户金币变动", new Dictionary <string, string>() { { "uId", uId.ToString() }, { "coinChangeType", coinChangeType.ToString() }, { "changeValue", changeValue.ToString() }, { "remark", remark.ToString() } }); return(true); }