移动系统liao
2024-08-15 f43970a061d3c90520b4e8f48caa17a204d9a085
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
/***********************************************************************
 *            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
{
    /// <summary>
    /// 服务券核验日志 接口实现
    /// </summary>
    public class CoreCmsUserServicesTicketVerificationLogServices : BaseServices<CoreCmsUserServicesTicketVerificationLog>, 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;
        }
 
        /// <summary>
        /// 店铺核销的服务券列表
        /// </summary>
        /// <returns></returns>
        public async Task<WebApiCallBack> GetVerificationLogs(int userId, int storeId, int page, int limit)
        {
            using var container = _serviceProvider.CreateScope();
            var _userServices = container.ServiceProvider.GetService<ICoreCmsUserServices>();
 
            var jm = new WebApiCallBack();
            var where = PredicateBuilder.True<CoreCmsUserServicesTicketVerificationLog>();
 
            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;
        }
 
        /// <summary>
        /// 删除服务券核销单(软删除)
        /// </summary>
        /// <param name="ids"></param>
        /// <param name="userId"></param>
        /// <returns></returns>
        public async Task<WebApiCallBack> 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;
        }
 
    }
}