/*********************************************************************** * Project: baifenBinfa * ProjectName: 百分兵法管理系统 * Web: http://chuanyin.com * Author: * Email: * CreateTime: 202403/02 * Description: 暂无 ***********************************************************************/ using System; using System.Linq; using System.Threading.Tasks; using CoreCms.Net.Configuration; using CoreCms.Net.IRepository; using CoreCms.Net.IRepository.UnitOfWork; using CoreCms.Net.IServices; using CoreCms.Net.Loging; using CoreCms.Net.Model.Entities; using CoreCms.Net.Model.Entities.Expression; using CoreCms.Net.Model.ViewModels.UI; using CoreCms.Net.Utility.Helper; using Microsoft.Extensions.DependencyInjection; using SqlSugar; namespace CoreCms.Net.Services { /// /// 服务券核验日志 接口实现 /// public class CoreCmsUserServicesTicketVerificationLogServices : BaseServices, ICoreCmsUserServicesTicketVerificationLogServices { private readonly ICoreCmsUserServicesTicketVerificationLogRepository _dal; private readonly ICoreCmsServicesServices _servicesServices; private readonly ICoreCmsUserServicesTicketServices _userServicesTicketServices; private readonly ICoreCmsClerkServices _clerkServices; private readonly ICoreCmsSettingServices _settingServices; private readonly IServiceProvider _serviceProvider; private readonly IUnitOfWork _unitOfWork; public CoreCmsUserServicesTicketVerificationLogServices(IUnitOfWork unitOfWork, ICoreCmsUserServicesTicketVerificationLogRepository dal, ICoreCmsClerkServices clerkServices, ICoreCmsServicesServices servicesServices, ICoreCmsUserServicesTicketServices userServicesTicketServices, ICoreCmsSettingServices settingServices, IServiceProvider serviceProvider) { this._dal = dal; _clerkServices = clerkServices; _servicesServices = servicesServices; _userServicesTicketServices = userServicesTicketServices; _settingServices = settingServices; _serviceProvider = serviceProvider; base.BaseDal = dal; _unitOfWork = unitOfWork; } /// /// 店铺核销的服务券列表 /// /// public async Task GetVerificationLogs(int userId, int storeId, int page, int limit) { using var container = _serviceProvider.CreateScope(); var _userServices = container.ServiceProvider.GetService(); var jm = new WebApiCallBack(); var where = PredicateBuilder.True(); var allConfigs = await _settingServices.GetConfigDictionaries(); var shopManagerMobile = CommonHelper.GetConfigDictionary(allConfigs, SystemSettingConstVars.ShopManagerMobile); var user = await _userServices.QueryByClauseAsync(p => p.id == userId); if (user == null) { jm.status = false; jm.msg = "用户获取失败"; return jm; } var isManager = !string.IsNullOrEmpty(shopManagerMobile) && shopManagerMobile.Contains(user.mobile); if (isManager) { where = storeId == 0 ? where.And(p => p.isDel == false) : where.And(p => p.isDel == false && p.storeId == storeId); } else { where = where.And(p => p.isDel == false && p.storeId == storeId); //var stroes = await _clerkServices.QueryListByClauseAsync(p => p.userId == userId); //var stroeIds = stroes.Select(p => p.storeId).ToList(); //where = where.And(p => stroeIds.Contains(p.storeId) && p.isDel == false); } var logs = await _dal.QueryPageAsync(where, p => p.verificationTime, OrderByType.Desc, page, limit); if (logs != null && logs.Any()) { var ticketIds = logs.Select(p => p.ticketId).ToList(); var serviceIds = logs.Select(p => p.serviceId).ToList(); var servicesModel = await _servicesServices.QueryListByClauseAsync(p => serviceIds.Contains(p.id)); var ticketsMdoel = await _userServicesTicketServices.QueryListByClauseAsync(p => ticketIds.Contains(p.id)); foreach (var item in logs) { item.ticket = ticketsMdoel.Find(p => p.id == item.ticketId); item.service = servicesModel.Find(p => p.id == item.serviceId); } jm.status = true; jm.msg = "获取成功"; } jm.status = true; jm.data = logs; jm.otherData = new { logs.TotalPages, logs.TotalCount }; return jm; } /// /// 删除服务券核销单(软删除) /// /// /// /// public async Task LogDelete(int id, int userId = 0) { var jm = new WebApiCallBack(); var model = await _dal.QueryByClauseAsync(p => p.id == id); if (model != null) { if (userId > 0) { var clerks = await _clerkServices.ExistsAsync(p => p.userId == userId && p.storeId == model.storeId); if (!clerks) { jm.msg = "你无权删除该服务券核销单"; return jm; } } model.isDel = true; var bl = await _dal.UpdateAsync(model); jm.status = bl; jm.msg = bl ? "删除成功" : "删除失败"; } else { jm.msg = "未找到服务券核销单"; } return jm; } } }