/*********************************************************************** * Project: baifenBinfa * ProjectName: 百分兵法管理系统 * Web: http://chuanyin.com * Author: * Email: * CreateTime: 202403/02 * Description: 暂无 ***********************************************************************/ using System; using System.Collections.Generic; 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; using static SKIT.FlurlHttpClient.Wechat.Api.Models.CgibinUserInfoBatchGetResponse.Types; namespace CoreCms.Net.Services { /// /// 提货单表 接口实现 /// public class CoreCmsBillLadingServices : BaseServices, ICoreCmsBillLadingServices { private readonly ICoreCmsBillLadingRepository _dal; private readonly ICoreCmsClerkRepository _clerkRepository; private readonly ICoreCmsStoreRepository _storeRepository; private readonly ICoreCmsOrderItemRepository _orderItemRepository; private readonly ICoreCmsUserRepository _userRepository; private readonly IUnitOfWork _unitOfWork; private readonly ICoreCmsSettingServices _settingServices; private readonly IServiceProvider _serviceProvider; public CoreCmsBillLadingServices(IUnitOfWork unitOfWork, ICoreCmsBillLadingRepository dal, ICoreCmsClerkRepository clerkRepository, ICoreCmsStoreRepository storeRepository, ICoreCmsOrderItemRepository orderItemRepository, ICoreCmsUserRepository userRepository, IServiceProvider serviceProvider, ICoreCmsSettingServices settingServices) { this._dal = dal; _clerkRepository = clerkRepository; _storeRepository = storeRepository; _orderItemRepository = orderItemRepository; _userRepository = userRepository; _serviceProvider = serviceProvider; _settingServices = settingServices; base.BaseDal = dal; _unitOfWork = unitOfWork; } /// /// 添加提货单 /// /// public async Task AddData(string orderId, int storeId, string name, string mobile) { return await _dal.AddData(orderId, storeId, name, mobile); } /// /// 核销提货单 /// /// /// /// public async Task LadingOperating(string[] ids, int userId = 0) { var jm = new AdminUiCallBack(); var list = await _dal.QueryListByClauseAsync(p => ids.Contains(p.id) && p.status == false); if (list.Any()) { foreach (var item in list) { item.clerkId = userId; item.pickUpTime = DateTime.Now; item.status = true; } var outChanges = await _dal.UpdateAsync(list); jm.code = outChanges ? 0 : 1; jm.msg = outChanges ? "操作成功" : "操作失败"; } else { jm.msg = "没有可提货的订单"; } return jm; } /// /// 获取店铺提货单列表 /// /// public async Task GetStoreLadingList(int userId, int storeId, int page, int limit) { var jm = new WebApiCallBack(); var where = PredicateBuilder.True(); using var container = _serviceProvider.CreateScope(); var _userServices = container.ServiceProvider.GetService(); 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 clerks = await _clerkRepository.QueryListByClauseAsync(p => p.userId == userId); //var storeIds = clerks.Select(p => p.storeId).ToList(); //where = where.And(p => storeIds.Contains(p.storeId) && p.isDel == false); } var ladingList = await _dal.QueryPageAsync(where, p => p.createTime, OrderByType.Desc, page, limit); jm.status = true; jm.msg = "获取成功"; jm.data = ladingList; jm.otherData = new { ladingList.TotalCount, ladingList.TotalPages }; if (ladingList.Any()) { var storeModel = await _storeRepository.QueryAsync(); foreach (var item in ladingList) { item.orderItems = await _orderItemRepository.QueryListByClauseAsync(p => p.orderId == item.orderId); item.storeName = storeModel.FirstOrDefault(p => p.id == item.storeId)?.storeName; var statusInt = item.status ? (int)GlobalEnumVars.BillLadingStatus.Recharge : (int)GlobalEnumVars.BillLadingStatus.Order; item.statusName = EnumHelper.GetEnumDescriptionByValue(statusInt); } } return jm; } /// /// 删除提货单(软删除) /// /// /// /// public async Task LadingDelete(string id, int userId = 0) { var jm = new WebApiCallBack(); var model = await _dal.QueryByClauseAsync(p => p.id == id); if (model != null) { if (model.status == false) { jm.msg = "未提货的提货单不能删除"; return jm; } if (userId > 0) { var clerks = await _clerkRepository.ExistsAsync(p => p.userId == userId && p.storeId == model.storeId); if (!clerks) { jm.msg = "你无权删除该提货单"; return jm; } } model.isDel = true; model.updateTime = DateTime.Now; var bl = await _dal.UpdateAsync(model); jm.status = bl; jm.msg = bl ? "删除成功" : "删除失败"; } else { jm.msg = "未找到提货单"; } return jm; } /// /// 获取提货单详情 /// /// public async Task GetInfo(string id, int userId = 0) { var jm = new WebApiCallBack(); var list = await _dal.QueryListByClauseAsync(p => p.id.Contains(id) || p.orderId.Contains(id) || p.mobile.Contains(id), p => p.createTime, OrderByType.Desc); var data = new List(); if (list != null) { var userInfo = await _userRepository.QueryByClauseAsync(p => p.id == userId); if (userInfo != null) { var allConfigs = await _settingServices.GetConfigDictionaries(); var shopManagerMobile = CommonHelper.GetConfigDictionary(allConfigs, SystemSettingConstVars.ShopManagerMobile); var isManager = !string.IsNullOrEmpty(shopManagerMobile) && shopManagerMobile.Contains(userInfo.mobile); if (isManager) { data = list; } else { var clerks = await _clerkRepository.QueryListByClauseAsync(p => p.userId == userId); if (clerks != null && clerks.Any()) { var storeIds = clerks.Select(p => p.storeId).ToList(); foreach (var item in list) { if (storeIds.Contains(item.storeId)) { data.Add(item); } } } } } foreach (var item in data) { var statusInt = item.status ? (int)GlobalEnumVars.BillLadingStatus.Recharge : (int)GlobalEnumVars.BillLadingStatus.Order; item.statusName = EnumHelper.GetEnumDescriptionByValue(statusInt); if (item.clerkId > 0) { if (userInfo != null) { item.clerkIdName = !string.IsNullOrEmpty(userInfo.nickName) ? userInfo.nickName + "(" + userInfo.mobile + ")" : UserHelper.FormatMobile(userInfo.mobile) + "(" + userInfo.mobile + ")"; } } else { item.clerkIdName = item.status ? "(后台管理员)" : ""; } item.orderItems = await _orderItemRepository.QueryListByClauseAsync(p => p.orderId == item.orderId); } jm.status = true; jm.msg = "获取成功"; jm.data = data; } else { jm.msg = "提货单不存在"; } return jm; } } }