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(); 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(); entity.updateBy = sysWebUser.Account; entity.updateTime = DateTime.Now; //如果关联了SIM卡,不允许修改VPN账号 var vpnSimRel = Context.Queryable<base_vpn, base_sim_vpn_rel>((x, y) => x.accountNumber == y.accountNumber) .Where((x, y) => x.id == entity.id) .Select((x, y) => new { x.id, x.accountNumber }) .First(); if (vpnSimRel != null && entity.accountNumber != vpnSimRel.accountNumber) { response.Code = 500; response.Status = false; response.Message = $"当前有sim卡已经关联了VPN,禁止修改VPN账号【{vpnSimRel.accountNumber}】,如果要修改请先解绑vpn账号SIM卡绑定关系!"; return response; } response.Status = Update(entity); if (!response.Status) response.Message = SystemVariable.dataActionError; return response; }); } public dynamic DelByIds(string[] ids) { return ExceptionsHelp.Instance.ExecuteT(() => { var response = new Response(); var accountNumber = ids[0]; //如果关联了SIM,禁止删除 var isVpnRel = Context.Queryable<base_sim_vpn_rel>().Any(x => x.accountNumber == accountNumber); if (isVpnRel) { response.Code = 500; response.Status = false; response.Message = "当前VPN关联了SIM卡,禁止删除VPN信息,如果要删除请先解绑VPN账号SIM卡关联关系!"; return response; } Context.Deleteable<base_vpn>(t => ids.Contains(t.accountNumber)).ExecuteCommand(); 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)); if (!string.IsNullOrWhiteSpace(model.accountNumber)) { exp.And(x => x.accountNumber.Contains(model.accountNumber)); } if (!string.IsNullOrWhiteSpace(model.ip)) { exp.And(x => x.ip.Contains(model.ip)); } if (!string.IsNullOrWhiteSpace(model.virtualIP)) { exp.And(x => x.virtualIP.Contains(model.virtualIP)); } return exp.ToExpression();//拼接表达式 } catch (Exception ex) { throw new Exception($"{ex.Message}"); } } } }