From 4008c7e22c9c01eb653b04f934990486df622654 Mon Sep 17 00:00:00 2001 From: username@email.com <yzy2002yzy@163.com> Date: 星期一, 14 七月 2025 12:21:35 +0800 Subject: [PATCH] Merge branch 'master' of http://47.108.235.38:8080/r/FZCZTB --- Admin.NET/FZCZTB.Net.CustomerSYSTem/Service/FBS_Customer/FBS_CustomerService.cs | 280 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 280 insertions(+), 0 deletions(-) diff --git a/Admin.NET/FZCZTB.Net.CustomerSYSTem/Service/FBS_Customer/FBS_CustomerService.cs b/Admin.NET/FZCZTB.Net.CustomerSYSTem/Service/FBS_Customer/FBS_CustomerService.cs new file mode 100644 index 0000000..7bb739a --- /dev/null +++ b/Admin.NET/FZCZTB.Net.CustomerSYSTem/Service/FBS_Customer/FBS_CustomerService.cs @@ -0,0 +1,280 @@ +锘�// Admin.NET 椤圭洰鐨勭増鏉冦�佸晢鏍囥�佷笓鍒╁拰鍏朵粬鐩稿叧鏉冨埄鍧囧彈鐩稿簲娉曞緥娉曡鐨勪繚鎶ゃ�備娇鐢ㄦ湰椤圭洰搴旈伒瀹堢浉鍏虫硶寰嬫硶瑙勫拰璁稿彲璇佺殑瑕佹眰銆� +// +// 鏈」鐩富瑕侀伒寰� MIT 璁稿彲璇佸拰 Apache 璁稿彲璇侊紙鐗堟湰 2.0锛夎繘琛屽垎鍙戝拰浣跨敤銆傝鍙瘉浣嶄簬婧愪唬鐮佹爲鏍圭洰褰曚腑鐨� LICENSE-MIT 鍜� LICENSE-APACHE 鏂囦欢銆� +// +// 涓嶅緱鍒╃敤鏈」鐩粠浜嬪嵄瀹冲浗瀹跺畨鍏ㄣ�佹壈涔辩ぞ浼氱З搴忋�佷镜鐘粬浜哄悎娉曟潈鐩婄瓑娉曞緥娉曡绂佹鐨勬椿鍔紒浠讳綍鍩轰簬鏈」鐩簩娆″紑鍙戣�屼骇鐢熺殑涓�鍒囨硶寰嬬籂绾峰拰璐d换锛屾垜浠笉鎵挎媴浠讳綍璐d换锛� + +using Admin.NET.Core.Service; +using Microsoft.AspNetCore.Http; + +using Furion.DatabaseAccessor; +using Furion.FriendlyException; +using Mapster; +using SqlSugar; +using System.ComponentModel; +using System.ComponentModel.DataAnnotations; +using Microsoft.AspNetCore.Mvc; +using Furion.DynamicApiController; +using Admin.NET.Core; +using FZCZTB.NET.MD.CutomerMd; +using Furion.DependencyInjection; +using FZCZTB.Net.CustomerSYSTem.Service.FBS_Customer.Dto; +namespace FZCZTB.Net.CustomerSYSTem; + +/// <summary> +/// 瀹㈡埛琛ㄦ湇鍔� 馃З +/// </summary> +[ApiDescriptionSettings(CustomerSYSTemConst.GroupName, Order = 100)] +public class FBS_CustomerService : IDynamicApiController, ITransient +{ + private readonly SqlSugarRepository<FBS_Customer> _fBS_CustomerRep; + private readonly ISqlSugarClient _sqlSugarClient; + + public FBS_CustomerService(SqlSugarRepository<FBS_Customer> fBS_CustomerRep, ISqlSugarClient sqlSugarClient) + { + _fBS_CustomerRep = fBS_CustomerRep; + _sqlSugarClient = sqlSugarClient; + } + + /// <summary> + /// 鍒嗛〉鏌ヨ瀹㈡埛琛� 馃敄 + /// </summary> + /// <param name="input"></param> + /// <returns></returns> + [DisplayName("鍒嗛〉鏌ヨ瀹㈡埛琛�")] + [ApiDescriptionSettings(Name = "Page"), HttpPost] + public async Task<SqlSugarPagedList<FBS_CustomerOutput>> Page(PageFBS_CustomerInput input) + { + input.Keyword = input.Keyword?.Trim(); + var query = _fBS_CustomerRep.AsQueryable() + //.WhereIF(!string.IsNullOrWhiteSpace(input.Keyword), u => u.Account.Contains(input.Keyword) || u.RealName.Contains(input.Keyword) || u.NickName.Contains(input.Keyword) || u.IdCardPath.Contains(input.Keyword) || u.College.Contains(input.Keyword) || u.OfficePhone.Contains(input.Keyword) || u.EmergencyContact.Contains(input.Keyword) || u.EmergencyPhone.Contains(input.Keyword) || u.EmergencyAddress.Contains(input.Keyword) || u.Introduction.Contains(input.Keyword) || u.Remark.Contains(input.Keyword) || u.PosLevel.Contains(input.Keyword) || u.PosTitle.Contains(input.Keyword)) + .WhereIF(!string.IsNullOrWhiteSpace(input.Account), u => u.Account.Contains(input.Account.Trim())) + .WhereIF(!string.IsNullOrWhiteSpace(input.RealName), u => u.RealName.Contains(input.RealName.Trim())) + .WhereIF(!string.IsNullOrWhiteSpace(input.NickName), u => u.NickName.Contains(input.NickName.Trim())) + //.WhereIF(!string.IsNullOrWhiteSpace(input.IdCardPath), u => u.IdCardPath.Contains(input.IdCardPath.Trim())) + //.WhereIF(!string.IsNullOrWhiteSpace(input.College), u => u.College.Contains(input.College.Trim())) + //.WhereIF(!string.IsNullOrWhiteSpace(input.OfficePhone), u => u.OfficePhone.Contains(input.OfficePhone.Trim())) + //.WhereIF(!string.IsNullOrWhiteSpace(input.EmergencyContact), u => u.EmergencyContact.Contains(input.EmergencyContact.Trim())) + //.WhereIF(!string.IsNullOrWhiteSpace(input.EmergencyPhone), u => u.EmergencyPhone.Contains(input.EmergencyPhone.Trim())) + //.WhereIF(!string.IsNullOrWhiteSpace(input.EmergencyAddress), u => u.EmergencyAddress.Contains(input.EmergencyAddress.Trim())) + //.WhereIF(!string.IsNullOrWhiteSpace(input.Introduction), u => u.Introduction.Contains(input.Introduction.Trim())) + .WhereIF(!string.IsNullOrWhiteSpace(input.Remark), u => u.Remark.Contains(input.Remark.Trim())) + //.WhereIF(!string.IsNullOrWhiteSpace(input.PosLevel), u => u.PosLevel.Contains(input.PosLevel.Trim())) + //.WhereIF(!string.IsNullOrWhiteSpace(input.PosTitle), u => u.PosTitle.Contains(input.PosTitle.Trim())) + //.WhereIF(input.CardType.HasValue, u => u.CardType == input.CardType) + //.WhereIF(input.CultureLevel.HasValue, u => u.CultureLevel == input.CultureLevel) + //.WhereIF(input.OrderNo != null, u => u.OrderNo == input.OrderNo) + .WhereIF(input.Status.HasValue, u => u.Status == input.Status) + .Select<FBS_CustomerOutput>(); + return await query.OrderBuilder(input).ToPagedListAsync(input.Page, input.PageSize); + } + + /// <summary> + /// 鑾峰彇瀹㈡埛琛ㄨ鎯� 鈩癸笍 + /// </summary> + /// <param name="input"></param> + /// <returns></returns> + [DisplayName("鑾峰彇瀹㈡埛琛ㄨ鎯�")] + [ApiDescriptionSettings(Name = "Detail"), HttpGet] + public async Task<FBS_Customer> Detail([FromQuery] QueryByIdFBS_CustomerInput input) + { + return await _fBS_CustomerRep.GetFirstAsync(u => u.Id == input.Id); + } + + /// <summary> + /// 澧炲姞瀹㈡埛琛� 鉃� + /// </summary> + /// <param name="input"></param> + /// <returns></returns> + [DisplayName("澧炲姞瀹㈡埛琛�")] + [ApiDescriptionSettings(Name = "Add"), HttpPost] + public async Task<long> Add(AddFBS_CustomerInput input) + { + var entity = input.Adapt<FBS_Customer>(); + return await _fBS_CustomerRep.InsertAsync(entity) ? entity.Id : 0; + } + + /// <summary> + /// 鏇存柊瀹㈡埛琛� 鉁忥笍 + /// </summary> + /// <param name="input"></param> + /// <returns></returns> + [DisplayName("鏇存柊瀹㈡埛琛�")] + [ApiDescriptionSettings(Name = "Update"), HttpPost] + public async Task Update(UpdateFBS_CustomerInput input) + { + var entity = input.Adapt<FBS_Customer>(); + await _fBS_CustomerRep.AsUpdateable(entity) + .IgnoreColumns(u => new { + //u.Expertise, + //u.OfficeZone, + //u.Office, + //u.JoinDate, + u.LastLoginIp, + u.LastLoginAddress, + u.LastLoginTime, + u.LastLoginDevice, + u.Signature, + }) + .ExecuteCommandAsync(); + } + + /// <summary> + /// 鍒犻櫎瀹㈡埛琛� 鉂� + /// </summary> + /// <param name="input"></param> + /// <returns></returns> + [DisplayName("鍒犻櫎瀹㈡埛琛�")] + [ApiDescriptionSettings(Name = "Delete"), HttpPost] + public async Task Delete(DeleteFBS_CustomerInput input) + { + var entity = await _fBS_CustomerRep.GetFirstAsync(u => u.Id == input.Id) ?? throw Oops.Oh(ErrorCodeEnum.D1002); + // await _fBS_CustomerRep.FakeDeleteAsync(entity); //鍋囧垹闄� + await _fBS_CustomerRep.DeleteAsync(entity); //鐪熷垹闄� + } + + /// <summary> + /// 鎵归噺鍒犻櫎瀹㈡埛琛� 鉂� + /// </summary> + /// <param name="input"></param> + /// <returns></returns> + [DisplayName("鎵归噺鍒犻櫎瀹㈡埛琛�")] + [ApiDescriptionSettings(Name = "BatchDelete"), HttpPost] + public async Task<bool> BatchDelete([Required(ErrorMessage = "涓婚敭鍒楄〃涓嶈兘涓虹┖")]List<DeleteFBS_CustomerInput> input) + { + var exp = Expressionable.Create<FBS_Customer>(); + foreach (var row in input) exp = exp.Or(it => it.Id == row.Id); + var list = await _fBS_CustomerRep.AsQueryable().Where(exp.ToExpression()).ToListAsync(); + + // return await _fBS_CustomerRep.FakeDeleteAsync(list); //鍋囧垹闄� + return await _fBS_CustomerRep.DeleteAsync(list); //鐪熷垹闄� + } + + /// <summary> + /// 璁剧疆瀹㈡埛琛ㄧ姸鎬� 馃毇 + /// </summary> + /// <param name="input"></param> + /// <returns></returns> + [DisplayName("璁剧疆瀹㈡埛琛ㄧ姸鎬�")] + [ApiDescriptionSettings(Name = "SetStatus"), HttpPost] + public async Task SetFBS_CustomerStatus(SetFBS_CustomerStatusInput input) + { + await _fBS_CustomerRep.AsUpdateable().SetColumns(u => u.Status, input.Status).Where(u => u.Id == input.Id).ExecuteCommandAsync(); + } + + /// <summary> + /// 瀵煎嚭瀹㈡埛琛ㄨ褰� 馃敄 + /// </summary> + /// <param name="input"></param> + /// <returns></returns> + [DisplayName("瀵煎嚭瀹㈡埛琛ㄨ褰�")] + [ApiDescriptionSettings(Name = "Export"), HttpPost, NonUnify] + public async Task<IActionResult> Export(PageFBS_CustomerInput input) + { + var list = (await Page(input)).Items?.Adapt<List<ExportFBS_CustomerOutput>>() ?? new(); + if (input.SelectKeyList?.Count > 0) list = list.Where(x => input.SelectKeyList.Contains(x.Id)).ToList(); + return ExcelHelper.ExportTemplate(list, "瀹㈡埛琛ㄥ鍑鸿褰�"); + } + + /// <summary> + /// 涓嬭浇瀹㈡埛琛ㄦ暟鎹鍏ユā鏉� 猬囷笍 + /// </summary> + /// <returns></returns> + [DisplayName("涓嬭浇瀹㈡埛琛ㄦ暟鎹鍏ユā鏉�")] + [ApiDescriptionSettings(Name = "Import"), HttpGet, NonUnify] + public IActionResult DownloadTemplate() + { + return ExcelHelper.ExportTemplate(new List<ExportFBS_CustomerOutput>(), "瀹㈡埛琛ㄥ鍏ユā鏉�"); + } + + private static readonly object _fBS_CustomerImportLock = new object(); + /// <summary> + /// 瀵煎叆瀹㈡埛琛ㄨ褰� 馃捑 + /// </summary> + /// <returns></returns> + [DisplayName("瀵煎叆瀹㈡埛琛ㄨ褰�")] + [ApiDescriptionSettings(Name = "Import"), HttpPost, NonUnify, UnitOfWork] + public IActionResult ImportData([Required] IFormFile file) + { + lock (_fBS_CustomerImportLock) + { + var stream = ExcelHelper.ImportData<ImportFBS_CustomerInput, FBS_Customer>(file, (list, markerErrorAction) => + { + _sqlSugarClient.Utilities.PageEach(list, 2048, pageItems => + { + + // 鏍¢獙骞惰繃婊ゅ繀濉熀鏈被鍨嬩负null鐨勫瓧娈� + var rows = pageItems.Where(x => { + if (!string.IsNullOrWhiteSpace(x.Error)) return false; + if (x.Sex == null){ + x.Error = "鎬у埆涓嶈兘涓虹┖"; + return false; + } + if (!string.IsNullOrWhiteSpace(x.Error)) return false; + if (x.Age == null){ + x.Error = "骞撮緞涓嶈兘涓虹┖"; + return false; + } + if (!string.IsNullOrWhiteSpace(x.Error)) return false; + if (x.CardType == null){ + x.Error = "璇佷欢绫诲瀷涓嶈兘涓虹┖"; + return false; + } + if (!string.IsNullOrWhiteSpace(x.Error)) return false; + if (x.CultureLevel == null){ + x.Error = "鏂囧寲绋嬪害涓嶈兘涓虹┖"; + return false; + } + if (!string.IsNullOrWhiteSpace(x.Error)) return false; + if (x.OrderNo == null){ + x.Error = "鎺掑簭涓嶈兘涓虹┖"; + return false; + } + if (!string.IsNullOrWhiteSpace(x.Error)) return false; + if (x.Status == null){ + x.Error = "鐘舵�佷笉鑳戒负绌�"; + return false; + } + return true; + }).Adapt<List<FBS_Customer>>(); + + var storageable = _fBS_CustomerRep.Context.Storageable(rows) + .SplitError(it => string.IsNullOrWhiteSpace(it.Item.Account), "璐﹀彿涓嶈兘涓虹┖") + .SplitError(it => it.Item.Account?.Length > 32, "璐﹀彿闀垮害涓嶈兘瓒呰繃32涓瓧绗�") + .SplitError(it => string.IsNullOrWhiteSpace(it.Item.Password), "瀵嗙爜涓嶈兘涓虹┖") + .SplitError(it => it.Item.Password?.Length > 512, "瀵嗙爜闀垮害涓嶈兘瓒呰繃512涓瓧绗�") + .SplitError(it => string.IsNullOrWhiteSpace(it.Item.RealName), "鐪熷疄濮撳悕涓嶈兘涓虹┖") + .SplitError(it => it.Item.RealName?.Length > 32, "鐪熷疄濮撳悕闀垮害涓嶈兘瓒呰繃32涓瓧绗�") + .SplitError(it => it.Item.NickName?.Length > 32, "鏄电О闀垮害涓嶈兘瓒呰繃32涓瓧绗�") + .SplitError(it => it.Item.Avatar?.Length > 512, "澶村儚闀垮害涓嶈兘瓒呰繃512涓瓧绗�") + //.SplitError(it => it.Item.Nation?.Length > 32, "姘戞棌闀垮害涓嶈兘瓒呰繃32涓瓧绗�") + .SplitError(it => it.Item.Phone?.Length > 16, "鎵嬫満鍙风爜闀垮害涓嶈兘瓒呰繃16涓瓧绗�") + //.SplitError(it => it.Item.IdCardNum?.Length > 32, "韬唤璇佸彿闀垮害涓嶈兘瓒呰繃32涓瓧绗�") + //.SplitError(it => it.Item.IdCardPath?.Length > 512, "韬唤璇侀暱搴︿笉鑳借秴杩�512涓瓧绗�") + .SplitError(it => it.Item.Email?.Length > 64, "閭闀垮害涓嶈兘瓒呰繃64涓瓧绗�") + //.SplitError(it => it.Item.Address?.Length > 256, "鍦板潃闀垮害涓嶈兘瓒呰繃256涓瓧绗�") + //.SplitError(it => it.Item.PoliticalOutlook?.Length > 16, "鏀挎不闈㈣矊闀垮害涓嶈兘瓒呰繃16涓瓧绗�") + //.SplitError(it => it.Item.College?.Length > 128, "姣曚笟闄㈡牎闀垮害涓嶈兘瓒呰繃128涓瓧绗�") + //.SplitError(it => it.Item.OfficePhone?.Length > 16, "鍔炲叕鐢佃瘽闀垮害涓嶈兘瓒呰繃16涓瓧绗�") + //.SplitError(it => it.Item.EmergencyContact?.Length > 32, "绱ф�ヨ仈绯讳汉闀垮害涓嶈兘瓒呰繃32涓瓧绗�") + //.SplitError(it => it.Item.EmergencyPhone?.Length > 16, "绱ф�ヨ仈绯讳汉鐢佃瘽闀垮害涓嶈兘瓒呰繃16涓瓧绗�") + //.SplitError(it => it.Item.EmergencyAddress?.Length > 256, "绱ф�ヨ仈绯讳汉鍦板潃闀垮害涓嶈兘瓒呰繃256涓瓧绗�") + //.SplitError(it => it.Item.Introduction?.Length > 512, "涓汉绠�浠嬮暱搴︿笉鑳借秴杩�512涓瓧绗�") + .SplitError(it => it.Item.Remark?.Length > 256, "澶囨敞闀垮害涓嶈兘瓒呰繃256涓瓧绗�") + //.SplitError(it => it.Item.PosLevel?.Length > 32, "鑱岀骇闀垮害涓嶈兘瓒呰繃32涓瓧绗�") + //.SplitError(it => it.Item.PosTitle?.Length > 32, "鑱岀О闀垮害涓嶈兘瓒呰繃32涓瓧绗�") + .SplitInsert(_ => true) + .ToStorage(); + + storageable.AsInsertable.ExecuteCommand();// 涓嶅瓨鍦ㄦ彃鍏� + storageable.AsUpdateable.ExecuteCommand();// 瀛樺湪鏇存柊 + + // 鏍囪閿欒淇℃伅 + markerErrorAction.Invoke(storageable, pageItems, rows); + }); + }); + + return stream; + } + } +} -- Gitblit v1.9.1