sunpengfei
2 天以前 ad63bd48b1619e7c3779eefdf1d6a32a222169da
feat:开发
8个文件已修改
157 ■■■■ 已修改文件
FlexJobApi.CommonServer.Application/CodeUrls/Commands/CodeUrlCommandHandler.cs 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.CommonServer.Application/CodeUrls/Queries/CodeUrlQueryHandler.cs 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.Core/Entities/CommonServer/CodeUrl.cs 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.Core/Enums/Common/EnumCodeUrlScene.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.Core/Models/CommonServer/CodeUrls/Commands/SaveCodeUrlCommand.cs 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.Core/Models/CommonServer/CodeUrls/Queries/GetCodeUrlQuery.cs 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.Core/Models/UserServer/EnterpriseEmployees/Commands/PersonalUserElectronSignCommand.cs 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.UserServer.Application/EnterpriseEmployees/Commands/EnterpriseEmployeesCommandHandler.cs 36 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.CommonServer.Application/CodeUrls/Commands/CodeUrlCommandHandler.cs
@@ -1,5 +1,6 @@
using FlexJobApi.Core;
using Furion.DatabaseAccessor;
using Mapster;
using MediatR;
using System;
using System.Collections.Generic;
@@ -28,12 +29,8 @@
        /// <returns></returns>
        public async Task<string> Handle(SaveCodeUrlCommand request, CancellationToken cancellationToken)
        {
            var entity = new CodeUrl
            {
                Scene = request.Scene,
                Url = request.Url,
                ExpiredTime = request.ExpiredTime
            };
            var entity = new CodeUrl();
            request.Adapt(entity);
            await SetCode(entity);
            await rep.InsertAsync(entity);
            return entity.Code;
FlexJobApi.CommonServer.Application/CodeUrls/Queries/CodeUrlQueryHandler.cs
@@ -1,5 +1,6 @@
using FlexJobApi.Core;
using Furion.DatabaseAccessor;
using Mapster;
using MediatR;
using Microsoft.EntityFrameworkCore;
using System;
@@ -17,7 +18,7 @@
    public class CodeUrlQueryHandler(
            IRepository<CodeUrl> rep
        ) :
        IRequestHandler<GetCodeUrlQuery, string?>
        IRequestHandler<GetCodeUrlQuery, GetCodeUrlQueryResult>
    {
        private readonly IRepository<CodeUrl> rep = rep;
@@ -27,7 +28,7 @@
        /// <param name="request"></param>
        /// <param name="cancellationToken"></param>
        /// <returns></returns>
        public async Task<string?> Handle(GetCodeUrlQuery request, CancellationToken cancellationToken)
        public async Task<GetCodeUrlQueryResult> Handle(GetCodeUrlQuery request, CancellationToken cancellationToken)
        {
            var now = DateTime.Now;
            return await rep.AsQueryable().AsNoTracking()
@@ -36,8 +37,7 @@
                    && it.Code == request.Code
                    && (it.ExpiredTime == null
                    || it.ExpiredTime > now))
                .Select(it => it.Url)
                .FirstOrDefaultAsync();
                .GetDetail<CodeUrl, GetCodeUrlQueryResult>();
        }
    }
}
FlexJobApi.Core/Entities/CommonServer/CodeUrl.cs
@@ -28,6 +28,31 @@
        public string Url { get; set; }
        /// <summary>
        /// 参数1
        /// </summary>
        public string ParamValue1 { get; set; }
        /// <summary>
        /// 参数2
        /// </summary>
        public string ParamValue2 { get; set; }
        /// <summary>
        /// 参数3
        /// </summary>
        public string ParamValue3 { get; set; }
        /// <summary>
        /// 参数4
        /// </summary>
        public string ParamValue4 { get; set; }
        /// <summary>
        /// 参数5
        /// </summary>
        public string ParamValue5 { get; set; }
        /// <summary>
        /// 过期时间
        /// </summary>
        public DateTime? ExpiredTime { get; set; }
FlexJobApi.Core/Enums/Common/EnumCodeUrlScene.cs
@@ -12,6 +12,10 @@
    public enum EnumCodeUrlScene
    {
        /// <summary>
        /// 邀请签约
        /// </summary>
        InviteElectronSign = 1,
        /// <summary>
        /// 签约地址
        /// </summary>
        ElectronSignUrl = 10,
FlexJobApi.Core/Models/CommonServer/CodeUrls/Commands/SaveCodeUrlCommand.cs
@@ -24,6 +24,31 @@
        public string Url { get; set; }
        /// <summary>
        /// 参数1
        /// </summary>
        public string ParamValue1 { get; set; }
        /// <summary>
        /// 参数2
        /// </summary>
        public string ParamValue2 { get; set; }
        /// <summary>
        /// 参数3
        /// </summary>
        public string ParamValue3 { get; set; }
        /// <summary>
        /// 参数4
        /// </summary>
        public string ParamValue4 { get; set; }
        /// <summary>
        /// 参数5
        /// </summary>
        public string ParamValue5 { get; set; }
        /// <summary>
        /// 过期时间
        /// </summary>
        public DateTime? ExpiredTime { get; set; }
FlexJobApi.Core/Models/CommonServer/CodeUrls/Queries/GetCodeUrlQuery.cs
@@ -11,7 +11,7 @@
    /// 查询编号地址
    /// </summary>
    [Resource([EnumResourceController.CommonServerCodeUrls])]
    public class GetCodeUrlQuery : IRequest<string?>
    public class GetCodeUrlQuery : IRequest<GetCodeUrlQueryResult>
    {
        /// <summary>
        /// 场景
@@ -23,4 +23,41 @@
        /// </summary>
        public string Code { get; set; }
    }
    /// <summary>
    /// 查询编号地址
    /// </summary>
    public class GetCodeUrlQueryResult
    {
        /// <summary>
        /// 地址
        /// </summary>
        public string Url { get; set; }
        /// <summary>
        /// 参数1
        /// </summary>
        public string ParamValue1 { get; set; }
        /// <summary>
        /// 参数2
        /// </summary>
        public string ParamValue2 { get; set; }
        /// <summary>
        /// 参数3
        /// </summary>
        public string ParamValue3 { get; set; }
        /// <summary>
        /// 参数4
        /// </summary>
        public string ParamValue4 { get; set; }
        /// <summary>
        /// 参数5
        /// </summary>
        public string ParamValue5 { get; set; }
    }
}
FlexJobApi.Core/Models/UserServer/EnterpriseEmployees/Commands/PersonalUserElectronSignCommand.cs
@@ -10,13 +10,18 @@
    /// <summary>
    /// 个人用户签约
    /// </summary>
    [Resource([EnumResourceController.UserServerEnterpriseEmployee])]
    [Resource([EnumResourceController.UserServerEnterpriseEmployee], AllowAnonymous = true)]
    public class PersonalUserElectronSignCommand : IRequest<PersonalUserElectronSignCommandResult>
    {
        /// <summary>
        /// 灵工Id
        /// 灵工Id(二选一)
        /// </summary>
        public Guid Id { get; set; }
        public Guid? Id { get; set; }
        /// <summary>
        /// 邀约短信编号(二选一)
        /// </summary>
        public string SmsCode { get; set; }
    }
FlexJobApi.UserServer.Application/EnterpriseEmployees/Commands/EnterpriseEmployeesCommandHandler.cs
@@ -291,6 +291,13 @@
                .ToListAsync();
            foreach (var entity in entities)
            {
                var codeUrl = new SaveCodeUrlCommand
                {
                    Scene = EnumCodeUrlScene.InviteElectronSign,
                    ParamValue1 = entity.Id.ToString(),
                    ExpiredTime = DateTime.Now.AddMonths(1)
                };
                var code = await mediator.Send(codeUrl);
                await smsUtils.Send(new SendSmsModel
                {
                    PhoneNumber = entity.ContactPhoneNumber,
@@ -299,7 +306,7 @@
                new
                {
                    name = entity.Enterprise.EnterpriseName,
                    code = entity.ContractTemplate.Code
                    code = code
                });
            }
            return entities.Count;
@@ -314,10 +321,31 @@
        public async Task<PersonalUserElectronSignCommandResult> Handle(PersonalUserElectronSignCommand request, CancellationToken cancellationToken)
        {
            var logier = JwtUtils.GetCurrentLogier();
            Guid userId;
            if (logier != null)
            {
                userId = logier.Id;
            }
            if (request.Id == null)
            {
                if (request.SmsCode.IsNotNull())
                {
                    var codeUrl = await mediator.Send(new GetCodeUrlQuery
                    {
                        Code = request.SmsCode,
                        Scene = EnumCodeUrlScene.InviteElectronSign
                    });
                    request.Id = codeUrl.ParamValue1.ToGuid()!;
                }
                else
                {
                    throw Oops.Oh(EnumErrorCodeType.s400, "请填写灵工Id或短信编号");
                }
            }
            var entity = await rep.AsQueryable()
                .Include(it => it.Enterprise)
                .Include(it => it.ContractTemplate).ThenInclude(it => it.Values)
                .Where(it => it.UserId == logier.Id && it.Id == request.Id)
                .Where(it => it.Id == request.Id)
                .FirstOrDefaultAsync();
            if (entity == null) throw Oops.Oh(EnumErrorCodeType.s510, "未报名该企业");
            if (entity.UserSignContractStatus == null) throw Oops.Oh(EnumErrorCodeType.s510, "企业未发起签约");
@@ -331,7 +359,7 @@
            if (contract == null) throw Oops.Oh(EnumErrorCodeType.s404, "合同");
            var user = await repUser.AsQueryable().AsNoTracking()
                .Include(it => it.UserAuth)
                .Where(it => it.Id == logier.Id)
                .Where(it => it.Id == entity.UserId)
                .FirstOrDefaultAsync();
            if (user == null) throw Oops.Oh(EnumErrorCodeType.s404, "用户");
            if (entity.ContractTemplate.Access == EnumElectronSignAccess.BestSign && !user.IsReal) throw Oops.Oh(EnumErrorCodeType.s510, "请先实名");
@@ -340,7 +368,7 @@
                OutContractId = contract.Id.ToString(),
                TemplateId = entity.ContractTemplate.ElectronSignContractTemplateId!.Value,
                Title = entity.ContractTemplate.Name,
                OutUserId = logier.Id.ToString(),
                OutUserId = entity.UserId.ToString(),
                Values = entity.ContractTemplate.Values
                    .Where(it => it.UserType == EnumUserType.Personal)
                    .Select(it =>