using GDZZ.Core; using Furion.DependencyInjection; using Furion.DynamicApiController; using Mapster; using Microsoft.AspNetCore.Mvc; using System.Linq; using System.Threading.Tasks; using GDZZ.Application.Entity; using GDZZ.Core.Entity; using GDZZ.Core.OAuth; using GDZZ.Application.Help; using System; using System.Collections.Generic; namespace GDZZ.Application { /// /// 公司属性服务 /// [ApiDescriptionSettings("Application",Name = "Company", Order = 1)] public class CompanyService : ICompanyService, IDynamicApiController, ITransient { private readonly SqlSugarRepository _rep; private readonly SqlSugarRepository companyUserRep; private readonly ICacheService cacheService; public CompanyService(SqlSugarRepository rep, ICacheService cacheService, SqlSugarRepository companyUserRep) { _rep = rep; this.cacheService= cacheService; this.companyUserRep= companyUserRep; } /// /// 分页查询公司 /// /// /// [HttpGet("/Mini/Company/page")] public async Task Page([FromQuery] CompanyInput input) { var entities = await _rep.AsQueryable() .WhereIF(!string.IsNullOrWhiteSpace(input.SearchValue), u => u.Name.Contains(input.SearchValue.Trim())) .WhereIF(!string.IsNullOrWhiteSpace(input.SearchValue), u => u.Code.Contains(input.SearchValue.Trim())) //.Select((u) => new CompanyInput() //{ // CompanyID = u.Id, // CompanyName = u.Name, // Logo = u.logo, // Id = u.Id, // Info = u.Info, // Title = u.Name, // Time = u.CreatedTime.Value.ToString("yyyy/MM/dd"), //}) .ToPagedListAsync(input.PageNo, input.PageSize); return entities.XnPagedResult(); } /// /// 更新公司属性 /// /// /// [HttpPost("/Mini/Company/edit")] public async Task Update(UpdateCompanyInput input) { var entity = input.Adapt(); await _rep.AsUpdateable(entity).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommandAsync(); } /// /// 获取公司属性 /// /// /// [HttpGet("/Mini/Company/Detail")] public async Task Get() { //获取公司相关的招聘信息 return await _rep.FirstOrDefaultAsync(u => u.Id == UserManager.UserId); } /// /// 创建公司 /// /// /// [HttpPost("/Mini/Company/install")] public async Task InstallAsync(AddCompanyInput input) { var entity = input.Adapt(); await _rep.InsertAsync(entity); } /// /// 绑定公司 /// /// 公司信息 /// [HttpGet("/Mini/Comapany/Bing")] public async Task BingCompany([FromQuery] AddCompanyInput input) { //验证电话和验证码一致 var verIfy = await this.cacheService.GetVerifyCode(input.Phone); if (verIfy != input.Checking) throw new Exception("验证码错误"); var companyUser = new CompanyUserScope { MiniCompanyID = input.Id, MiniUserID = UserManager.UserId, }; await this.companyUserRep.InsertAsync(companyUser); //关系表插入信息 } } }