/*********************************************************************** * 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.ViewModels.UI; using CoreCms.Net.Utility.Extensions; using CoreCms.Net.Utility.Helper; using Flurl.Http; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using SqlSugar; namespace CoreCms.Net.Services { /// /// 银行卡信息 接口实现 /// public class CoreCmsUserBankCardServices : BaseServices, ICoreCmsUserBankCardServices { private readonly ICoreCmsUserBankCardRepository _dal; private readonly ICoreCmsAreaServices _areaServices; private readonly ICoreCmsSettingServices _settingServices; private readonly IUnitOfWork _unitOfWork; public CoreCmsUserBankCardServices(IUnitOfWork unitOfWork, ICoreCmsUserBankCardRepository dal, ICoreCmsAreaServices areaServices, ICoreCmsSettingServices settingServices) { this._dal = dal; base.BaseDal = dal; _unitOfWork = unitOfWork; _areaServices = areaServices; _settingServices = settingServices; } /// /// 我的银行卡列表 /// /// /// public async Task AddBankCards(CoreCmsUserBankCard entity) { var jm = new WebApiCallBack(); jm.otherData = entity; if (string.IsNullOrEmpty(entity.cardNumber)) { jm.msg = "请输入银行卡号"; return jm; } if (entity.cardNumber.Length < 16 || entity.cardNumber.Length > 19) { jm.msg = "请输入16-19位银行卡号"; return jm; } if (string.IsNullOrEmpty(entity.accountName)) { jm.msg = "请输入开户账户名"; return jm; } if (string.IsNullOrEmpty(entity.bankName)) { jm.msg = "请输入银行名称"; return jm; } if (string.IsNullOrEmpty(entity.accountBank)) { jm.msg = "请输入开户行名称"; return jm; } var card = await _dal.QueryByClauseAsync(p => p.userId == entity.userId && p.cardNumber == entity.cardNumber); if (card != null) { jm.msg = "该卡片已经添加"; return jm; } var model = new CoreCmsUserBankCard(); model.userId = entity.userId; model.bankName = entity.bankName; model.bankCode = entity.bankCode; model.bankAreaId = entity.bankAreaId; model.accountBank = entity.accountBank; model.accountName = entity.accountName; model.cardNumber = entity.cardNumber; model.cardType = entity.cardType; model.isdefault = entity.isdefault; model.createTime = DateTime.Now; if (model.isdefault == true) { // 如果要添加默认 先判断是否有默认卡 var def = await _dal.ExistsAsync(p => p.userId == entity.userId && p.isdefault == true); if (def) { await _dal.UpdateAsync(p => new CoreCmsUserBankCard() { isdefault = false }, p => p.isdefault == true && p.userId == entity.userId); await _dal.InsertAsync(model); jm.status = true; jm.msg = "保存成功"; } else { await _dal.InsertAsync(model); jm.status = true; jm.msg = "保存成功"; } } else { await _dal.InsertAsync(model); jm.status = true; jm.msg = "保存成功"; } return jm; } /// /// 我的银行卡列表 /// /// /// public async Task GetMyBankcardsList(int userId) { var jm = new WebApiCallBack(); jm.status = true; var res = await _dal.QueryListByClauseAsync(p => p.userId == userId); if (res != null && res.Any()) { foreach (var item in res) { var areas = await _areaServices.GetAreaFullName(item.bankAreaId); ; item.bankAreaName = areas.status ? areas.data.ToString() : ""; item.cardNumber = UserHelper.BankCardNoFormat(item.cardNumber, 4, 4, '*'); item.cardTypeName = EnumHelper.GetEnumDescriptionByValue(item.cardType); item.bankLogo = BankConst.BankLogoUrl + item.bankCode; } } jm.data = res; return jm; } /// /// 删除银行卡 /// /// /// /// public async Task Removebankcard(int id, int userId) { var jm = new WebApiCallBack(); // 先判断该银行卡是否存在 var data = await _dal.QueryByClauseAsync(p => p.id == id && p.userId == userId); if (data != null) { // 如果要删除的是默认的卡 if (data.isdefault) { // 查询是否有其他银行卡 var otherData = await _dal.QueryByClauseAsync(p => p.id != id && p.userId == userId); if (otherData != null) { otherData.isdefault = true; await _dal.UpdateAsync(otherData); await _dal.DeleteAsync(data); jm.status = true; jm.msg = "删除成功"; } else { jm.status = await _dal.DeleteAsync(data); jm.msg = jm.status ? "删除成功" : "删除失败"; } } else { jm.status = await _dal.DeleteByIdAsync(id); jm.msg = jm.status ? "删除成功" : "删除失败"; } } else { jm.msg = "该卡片不存在"; } return jm; } /// /// 获取用户默认银行卡信息 /// /// /// public async Task GetDefaultBankCard(int userId) { var jm = new WebApiCallBack(); var defCard = await _dal.QueryByClauseAsync(p => p.userId == userId && p.isdefault == true); if (defCard != null) { var areas = await _areaServices.GetAreaFullName(defCard.bankAreaId); ; defCard.bankAreaName = areas.status ? areas.data.ToString() : ""; defCard.cardNumber = UserHelper.BankCardNoFormat(defCard.cardNumber, 4, 4, '*'); defCard.cardTypeName = EnumHelper.GetEnumDescriptionByValue(defCard.cardType); defCard.bankLogo = BankConst.BankLogoUrl + defCard.bankCode; jm.data = defCard; } else { var card = await _dal.QueryByClauseAsync(p => p.userId == userId, p => p.createTime, OrderByType.Asc); if (card != null) { var areas = await _areaServices.GetAreaFullName(card.bankAreaId); ; card.bankAreaName = areas.status ? areas.data.ToString() : ""; card.cardNumber = UserHelper.BankCardNoFormat(card.cardNumber, 4, 4, '*'); card.cardTypeName = EnumHelper.GetEnumDescriptionByValue(card.cardType); card.bankLogo = BankConst.BankLogoUrl + card.bankCode; jm.data = card; } } jm.status = jm.data != null; jm.msg = jm.data != null ? "获取成功" : "无数据获取"; return jm; } /// /// 获取银行卡组织信息 /// /// /// public async Task BankCardsOrganization(string cardCode) { var jm = new WebApiCallBack(); var url = "https://ccdcapi.alipay.com/validateAndCacheCardInfo.json?_input_charset=utf-8&cardNo=" + cardCode + "&cardBinCheck=true"; //var res = HttpHelper.PostSend(url, ""); var res = await url.GetStringAsync(); var resObj = JObject.Parse(res); if (!resObj.ContainsKey("validated")) { jm.msg = GlobalErrorCodeVars.Code11021; jm.code = 11021; return jm; } if (!resObj["validated"].ObjectToBool()) { jm.msg = GlobalErrorCodeVars.Code11021; jm.code = 11021; return jm; } else { var name = EnumHelper.GetEnumDescriptionByKey(resObj["bank"].ObjectToString()); var type = (int)GlobalEnumVars.BankType.BankTypeDc; var typeName = string.Empty; switch (resObj["cardType"].ObjectToString()) { case "DC": type = (int)GlobalEnumVars.BankType.BankTypeDc; typeName = EnumHelper.GetEnumDescriptionByValue((int)GlobalEnumVars.BankType.BankTypeDc); break; case "CC": type = (int)GlobalEnumVars.BankType.BankTypeCc; typeName = EnumHelper.GetEnumDescriptionByValue((int)GlobalEnumVars.BankType.BankTypeCc); break; } var bankCode = resObj["bank"].ObjectToString(); jm.status = true; jm.data = new { name, type, typeName, bankCode }; } return jm; } /// /// 设置默认的银行卡 /// /// /// public async Task SetDefault(int userId, int id) { var jm = new WebApiCallBack(); var card = await _dal.QueryByClauseAsync(p => p.userId == userId && p.id == id); if (card != null) { await _dal.UpdateAsync(it => new CoreCmsUserBankCard() { isdefault = true }, p => p.id == card.id); await _dal.UpdateAsync(it => new CoreCmsUserBankCard() { isdefault = false }, p => p.id != card.id && p.userId == userId); jm.status = true; jm.msg = "保存成功"; } else { jm.msg = "该银行卡不存在"; } jm.status = true; return jm; } /// /// 获取银行卡信息 /// /// /// /// public async Task GetBankcardInfo(int userId, int id) { var jm = new WebApiCallBack(); var card = await _dal.QueryByClauseAsync(p => p.userId == userId && p.id == id); if (card != null) { card.bankLogo = BankConst.BankLogoUrl + card.bankCode; card.cardNumber = UserHelper.BankCardNoFormat(card.cardNumber, 4, 4, '*'); card.cardTypeName = EnumHelper.GetEnumDescriptionByValue(card.cardType); jm.status = true; jm.msg = "获取成功"; jm.data = card; } else { jm.status = false; jm.msg = "该银行卡不存在"; } return jm; } } }