public ActionResult DeleteBeautyServicePackageDetail(int pkid, int packageId)
        {
            var isSuccess = false;
            var msg       = string.Empty;
            var package   = BeautyServicePackageManager.GetBeautyServicePackage(packageId);

            if (package != null && package.IsPackageCodeGenerated)
            {
                msg = "已经生成兑换码的不允许删除";
            }
            else if (package == null)
            {
                msg = "兑换码配置不存在";
            }
            else
            {
                var packageDetail = BeautyServicePackageManager.GetBeautyServicePackageDetail(pkid);
                if (packageDetail != null && !packageDetail.IsServiceCodeGenerated)
                {
                    var user = HttpContext.User.Identity.Name;
                    isSuccess = BeautyServicePackageManager.DeleteBeautyServicePackageDetail(pkid, packageDetail, user);
                }
                else if (packageDetail == null)
                {
                    msg = "不存在";
                }
                else
                {
                    msg = "已经生成服务码的不允许删除";
                }
            }

            return(Json(new { IsSuccess = isSuccess, Msg = msg }, JsonRequestBehavior.AllowGet));
        }
        public JsonResult SelectCooperateUserByCompanyId(int companyId)
        {
            var cooperateUser = BeautyServicePackageManager.SelectCooperateUserByCompanyId(companyId);
            var account       = UserAccountService.GetCompanyUsersByCompanyId(companyId);

            return(Json(new { cooperateUser = cooperateUser, account = account }, JsonRequestBehavior.AllowGet));
        }
        public ActionResult GetBeautyServicePackageDetail(int packageId)
        {
            var result = BeautyServicePackageManager.GetBeautyServicePackageDetails(packageId);
            var status = result != null && result.Any() ? "Success" : "fail";

            return(Json(new { Status = status, Data = result }, 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 ActionResult UpsertBeautyServiceCodeTypeConfig(BeautyServiceCodeTypeConfig config)
        {
            var isSuccess = false;
            var msg       = "";

            if (config != null && !string.IsNullOrEmpty(config.PID) && !string.IsNullOrEmpty(config.Name))
            {
                config.PID = config.PID.Trim();
                var product        = BeautyProductManager.GetBeautyProductByPid(config.PID);
                var vipCategoryIds = BeautyProductManager.GetBeautyChildAndSelfCategoryIdsByCategoryId(67);
                if (product != null && vipCategoryIds != null && vipCategoryIds.Contains(product.CategoryId))
                {
                    isSuccess = config.PKID > 0 ? BeautyServicePackageManager.UpdateBeautyServiceCodeTypeConfig(config)
                                        : BeautyServicePackageManager.InsertBeautyServiceCodeTypeConfig(config);
                    msg = isSuccess ? "插入成功" : "更新失败";
                }
                else
                {
                    msg = "产品PID不正确";
                }
            }
            else
            {
                msg = "数据不完善";
            }

            return(Json(new { IsSuccess = isSuccess, Msg = msg }, JsonRequestBehavior.AllowGet));
        }
        public async Task <ActionResult> GenerateServiceCode(int packageDetailId)
        {
            var isSuccess    = false;
            var msg          = string.Empty;
            var serviceCodes = BeautyServicePackageManager.GetBeautyServicePackageDetailCodesByPackageDetailId(packageDetailId);

            if (serviceCodes != null && serviceCodes.Any())
            {
                msg = "之前已经生成服务码了";
            }
            else
            {
                isSuccess = await BeautyServicePackageManager.GenerateServiceCodes(packageDetailId);

                if (!isSuccess)
                {
                    msg = "生成服务码失败";
                }
                else
                {
                    isSuccess = true;
                    msg       = "服务码生成成功";
                }
            }

            return(Json(new { IsSuccess = isSuccess, Msg = msg }, JsonRequestBehavior.AllowGet));
        }
        public ActionResult UpsertBeautyServicePackage(BeautyServicePackage package)
        {
            bool isSuccess = false;
            var  msg       = string.Empty;
            var  user      = HttpContext.User.Identity.Name;

            if (package != null && !string.IsNullOrEmpty(package.PackageName) && package.CooperateId > 0)
            {
                var manager       = new BankMRManager();
                var cooperateUser = manager.FetchMrCooperateUserConfigByPKID(package.CooperateId);
                if (cooperateUser != null)
                {
                    package.VipUserId = cooperateUser.VipUserId;
                    using (var client = new UserAccountClient())
                    {
                        var userServiceResult = client.SelectCompanyUserInfo(cooperateUser.VipUserId);
                        if (userServiceResult.Success && userServiceResult.Result != null)
                        {
                            package.VipUserName = userServiceResult.Result.UserName;
                            if (userServiceResult.Result.CompanyInfo != null)
                            {
                                package.VipCompanyId   = userServiceResult.Result.CompanyInfo.Id;
                                package.VipCompanyName = userServiceResult.Result.CompanyInfo.Name;
                            }
                        }
                    }
                }

                if (package.PKID > 0)
                {
                    package.UpdateUser = user;
                    isSuccess          = BeautyServicePackageManager.UpdateBeautyServicePackage(package);
                }
                else
                {
                    package.CreateUser = user;
                    isSuccess          = BeautyServicePackageManager.InsertBeautyServicePackage(package);
                }
                if (!isSuccess)
                {
                    msg = "更新失败";
                }
                else
                {
                    msg = "成功";
                }
            }
            else
            {
                msg = "信息不完善";
            }

            return(Json(new { IsSuccess = isSuccess, Msg = msg }, JsonRequestBehavior.AllowGet));
        }
Beispiel #8
0
        public async Task <JsonResult> GetGeneralBeautyServerCodeProductsList(Guid packageId)
        {
            var result          = (await GeneralBeautyServerCodeManager.Instanse.GetGeneralBeautyServerCodeProductsListAsync(packageId))?.ToArray();
            var codeTypeConfigs = BeautyServicePackageManager.SelectAllBeautyServiceCodeTypeConfig(0)?.ToList();

            result?.ForEach(f =>
            {
                f.PID = codeTypeConfigs?.FirstOrDefault(e => e.PKID == f.CodeTypeConfigId)?.PID;
            });
            return(Json(new { Result = result }, JsonRequestBehavior.AllowGet));
        }
Beispiel #9
0
        public JsonResult SelectConfigByUserId(Guid userId, int companyId)
        {
            var total         = 0;
            var result        = BeautyServicePackageManager.GetEnterpriseUserConfig(1, 10, userId, out total).FirstOrDefault();
            var cooperateUser = BeautyServicePackageManager.SelectCooperateUserByCompanyId(companyId);

            result.PackageDetailIds        = result?.CooperateUserServiceDeails?.Select(x => x.PackageDetailId).ToList();
            result.SearchServiceCode       = result?.UserModuleDetails?.Where(x => String.Equals(x.ModuleType, "SearchServiceCode")).Count() > 0;
            result.SearchVerifyServiceCode = result?.UserModuleDetails?.Where(x => String.Equals(x.ModuleType, "SearchVerifyServiceCode")).Count() > 0;
            result.GenerateCode            = result?.UserModuleDetails?.Where(x => String.Equals(x.ModuleType, "GenerateCode")).Count() > 0;
            return(Json(new { data = result, cooperateUser = cooperateUser }, JsonRequestBehavior.AllowGet));
        }
        public JsonResult GetAllBeautyServiceCodeTypeConfig()
        {
            var result = new Dictionary <string, string>();
            var temp   = BeautyServicePackageManager.SelectAllBeautyServiceCodeTypeConfig();

            temp.ForEach(f =>
            {
                if (!result.ContainsKey(f.PID))
                {
                    result.Add(f.PID, f.Name);
                }
            });
            return(Json(result, JsonRequestBehavior.AllowGet));
        }
        public JsonResult UsertEnterpriseUserConfig(EnterpriseUserViewModel data)
        {
            var result = false;
            var msg    = string.Empty;

            if (data.UserId != Guid.Empty)
            {
                result = BeautyServicePackageManager.UsertEnterpriseUserConfig(data, User.Identity.Name);
            }
            else
            {
                msg = "参数有误";
            }
            return(Json(new { status = result, msg = msg }, JsonRequestBehavior.AllowGet));
        }
        public async Task <JsonResult> UpdateCodeTimeByBatchCode(string batchCode, DateTime startTime, DateTime endTime)
        {
            var result = false;
            var msg    = string.Empty;

            if (!string.IsNullOrEmpty(batchCode) && startTime != null && endTime != null)
            {
                var user         = HttpContext.User.Identity.Name;
                var updateResult = await BeautyServicePackageManager.UpdateBeautyServiceCodeTimeByBatchCode(user, batchCode, startTime, endTime);

                result = updateResult.Item1;
                msg    = updateResult.Item2;
            }

            return(Json(new { Data = result, Status = result, Msg = msg }, JsonRequestBehavior.AllowGet));
        }
Beispiel #13
0
        public ActionResult UpsertBankMRActivityConfig(BankMRActivityConfig config, IEnumerable <BankMRActivityAdConfig> adConfig)
        {
            var result = false;

            if (config != null)
            {
                var operateUser   = HttpContext.User.Identity.Name;
                var cooperateUser = manager.FetchMrCooperateUserConfigByPKID(config.CooperateId);
                if (cooperateUser != null)
                {
                    var BeautyServiceCodeTypes = BeautyServicePackageManager.SelectAllBeautyServiceCodeTypeConfig();
                    config.BankId           = cooperateUser.VipUserId;
                    config.CodeTypeConfigId = BeautyServiceCodeTypes?.FirstOrDefault(x => x.PID.Equals(config.ServiceId)).PKID ?? 0;
                    result = manager.UpsertBankMRActivityConfig(config, adConfig, operateUser);
                }
            }

            return(Json(result, JsonRequestBehavior.AllowGet));
        }
        public FileResult ExportPackageCodes(int packageId, string name)
        {
            var packageCodes = BeautyServicePackageManager.GetBeautyServicePackageCodesByPackageId(packageId);

            var workbook = new XSSFWorkbook();
            var sheet    = workbook.CreateSheet();

            var row     = sheet.CreateRow(0);
            var cell    = null as ICell;
            var cellNum = 0;

            #region title

            row.CreateCell(cellNum++).SetCellValue("兑换码");
            row.CreateCell(cellNum++).SetCellValue("开始时间");
            row.CreateCell(cellNum++).SetCellValue("结束时间");

            cellNum = 0;
            sheet.SetColumnWidth(cellNum++, 20 * 256);
            sheet.SetColumnWidth(cellNum++, 20 * 256);
            sheet.SetColumnWidth(cellNum++, 20 * 256);

            #endregion
            #region content
            if (packageCodes != null && packageCodes.Any())
            {
                var i = 0;
                foreach (var item in packageCodes)
                {
                    cellNum = 0;
                    row     = sheet.CreateRow(i + 1);
                    row.CreateCell(cellNum++).SetCellValue(item.PackageCode);
                    row.CreateCell(cellNum++).SetCellValue(item.StartTime.ToString("yyyyMMdd"));
                    row.CreateCell(cellNum++).SetCellValue(item.EndTime.ToString("yyyyMMdd"));
                    i++;
                }
            }
            #endregion

            var ms = new MemoryStream();
            workbook.Write(ms);
            return(File(ms.ToArray(), "application/x-xls", $"{name}_兑换码_{DateTime.Now.ToString("yyyyMMdd HHmmss")}.xlsx"));
        }
        public ActionResult GetBeautyServicePackageDetails(int pageIndex, int pageSize,
                                                           bool isImportUser, string settlementMethod, int cooperateId, string serviceId)
        {
            var result = BeautyServicePackageManager.GetBeautyServicePackageDetails(pageIndex, pageSize, isImportUser, settlementMethod,
                                                                                    cooperateId, serviceId);

            if (result != null && result.Item1.Any())
            {
                var allCooperateUsers = new BankMRManager().GetAllMrCooperateUserConfigs();
                if (allCooperateUsers != null && allCooperateUsers.Any())
                {
                    result.Item1.ForEach(u =>
                    {
                        u.CooperateName = allCooperateUsers.FirstOrDefault(t => t.PKID == u.CooperateId)?.CooperateName;
                    });
                }
            }

            return(Json(result, JsonRequestBehavior.AllowGet));
        }
Beispiel #16
0
        public async Task <Tuple <bool, object, string> > GetGeneralBeautyServerCodeSendRecordsDetail(int pkid)
        {
            var sendRecordDetail = (await GetGeneralBeautyServerCodeSendRecordDetail(pkid))?.ToArray();

            if (sendRecordDetail == null && !sendRecordDetail.Any())
            {
                return(Tuple.Create <bool, object, string>(false, null, "服务码详细记录信息为空"));//Json(new { Result = new { }, IsSuccess = false, Msg = "" });
            }
            var sendRecord = await GetGeneralBeautyServerCodeSendRecordById(pkid);

            if (sendRecord == null)
            {
                return(Tuple.Create <bool, object, string>(false, null, "服务码记录信息为空"));
            }
            var productList = await GetGeneralBeautyServerCodeProductsListAsync(sendRecord.PackageId);

            if (sendRecord == null)
            {
                return(Tuple.Create <bool, object, string>(false, null, "服务码记录对应产品信息为空"));
            }
            var codeTypeConfigs = BeautyServicePackageManager.SelectAllBeautyServiceCodeTypeConfig(0)?.ToList();
            var codes           = (await new KuaiXiuService.KuaiXiuService().GetServiceCodeDetailsByCodes(sendRecordDetail.Select(s => s.ServiceCode)))?.ToArray();
            var shopDetails     = (await ShopServiceProxy.ShopServiceProxy.Instanse.SelectShopDetailsAsync(codes.Where(w => (w.InstallShopId ?? 0) > 0).Select(s => s.InstallShopId ?? 0).Distinct()))?.ToArray();
            var result          = from a in sendRecordDetail
                                  join b in productList
                                  on new { a.PackageId, a.PackageProductId } equals new { b.PackageId, PackageProductId = b.PKID }
            where a.PackageId == sendRecord.PackageId
            select new
            {
                ServiceCode      = a.ServiceCode,
                Name             = b.Name,
                CodeTypeConfigId = b.CodeTypeConfigId,
                Phone            = sendRecord.Phone,
                PID        = codeTypeConfigs?.FirstOrDefault(f => f.PKID == b.CodeTypeConfigId)?.PID,
                ShopName   = shopDetails?.FirstOrDefault(f => f.ShopId == codes.FirstOrDefault(e => e.Code == a.ServiceCode)?.InstallShopId)?.SimpleName,
                VerifyTime = codes.FirstOrDefault(f => f.Code == a.ServiceCode)?.VerifyTime?.ToString("yyyy-MM-dd HH:mm:ss"),
                VerifyArea = shopDetails?.FirstOrDefault(f => f.ShopId == codes.FirstOrDefault(e => e.Code == a.ServiceCode)?.InstallShopId)?.Province + shopDetails?.FirstOrDefault(f => f.ShopId == codes.FirstOrDefault(e => e.Code == a.ServiceCode)?.InstallShopId)?.City,
            };

            return(Tuple.Create <bool, object, string>(true, result, ""));
        }
        /// <summary>
        /// 获取导入用户的合作用户
        /// </summary>
        /// <returns></returns>
        public ActionResult GetCooperateUserConfigsForImportUser()
        {
            IEnumerable <MrCooperateUserConfig> result = null;
            var packageDetails = BeautyServicePackageManager.GetBeautyServicePackageDetails(1, 10000, true, string.Empty, 0, string.Empty);

            if (packageDetails != null)
            {
                var cooperateIds        = packageDetails.Item1?.Select(s => s.CooperateId)?.Distinct() ?? new List <int>();
                var cooperateUserConfig = manager.GetAllMrCooperateUserConfigs();
                result = cooperateUserConfig?.Where(s => cooperateIds.Contains(s.PKID));
                if (result != null)
                {
                    var userIds     = result.Select(t => t.VipUserId).Distinct();
                    var usersDetail = new List <SYS_CompanyUser>();
                    using (var client = new UserAccountClient())
                    {
                        foreach (var item in userIds)
                        {
                            var userResult = client.SelectCompanyUserInfo(item);
                            if (userResult.Success && userResult.Result != null)
                            {
                                usersDetail.Add(userResult.Result);
                            }
                        }
                    }
                    foreach (var item in result)
                    {
                        var userDetail = usersDetail.FirstOrDefault(t => t.UserId == item.VipUserId);
                        if (userDetail != null)
                        {
                            item.VipUserName    = userDetail.UserName;
                            item.VipCompanyName = userDetail.CompanyInfo?.Name;
                            item.VipCompanyId   = userDetail.CompanyInfo?.Id ?? 0;
                        }
                    }
                }
            }

            return(Json(result, JsonRequestBehavior.AllowGet));
        }
Beispiel #18
0
        /// <summary>
        /// 根据服务码配置ids获取导入用户服务码统计信息
        /// </summary>
        /// <param name="pageIndex"></param>
        /// <param name="pageSize"></param>
        /// <param name="mappingIds"></param>
        /// <returns></returns>
        public Tuple <List <BeautyCodeStatistics>, int> GetBeautyCodeStatistics(int pageIndex, int pageSize, IEnumerable <int> mappingIds)
        {
            List <BeautyCodeStatistics> result = null;
            int totalCount = 0;

            try
            {
                var batchCodesPageResult = TuhuGrouponDbScopeManagerReadOnly.Execute(conn => handler.SelectBatchCodesByMappingIds(conn, pageIndex, pageSize, mappingIds));
                if (batchCodesPageResult != null)
                {
                    var batchCodes = batchCodesPageResult.Item1;
                    totalCount = batchCodesPageResult.Item2;
                    result     = TuhuGrouponDbScopeManagerReadOnly.Execute(conn => handler.GetBeautyCodeStatistics(conn, batchCodes));
                    var packageDetails = BeautyServicePackageManager.GetBeautyServicePackageDetails(mappingIds);
                    if (packageDetails != null && result != null)
                    {
                        var cooperateUsers = TuhuGrouponDbScopeManagerReadOnly.Execute(conn => BankMRActivityDal.SelectMrCooperateUserConfigs(conn, 1, 10000));
                        result.ForEach(s =>
                        {
                            var packageDetail = packageDetails.FirstOrDefault(t => t.PKID == s.MappingId);
                            if (packageDetail != null)
                            {
                                var currentCooperateUser = cooperateUsers?.Item1?.FirstOrDefault(u => u.PKID == packageDetail.CooperateId);
                                s.CooperateName          = currentCooperateUser?.CooperateName;
                                s.ServiceName            = packageDetail.Name;
                                s.SettlementMethod       = packageDetail.SettlementMethod;
                                s.VipSettlementPrice     = packageDetail.VipSettlementPrice;
                            }
                        });
                    }
                }
            }
            catch (Exception ex)
            {
                Logger.Error(ex.Message, ex);
            }

            return(new Tuple <List <BeautyCodeStatistics>, int>(result, totalCount));
        }
        public ActionResult GetBeautyServicePackage(int pageIndex, int pageSize, string packageType = "",
                                                    string packageName = "", string vipCompanyName = "", string settleMentMethod = "", int cooperateId = 0)
        {
            var result = BeautyServicePackageManager.GetBeautyServicePackage(pageIndex, pageSize, packageType,
                                                                             packageName, vipCompanyName, settleMentMethod, cooperateId);
            var status = result != null && result.Item1 != null && result.Item1.Any() ? "Success" : "fail";

            if (string.Equals(status, "Success"))
            {
                var manager           = new BankMRManager();
                var allCooperateUsers = manager.GetAllMrCooperateUserConfigs();
                if (allCooperateUsers != null && allCooperateUsers.Any())
                {
                    result.Item1.ForEach(u =>
                    {
                        u.CooperateName = allCooperateUsers.FirstOrDefault(t => t.PKID == u.CooperateId)?.CooperateName;
                    });
                }
            }

            return(Json(new { Status = status, Data = result.Item1, TotalCount = result.Item2 },
                        JsonRequestBehavior.AllowGet));
        }
        public JsonResult GetEnterpriseUserConfig(Guid userId, int pageIndex = 1, int pageSize = 10)
        {
            var total  = 0;
            var result = BeautyServicePackageManager.GetEnterpriseUserConfig(pageIndex, pageSize, userId, out total);

            if (result != null && result.Any())
            {
                foreach (var item in result)
                {
                    using (var client = new UserAccountClient())
                    {
                        var userServiceResult = client.SelectCompanyUserInfo(item.UserId);
                        if (userServiceResult.Success && userServiceResult.Result != null)
                        {
                            item.UserMobile  = userServiceResult.Result.UserMobile;
                            item.CompanyId   = userServiceResult?.Result?.CompanyInfo?.Id ?? 0;
                            item.CompanyName = userServiceResult?.Result?.CompanyInfo?.Name ?? "";
                        }
                    }
                }
            }
            return(Json(new { data = result, total = total }, JsonRequestBehavior.AllowGet));
        }
        public ActionResult GetUnivBeautyRedemptionCodes(string code, string mobile, string codeType, int pageIndex = 1, int pageSize = 10)
        {
            if (string.IsNullOrWhiteSpace(code) && string.IsNullOrWhiteSpace(mobile) && string.IsNullOrWhiteSpace(codeType))
            {
                return(Json(new { status = false, msg = "查询条件不能为空" }));
            }
            code   = code?.Trim();
            mobile = mobile?.Trim();
            Tuple <IEnumerable <UnivBeautyRedemptionCodeResult>, int> result = null;

            if (string.Equals(codeType, "BeautyServicePackageCode", StringComparison.OrdinalIgnoreCase))
            {
                result = BeautyServicePackageManager.GetBeautyServicePackageCodes(code, mobile, pageIndex, pageSize);
            }
            else if (string.Equals(codeType, "RedemptionCodeRecord", StringComparison.OrdinalIgnoreCase))
            {
                result = manager.GetRedemptionCodeRecordsByCondition(code, mobile, pageIndex, pageSize);
            }
            else
            {
                return(Json(new { status = false, msg = "未知的兑换码类型" }, JsonRequestBehavior.AllowGet));
            }
            return(Json(new { status = true, data = result?.Item1, total = result?.Item2 ?? 0 }, JsonRequestBehavior.AllowGet));
        }
Beispiel #22
0
        /// <summary>
        /// 根据兑换码获取服务码
        /// </summary>
        /// <param name="redemptionCode"></param>
        /// <returns></returns>
        public JsonResult GetServiceCodesByRedemptionCode(string redemptionCode, string codeType = "BeautyServicePackageCode")
        {
            var result = BeautyServicePackageManager.GetServiceCodesByRedemptionCode(redemptionCode, codeType);

            return(Json(result, JsonRequestBehavior.AllowGet));
        }
        /// <summary>
        /// 根据合作用户Id获取服务码配置
        /// </summary>
        /// <param name="cooperateId"></param>
        /// <returns></returns>
        public JsonResult GetBeautyServicePackageDetails(int cooperateId)
        {
            var result = BeautyServicePackageManager.GetBeautyServicePackageDetails(1, 1000, true, string.Empty, cooperateId, string.Empty);

            return(Json(new { Data = result, Status = result != null }, JsonRequestBehavior.AllowGet));
        }
        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 ActionResult GetAllVipUserName()
        {
            var result = BeautyServicePackageManager.GetAllVipUserName();

            return(Json(result, JsonRequestBehavior.AllowGet));
        }
        public async Task <ActionResult> GetPackageCodeGenerateingRate(int packageId)
        {
            var result = await BeautyServicePackageManager.GetPacakgeCodeGenerateingRate(packageId);

            return(Json(Math.Round(result, 4).ToString("#0.00"), JsonRequestBehavior.AllowGet));
        }
        public ActionResult UpsertBeautyServicePackageDetail(BeautyServicePackageDetail packageDetail)
        {
            var isSuccess  = false;
            var msg        = string.Empty;
            var rawPackage = BeautyServicePackageManager.GetBeautyServicePackage(packageDetail.PackageId);

            if (rawPackage != null && rawPackage.IsPackageCodeGenerated)
            {
                if (packageDetail.PKID <= 0)
                {
                    msg = "已生成兑换码不允许添加产品!";
                    return(Json(new { IsSuccess = false, Msg = msg }, JsonRequestBehavior.AllowGet));
                }
                var rawPackageDetail = BeautyServicePackageManager.GetBeautyServicePackageDetails(packageDetail.PackageId).FirstOrDefault();
                if (rawPackageDetail != null &&
                    (rawPackageDetail.ShopCommission != packageDetail.ShopCommission ||
                     rawPackageDetail.VipSettlementPrice != packageDetail.VipSettlementPrice ||
                     rawPackageDetail.ServiceCodeNum != packageDetail.ServiceCodeNum ||
                     rawPackageDetail.ServiceCodeStartTime != packageDetail.ServiceCodeStartTime ||
                     rawPackageDetail.ServiceCodeEndTime != packageDetail.ServiceCodeEndTime ||
                     rawPackageDetail.EffectiveDayAfterExchange != packageDetail.EffectiveDayAfterExchange ||
                     rawPackageDetail.Num != packageDetail.Num))
                {
                    msg = "已生成兑换码只允许修改名称!";
                    return(Json(new { IsSuccess = false, Msg = msg }, JsonRequestBehavior.AllowGet));
                }
            }

            var user = HttpContext.User.Identity.Name;

            if (packageDetail != null && !string.IsNullOrEmpty(packageDetail.Name) && !string.IsNullOrEmpty(packageDetail.PID))
            {
                if (packageDetail.Num > 20 || packageDetail.Num < 0)
                {
                    msg = "兑换码包含的服务数量介于0~20之间";
                    return(Json(new { IsSuccess = false, Msg = msg }, JsonRequestBehavior.AllowGet));
                }
                if (packageDetail.CooperateId <= 0)//兑换码的合作用户配置在外层
                {
                    var package = BeautyServicePackageManager.GetBeautyServicePackage(packageDetail.PackageId);
                    packageDetail.CooperateId = package?.CooperateId ?? 0;
                }
                if (packageDetail.PKID > 0)
                {
                    packageDetail.UpdateUser = user;
                    var updateResult = BeautyServicePackageManager.UpdateBeautyServicePackageDetail(packageDetail);
                    isSuccess = updateResult.Item1;
                    msg       = updateResult.Item2;
                }
                else
                {
                    packageDetail.CreateUser = user;
                    isSuccess = BeautyServicePackageManager.InsertBeautyServicePackageDetail(packageDetail);
                    if (!isSuccess)
                    {
                        msg = "更新失败";
                    }
                }
            }
            else
            {
                msg = "信息不完善";
            }

            return(Json(new { IsSuccess = isSuccess, Msg = msg }, JsonRequestBehavior.AllowGet));
        }
        public ActionResult GetAllBeautyServiceCodeTypeConfig(int ServerType = 0)
        {
            var result = BeautyServicePackageManager.SelectAllBeautyServiceCodeTypeConfig(ServerType);

            return(Json(result, JsonRequestBehavior.AllowGet));
        }