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