HuXiYu
authored
|
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
|
using Hh.Mes.Common.Infrastructure;
using Hh.Mes.Common.log;
using Hh.Mes.Common.Request;
using Hh.Mes.POJO.Entity;
using Hh.Mes.POJO.Response;
using Hh.Mes.Service.Repository;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using Hh.Mes.Pojo.System;
using NPOI.SS.Formula.Functions;
namespace Hh.Mes.Service.Base
{
/// <summary>
/// OPENVPN信息
/// </summary>
public class BaseVpnService : RepositorySqlSugar<base_vpn>
{
public dynamic Load(PageReq pageReq, base_vpn entity)
{
return ExceptionsHelp.Instance.ExecuteT(() =>
{
var result = new Response();
var expression = LinqWhere(entity);
//先组合查询表达式(多表查询查看IOT 设备列表案例)
var query = Context.Queryable<base_vpn>().Where(expression);
//Exel false 分页
if (!entity.Exel)
{
int total = 0;
result.Result = query.ToOffsetPage(pageReq.page, pageReq.limit, ref total);
result.Count = total;
}
else
{
result.Result = query.ToList();
result.Count = result.Result.Count;
}
return result;
}, catchRetrunValue: "list");
}
public dynamic Ins(base_vpn entity)
{
return ExceptionsHelp.Instance.ExecuteT(() =>
{
var response = new Response();
|
|
51
52
|
var key = Guid.NewGuid();
entity.vpnKey = key;
|
HuXiYu
authored
|
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
entity.createBy = sysWebUser.Account;
entity.createTime = DateTime.Now;
response.Status = Add(entity);
if (!response.Status)response.Message = SystemVariable.dataActionError;
return response;
});
}
public dynamic Upd(base_vpn entity)
{
return ExceptionsHelp.Instance.ExecuteT(() =>
{
var response = new Response();
//如果关联了SIM卡,不允许修改VPN账号
|
|
67
|
var vpnSimRel = Context.Queryable<base_vpn, base_sim_vpn_rel>((x, y) => x.vpnKey == y.vpnKey)
|
HuXiYu
authored
|
68
|
.Where((x, y) => x.id == entity.id)
|
|
69
|
.Select((x, y) => new { x.id, x.vpnNumber })
|
HuXiYu
authored
|
70
|
.First();
|
|
71
72
|
if (vpnSimRel != null && entity.vpnNumber != vpnSimRel.vpnNumber)
|
HuXiYu
authored
|
73
74
75
|
{
response.Code = 500;
response.Status = false;
|
|
76
|
response.Message = $"当前有sim卡已经关联了VPN,禁止修改VPN账号【{vpnSimRel.vpnNumber}】,如果要修改请先解绑vpn账号SIM卡绑定关系!";
|
HuXiYu
authored
|
77
78
|
return response;
}
|
|
79
80
|
entity.updateBy = sysWebUser.Account;
entity.updateTime = DateTime.Now;
|
HuXiYu
authored
|
81
82
83
84
85
86
|
response.Status = Update(entity);
if (!response.Status) response.Message = SystemVariable.dataActionError;
return response;
});
}
|
|
87
|
public dynamic DelByIds(int[] ids)
|
HuXiYu
authored
|
88
89
90
91
|
{
return ExceptionsHelp.Instance.ExecuteT(() =>
{
var response = new Response();
|
|
92
93
|
var svQuery = Context.Queryable<base_sim_vpn_rel>();
var vpnQuery = Context.Queryable<base_vpn>();
|
|
94
|
foreach(var id in ids)
|
HuXiYu
authored
|
95
|
{
|
|
96
|
var vpnInfo = vpnQuery.Where(x => x.id == id).First();
|
|
97
|
//如果关联了SIM,禁止删除
|
|
98
|
var isSimRel = svQuery.Where(x => x.vpnKey == vpnInfo.vpnKey);
|
|
99
|
var vpnNumber = vpnInfo.vpnNumber;
|
|
100
|
if (isSimRel.Any())
|
|
101
102
103
|
{
response.Code = 500;
response.Status = false;
|
|
104
|
response.Message = $"选中的VPN:{vpnNumber}关联了SIM卡{isSimRel.First().simKey},禁止删除VPN信息,如果要删除请先解绑VPN账号SIM卡关联关系!如果不解绑,就先不要勾选删除该条VPN信息";
|
|
105
106
|
return response;
}
|
HuXiYu
authored
|
107
|
}
|
|
108
|
Context.Deleteable<base_vpn>().In(ids).ExecuteCommand();
|
HuXiYu
authored
|
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
|
return response;
});
}
public Response ExportData(base_vpn entity)
{
return Load(null, entity);
}
public Expression<Func<base_vpn, bool>> LinqWhere(base_vpn model)
{
try
{
var exp = Expressionable.Create<base_vpn>();
//数据过滤条件
//if (!string.IsNullOrWhiteSpace(model.XXX)) exp.And(x => x.XXX.Contains(model.XXX));
|
|
125
|
if (!string.IsNullOrWhiteSpace(model.vpnNumber))
|
HuXiYu
authored
|
126
|
{
|
|
127
|
exp.And(x => x.vpnNumber.Contains(model.vpnNumber));
|
HuXiYu
authored
|
128
|
}
|
|
129
|
if (!string.IsNullOrWhiteSpace(model.vpnIP))
|
HuXiYu
authored
|
130
|
{
|
|
131
|
exp.And(x => x.vpnIP.Contains(model.vpnIP));
|
HuXiYu
authored
|
132
133
134
135
136
137
138
139
140
141
142
143
144
145
|
}
if (!string.IsNullOrWhiteSpace(model.virtualIP))
{
exp.And(x => x.virtualIP.Contains(model.virtualIP));
}
return exp.ToExpression();//拼接表达式
}
catch (Exception ex)
{
throw new Exception($"{ex.Message}");
}
}
}
}
|