/// <summary> /// 删除重复问卷答题记录和获取问卷记录 /// </summary> /// <param name="userId"></param> /// <param name="objectId"></param> /// <returns></returns> public static async Task DelExistRecord(Guid userId, int objectId, int questionnaireType) { //判断当前用户和投诉是否已答 var answerRecordInfo = await DalQuestionnaireAnswerRecord.GetQuestionnaireAnswerRecordInfo(userId, objectId); if (answerRecordInfo != null) { //删除之前答题记录 await DalQuestionnaireAnswerRecord.DeleteQuestionnaireAnswerRecord(userId, objectId); } UserQuestionnaireURLModel userInfo = null; if (questionnaireType < 2)//售后问卷 { userInfo = await DalUserQuestionnaireURL.GetUserQuestionnaireURLInfo(objectId); } else if (questionnaireType == 2)//售前问卷 { userInfo = await DalUserQuestionnaireURL.GetUserQuestionnaireURLInfoByOrderID(objectId); } if (userInfo != null) { //删除之前问卷记录 await DalUserQuestionnaireURL.DeleteUserQuestionnaireURL(userInfo.PageID); } }
/// <summary> /// 创建用户的问卷链接信息 /// </summary> /// <param name="model"></param> /// <returns></returns> public static async Task <int> AddUserQuestionnaireURL(UserQuestionnaireURLModel model) { #region SQL string sql = @" INSERT INTO [Activity].[dbo].[UserQuestionnaireURL] WITH(ROWLOCK) ([PageID] ,[QuestionnaireNo] ,[OrderID] ,[ComplaintsID] ,[ComplaintsType] ,[IsAtStore] ,[Department] ,[UserID] ,[UserPhone] ,[StaffEmail] ,[ShortURL] ,[OriginalURL]) VALUES (@PageID ,@QuestionnaireNo ,@OrderID ,@ComplaintsID ,ISNULL(@ComplaintsType,'') ,@IsAtStore ,ISNULL(@Department,'') ,@UserID ,ISNULL(@UserPhone,'') ,ISNULL(@StaffEmail,'') ,@ShortURL ,@OriginalURL) "; #endregion BaseDbHelper dbHelper = null; SqlCommand sqlCmd = null; SqlParameter[] paras = new SqlParameter[] { new SqlParameter("@PageID", model.PageID), new SqlParameter("@QuestionnaireNo", model.QuestionnaireNo), new SqlParameter("@OrderID", model.OrderID), new SqlParameter("@ComplaintsID", model.ComplaintsID), new SqlParameter("@ComplaintsType", model.ComplaintsType), new SqlParameter("@IsAtStore", model.IsAtStore), new SqlParameter("@Department", model.Department), new SqlParameter("@UserID", model.UserID), new SqlParameter("@UserPhone", model.UserPhone), new SqlParameter("@StaffEmail", model.StaffEmail), new SqlParameter("@ShortURL", model.ShortURL), new SqlParameter("@OriginalURL", model.OriginalURL) }; try { dbHelper = DbHelper.CreateDbHelper(false); sqlCmd = new SqlCommand(sql); sqlCmd.Parameters.AddRange(paras); return(await dbHelper.ExecuteNonQueryAsync(sqlCmd)); } catch (Exception ex) { Logger.Error($"DB异常=>AddUserQuestionnaireURL=>{ex.ToString()}"); return(0); } finally { dbHelper?.Dispose(); sqlCmd?.Dispose(); } }
/// <summary> /// 获取用户的问卷链接信息 /// </summary> /// <param name="model"></param> /// <returns></returns> public static async Task <OperationResult <string> > GetQuestionnaireURLAsync(Models.Requests.GetQuestionnaireURLRequest model) { //AutoMapper初始化配置文件 var config = new MapperConfiguration(cfg => { cfg.CreateMap <Models.Requests.GetQuestionnaireURLRequest, UserQuestionnaireURLModel>(); }); var mapper = config.CreateMapper(); int objectId = 0;//业务对象ID UserQuestionnaireURLModel userModel = mapper.Map <UserQuestionnaireURLModel>(model); userModel.PageID = Guid.NewGuid(); userModel.OriginalURL = ConfigurationManager.AppSettings["QuestionnaireURL"].ToString() + "pageId=" + userModel.PageID; if (model.QuestionnaireType < 2)//售后问卷 { //获取问卷和定责部门关系信息 var mappingInfo = await DalQuestionnaireDptMapping.GetQuestionnaireDptMappingInfo(userModel.Department, userModel.ComplaintsType, userModel.IsAtStore); if (mappingInfo != null) { userModel.QuestionnaireNo = mappingInfo.QuestionnaireNo; } else { return(OperationResult.FromError <string>(nameof(Resource.Error_GetQuestionnaireURL_Failure), string.Format(Resource.Error_GetQuestionnaireURL_Failure))); } objectId = model.ComplaintsID; } else if (model.QuestionnaireType == 2)//售前问卷 { var questionnaireInfo = await DalQuestionnaire.GetQuestionnaireInfoByType(model.QuestionnaireType); userModel.QuestionnaireNo = questionnaireInfo.QuestionnaireNo; objectId = model.OrderID.Value; } //获取短连接 using (var client = new UtilityClient()) { var shortUrlResult = await client.GetTuhuDwzAsync(userModel.OriginalURL, "投诉问卷"); if (shortUrlResult.Success) { userModel.ShortURL = shortUrlResult.Result; } else { return(OperationResult.FromError <string>(nameof(Resource.Error_GetQuestionnaireURL_Failure), string.Format(Resource.Error_GetQuestionnaireURL_Failure))); } } //删除重复问卷答题记录和获取问卷记录 await QuestionnaireManager.DelExistRecord(model.UserID, objectId, model.QuestionnaireType); int result = await DalUserQuestionnaireURL.AddUserQuestionnaireURL(userModel); if (result > 0) { return(OperationResult.FromResult(userModel.ShortURL)); } return(OperationResult.FromError <string>(nameof(Resource.Error_GetQuestionnaireURL_Failure), string.Format(Resource.Error_GetQuestionnaireURL_Failure))); }