public JsonResult GetProductsByPackageId(int packageId) { var manager = new BeautyCodeManager(); var products = manager.GetProductsByPackageId(packageId); return(Json(new { Status = products != null, Data = products }, JsonRequestBehavior.AllowGet)); }
/// <summary> /// 分页获取导入用户服务码统计信息 /// </summary> /// <param name="pageIndex"></param> /// <param name="pageSize"></param> /// <param name="cooperateId"></param> /// <param name="packageDetailId"></param> /// <param name="settleMentMethod"></param> /// <returns></returns> public JsonResult GetBeautyCodeStatistics(int pageIndex, int pageSize, int cooperateId = 0, int packageDetailId = 0, string settleMentMethod = "") { var packageDetailIds = new List <int>(); if (packageDetailId <= 0) { var packageDetails = BeautyServicePackageManager.GetBeautyServicePackageDetails(1, 10000, true, settleMentMethod, cooperateId, string.Empty); packageDetailIds = packageDetails.Item1.Select(t => t.PKID).Distinct().ToList(); } else { packageDetailIds.Add(packageDetailId); } var manager = new BeautyCodeManager(); var result = manager.GetBeautyCodeStatistics(pageIndex, pageSize, packageDetailIds); List <BeautyCodeStatistics> data = null; var totalCount = 0; data = result.Item1; totalCount = result.Item2; if (result != null && !string.IsNullOrEmpty(settleMentMethod)) { data = data.Where(s => string.Equals(s.SettlementMethod, settleMentMethod)).ToList(); } return(Json(new { Status = data != null, Data = data, TotalCount = totalCount }, JsonRequestBehavior.AllowGet)); }
public JsonResult GetPackagesByPackageType(string packageType) { var manager = new BeautyCodeManager(); var packages = manager.GetPackagesByPackageType(packageType); return(Json(new { Status = packages != null, Data = packages }, JsonRequestBehavior.AllowGet)); }
private static Tuple <List <CreateBeautyCodeTaskModel>, string, string> ConvertExcelToList(HttpFileCollectionBase files) { var message = string.Empty; var result = null as List <CreateBeautyCodeTaskModel>; if (files.Count <= 0) { return(Tuple.Create(result, "请先上传文件", string.Empty)); } var file = files[0]; if (file.ContentType != "application/vnd.ms-excel" && file.ContentType != "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet") { return(Tuple.Create(result, "请上传Excel文件", string.Empty)); } var stream = file.InputStream; var buffer = new byte[stream.Length]; stream.Read(buffer, 0, buffer.Length); var sha1Value = GetSha1Value(buffer); var manager = new BeautyCodeManager(); if (manager.IsUploaded(sha1Value)) { return(Tuple.Create(result, "文件已经上传过,请不要重复上传", string.Empty)); } var workBook = new XSSFWorkbook(new MemoryStream(buffer)); var sheet = workBook.GetSheetAt(0); var temp = ConvertExcelToList(sheet); result = temp.Item1; message = temp.Item2; if (!string.IsNullOrEmpty(message)) { return(Tuple.Create(result, message, string.Empty)); } if (!result.Any()) { return(Tuple.Create(result, "Excel内容为空", sha1Value)); } //var repetitionNumber = result.GroupBy(x => x.MobileNumber) // .Where(x => x.Count() > 1) // .Select(x => x.Key).ToList(); //if (repetitionNumber.Any()) //{ // message = $"{string.Join(",", repetitionNumber)}以上手机号重复, 请确认"; //} return(Tuple.Create(result, message, sha1Value)); }
public async Task <JsonResult> GetCompanyUserSmsRecords(string batchCode) { IEnumerable <CompanyUserSmsRecord> result = new List <CompanyUserSmsRecord>(); if (!string.IsNullOrEmpty(batchCode)) { var manager = new BeautyCodeManager(); result = manager.GetCompanyUserSmsRecordByBatchCode(batchCode); } return(Json(result, JsonRequestBehavior.AllowGet)); }
public JsonResult UploadExcel(int id, string type) { var files = Request.Files; var result = ConvertExcelToList(files); if (!string.IsNullOrEmpty(result.Item2)) { return(Json(new { Status = false, Msg = result.Item2 })); } var list = result.Item1; var sha1Value = result.Item3; var manager = new BeautyCodeManager(); var success = manager.BatchAddBeautyCode(list, id, type, User.Identity.Name, sha1Value); return(Json(new { Status = success })); }
public async Task <JsonResult> SendSms(string batchCode, int templateId, DateTime?sendTime = null) { String sentResult = string.Empty; var resultMsg = string.Empty; if (!string.IsNullOrWhiteSpace(batchCode) && _smsTemplates.ContainsKey(templateId)) { if (sendTime != null && sendTime < DateTime.Now) { sentResult = "TimeNotAvailable"; resultMsg = "时间不能早于当前时间"; } else { var manager = new BeautyCodeManager(); var key = $"SendSms/{batchCode}"; var ts = TimeSpan.FromMinutes(1); long flashCount = await FlashCounter.GetFlashCount(_counterClient, key, ts, OperateType.Increment); if (flashCount > 0) { resultMsg = "操作过于频繁,请等1分钟重试"; sentResult = "Frequently"; } else { var isLimit = false; if (!string.Equals(_environment, "dev"))//如果是生产环境有一周只能发一次的限制 { var smsRecords = manager.GetCompanyUserSmsRecordByBatchCode(batchCode); var latestSmsRecord = smsRecords.Where(s => string.Equals(s.Status, nameof(SmsStatus.Success)) || string.Equals(s.Status, nameof(SmsStatus.PartialSuccess))).OrderByDescending(s => s.PKID).FirstOrDefault(); if (latestSmsRecord != null) { isLimit = (DateTime.Now - latestSmsRecord.CreatedDateTime).Days < 7; } } if (isLimit) { resultMsg = "一周之内只能发一次短信"; sentResult = "BeLimited"; } else { var user = HttpContext.User.Identity.Name; var codeTasks = await BeautyServicePackageManager.SelectCreateBeautyCodeTaskModels(batchCode); if (codeTasks.Any()) { var mobiles = codeTasks.Select(s => s.MobileNumber).Distinct(); if (mobiles.Any()) { string[] arg = new string[1]; arg[0] = _smsUrl; var msg = _smsTemplates[templateId]; sentResult = await manager.SendBatchSms(user, mobiles, templateId, arg, sendTime); var needSendTime = sendTime == null ? DateTime.Now : sendTime; manager.InsertCompanyUserSmsRecord(new CompanyUserSmsRecord() { Type = "ServiceCode", BatchCode = batchCode, SmsTemplateId = templateId, SmsMsg = msg, SentTime = (DateTime)needSendTime, Status = sentResult, CreatedUser = user }); } } } } } } else { resultMsg = "参数错误"; } return(Json(new { result = sentResult, msg = resultMsg })); }
public async Task <ResultModel <string> > RevertServiceCode(string batchCode, string channel, string source, string user) { var result = new ResultModel <string> { IsSuccess = false }; try { var kuaiXiuService = new KuaiXiuService.KuaiXiuService(); if (!string.IsNullOrEmpty(batchCode)) { var serviceCodes = BeautyServicePackageDal.SelectServiceCodesByBatchCode(batchCode); if (serviceCodes != null && serviceCodes.Any()) { var beautyCodeManager = new BeautyCodeManager(); var taskDetail = beautyCodeManager.GetBeautyCodeStatistics(new List <string>() { batchCode }); var codeTask = taskDetail.FirstOrDefault(); var buyOutOrderId = codeTask?.BuyoutOrderId; var serviceCodeDetails = new List <ServiceCode>(); for (var index = 0; index < (serviceCodes.Count() + 127) / 128; index++) { var codeItems = serviceCodes.Skip(index * 128).Take(128); var item = await SearchCodeManager.GetServiceCodeDetailsByCodes(codeItems); serviceCodeDetails.AddRange(item); } var avaiableServiceCodes = serviceCodeDetails.Where(s => (s.Status == ServiceCodeStatusType.Created || s.Status == ServiceCodeStatusType.SmsSent) && !string.Equals(s.Source, "VOLRevert")).Select(t => t.Code); var avaiableCount = avaiableServiceCodes.Count(); if (buyOutOrderId > 0 && avaiableCount < serviceCodeDetails.Count())//如果是买断,并且有部分核销,则不能作废服务码 { result.IsSuccess = false; result.Msg += "当前批次服务码中已经有部分核销,不能作废当前批次"; } else { for (var index = 0; index < (avaiableCount + 127) / 128; index++) { var codeItems = avaiableServiceCodes.Skip(index * 128).Take(128); var revertResult = await kuaiXiuService.RevertServiceCodes(codeItems, channel, source); if (!revertResult) { throw new Exception($"作废失败,部分服务码已使用或已作废"); } } beautyCodeManager.UpdateBeautyCodeTaskStatus(batchCode, "Reverted"); if (buyOutOrderId > 0) { result.IsSuccess = false; result.Msg += "未核销服务码作废完成,订单作废请联系业务系统研发手动处理"; //var serviceCodeConfig = BeautyServicePackageManager.GetBeautyServicePackageDetail(codeTask.MappingId); //var cooperateUser = new BankMRManager().FetchMrCooperateUserConfigByPKID(serviceCodeConfig?.CooperateId ?? -1); //if (cooperateUser != null) //{ // var revertOrderResult = await OrderServiceProxy.OrderServiceProxy.CancelOrder(new Service.Order.Request.CancelOrderRequest() // { // OrderId = Convert.ToInt32(buyOutOrderId), // UserID = cooperateUser.VipUserId, // Remark = $"运营回滚服务码,服务码批次号:{batchCode}", // FirstMenu = "运营", // SecondMenu = "服务码取消" // }); // if (!revertOrderResult.IsSuccess) // { // throw new Exception($"服务码作废成功,2B订单:{buyOutOrderId},取消订单失败,请联系业务系统研发手动作废"); // } //} //else //{ // throw new Exception($"查不到合作用户,MappingId:{codeTask.MappingId}"); //} } else { result.IsSuccess = true; result.Msg = "未核销服务码作废完成"; } if (avaiableCount > 0) { var log = new DataAccess.Entity.BeautyOprLog { LogType = "RevertServiceCode", IdentityID = $"{batchCode}", OldValue = null, NewValue = null, Remarks = $"根据批次号作废服务码", OperateUser = user, }; LoggerManager.InsertLog("BeautyOprLog", log); } } } else { throw new Exception("当前批次没有服务码"); } } } catch (Exception ex) { result.Msg = ex.Message; } return(result); }