feat: 新增任务接口路由
This commit is contained in:
@@ -0,0 +1,39 @@
|
||||
using Volo.Abp.Application.Dtos;
|
||||
using Yi.Framework.Bbs.Domain.Shared.Enums;
|
||||
|
||||
namespace Yi.Framework.Bbs.Application.Contracts.Dtos.Assignment;
|
||||
|
||||
public class AssignmentDefineGetListOutputDto : EntityDto<Guid>
|
||||
{
|
||||
/// <summary>
|
||||
/// 任务名称
|
||||
/// </summary>
|
||||
public string Name { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 备注
|
||||
/// </summary>
|
||||
public string Remarks { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 任务类型
|
||||
/// </summary>
|
||||
public AssignmentTypeEnum AssignmentType { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 总共步骤数
|
||||
/// </summary>
|
||||
public int TotalStepNumber { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 前置任务id
|
||||
/// </summary>
|
||||
public Guid? PreAssignmentId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 任务奖励的钱钱数量
|
||||
/// </summary>
|
||||
public decimal RewardsMoneyNumber { get; set; }
|
||||
|
||||
public int OrderNum { get; set; }
|
||||
}
|
||||
@@ -4,5 +4,21 @@ namespace Yi.Framework.Bbs.Application.Contracts.Dtos.Assignment;
|
||||
|
||||
public class AssignmentGetListInput
|
||||
{
|
||||
/// <summary>
|
||||
/// 任务查询条件
|
||||
/// </summary>
|
||||
public AssignmentQueryStateEnum? AssignmentQueryState { get; set; }
|
||||
}
|
||||
|
||||
public enum AssignmentQueryStateEnum
|
||||
{
|
||||
/// <summary>
|
||||
/// 正在进行
|
||||
/// </summary>
|
||||
Progress,
|
||||
|
||||
/// <summary>
|
||||
/// 已结束
|
||||
/// </summary>
|
||||
End
|
||||
}
|
||||
@@ -1,8 +1,38 @@
|
||||
using Volo.Abp.Application.Dtos;
|
||||
using Yi.Framework.Bbs.Domain.Shared.Enums;
|
||||
|
||||
namespace Yi.Framework.Bbs.Application.Contracts.Dtos.Assignment;
|
||||
|
||||
public class AssignmentGetListOutputDto:EntityDto<Guid>
|
||||
{
|
||||
|
||||
/// <summary>
|
||||
/// 当前步骤数
|
||||
/// </summary>
|
||||
public int CurrentStepNumber { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 总共步骤数
|
||||
/// </summary>
|
||||
public int TotalStepNumber { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 任务状态
|
||||
/// </summary>
|
||||
public AssignmentStateEnum AssignmentState { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 任务奖励的钱钱数量
|
||||
/// </summary>
|
||||
public decimal RewardsMoneyNumber { get; set; }
|
||||
/// <summary>
|
||||
/// 任务过期时间
|
||||
/// </summary>
|
||||
public DateTime? ExpireTime { get; set; }
|
||||
|
||||
public DateTime? CompleteTime { get; set; }
|
||||
|
||||
|
||||
public DateTime CreationTime { get; }
|
||||
public int OrderNum { get; set; }
|
||||
}
|
||||
@@ -1,10 +1,11 @@
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Mapster;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Volo.Abp.Application.Dtos;
|
||||
using Volo.Abp.Application.Services;
|
||||
using Volo.Abp.Users;
|
||||
using Yi.Framework.Bbs.Application.Contracts.Dtos.Assignment;
|
||||
using Yi.Framework.Bbs.Domain.Managers;
|
||||
using Yi.Framework.Bbs.Domain.Shared.Enums;
|
||||
|
||||
namespace Yi.Framework.Bbs.Application.Services;
|
||||
|
||||
@@ -26,26 +27,49 @@ public class AssignmentService : ApplicationService
|
||||
/// </summary>
|
||||
/// <param name="id"></param>
|
||||
[HttpPost("assignment/accept/{id}")]
|
||||
public async Task AcceptAsync(Guid id)
|
||||
public async Task AcceptAsync([FromRoute]Guid id)
|
||||
{
|
||||
await _assignmentManager.AcceptAsync(CurrentUser.GetId(), id);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 接收任务奖励
|
||||
/// 领取任务奖励
|
||||
/// </summary>
|
||||
/// <param name="id"></param>
|
||||
[HttpPost("assignment/receive-rewards/{id}")]
|
||||
public async Task ReceiveRewardsAsync(Guid id)
|
||||
[HttpPost("assignment/complete/{id}")]
|
||||
public async Task ReceiveRewardsAsync([FromRoute]Guid id)
|
||||
{
|
||||
await _assignmentManager.ReceiveRewardsAsync(id);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查询任务
|
||||
/// 查看可接受的任务
|
||||
/// </summary>
|
||||
public async Task<PagedResultDto<AssignmentGetListOutputDto>> GetListAsync(AssignmentGetListInput input)
|
||||
/// <returns></returns>
|
||||
[HttpGet("assignment/receive")]
|
||||
public async Task<List<AssignmentDefineGetListOutputDto>> GetCanReceiveListAsync()
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
var entities = await _assignmentManager.GetCanReceiveListAsync(CurrentUser.GetId());
|
||||
var output = entities.Adapt<List<AssignmentDefineGetListOutputDto>>();
|
||||
return output;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查询接受的任务
|
||||
/// </summary>
|
||||
[HttpGet("assignment")]
|
||||
public async Task<List<AssignmentGetListOutputDto>> GetListAsync([FromQuery]AssignmentGetListInput input)
|
||||
{
|
||||
var entities= await _assignmentManager._assignmentRepository._DbQueryable
|
||||
.Where(x => x.UserId == CurrentUser.GetId())
|
||||
.WhereIF(input.AssignmentQueryState == AssignmentQueryStateEnum.Progress,
|
||||
x => x.AssignmentState == AssignmentStateEnum.Progress)
|
||||
.WhereIF(input.AssignmentQueryState == AssignmentQueryStateEnum.End,
|
||||
x => x.AssignmentState == AssignmentStateEnum.Completed ||
|
||||
x.AssignmentState == AssignmentStateEnum.Expired)
|
||||
.ToListAsync();
|
||||
|
||||
var output= entities.Adapt<List<AssignmentGetListOutputDto>>();
|
||||
return output;
|
||||
}
|
||||
}
|
||||
@@ -16,8 +16,8 @@ namespace Yi.Framework.Bbs.Domain.Managers;
|
||||
public class AssignmentManager : DomainService
|
||||
{
|
||||
private readonly IEnumerable<IAssignmentProvider> _assignmentProviders;
|
||||
private readonly ISqlSugarRepository<AssignmentAggregateRoot> _assignmentRepository;
|
||||
private readonly ISqlSugarRepository<AssignmentDefineAggregateRoot> _assignmentDefineRepository;
|
||||
public readonly ISqlSugarRepository<AssignmentAggregateRoot> _assignmentRepository;
|
||||
public readonly ISqlSugarRepository<AssignmentDefineAggregateRoot> _assignmentDefineRepository;
|
||||
private readonly ILocalEventBus _localEventBus;
|
||||
|
||||
public AssignmentManager(IEnumerable<IAssignmentProvider> assignmentProviders,
|
||||
@@ -92,7 +92,7 @@ public class AssignmentManager : DomainService
|
||||
}
|
||||
|
||||
output.DistinctBy(x => x.Id);
|
||||
throw new NotImplementedException();
|
||||
return output;
|
||||
}
|
||||
|
||||
|
||||
@@ -134,6 +134,5 @@ public class AssignmentManager : DomainService
|
||||
{
|
||||
await _assignmentRepository._Db.Updateable(needUpdateEntities).ExecuteCommandAsync();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -1,10 +1,12 @@
|
||||
using Yi.Framework.Bbs.Domain.Shared.Enums;
|
||||
using Volo.Abp.DependencyInjection;
|
||||
using Yi.Framework.Bbs.Domain.Shared.Enums;
|
||||
|
||||
namespace Yi.Framework.Bbs.Domain.Managers.AssignmentProviders;
|
||||
|
||||
/// <summary>
|
||||
/// 每日任务提供者
|
||||
/// </summary>
|
||||
[ExposeServices(typeof(IAssignmentProvider))]
|
||||
public class DailyProvider : TimerProvider
|
||||
{
|
||||
protected override AssignmentTypeEnum AssignmentType => AssignmentTypeEnum.Daily;
|
||||
|
||||
@@ -5,11 +5,12 @@ namespace Yi.Framework.Bbs.Domain.Managers.AssignmentProviders;
|
||||
/// <summary>
|
||||
/// 新手任务提供者
|
||||
/// </summary>
|
||||
public class NoviceProvider : IAssignmentProvider
|
||||
public class NoviceProvider : IAssignmentProvider
|
||||
{
|
||||
public Task<List<AssignmentDefineAggregateRoot>> GetCanReceiveListAsync(AssignmentContext context)
|
||||
public async Task<List<AssignmentDefineAggregateRoot>> GetCanReceiveListAsync(AssignmentContext context)
|
||||
{
|
||||
//新手任务是要有前置依赖关系的,链表类型依赖
|
||||
throw new NotImplementedException();
|
||||
throw new NotImplementedException();
|
||||
|
||||
}
|
||||
}
|
||||
@@ -1,10 +1,12 @@
|
||||
using Yi.Framework.Bbs.Domain.Shared.Enums;
|
||||
using Volo.Abp.DependencyInjection;
|
||||
using Yi.Framework.Bbs.Domain.Shared.Enums;
|
||||
|
||||
namespace Yi.Framework.Bbs.Domain.Managers.AssignmentProviders;
|
||||
|
||||
/// <summary>
|
||||
/// 每周任务提供者
|
||||
/// </summary>
|
||||
[ExposeServices(typeof(IAssignmentProvider))]
|
||||
public class WeeklyProvider : TimerProvider
|
||||
{
|
||||
protected override AssignmentTypeEnum AssignmentType => AssignmentTypeEnum.Weekly;
|
||||
|
||||
33
Yi.Bbs.Vue3/src/apis/assignmentApi.js
Normal file
33
Yi.Bbs.Vue3/src/apis/assignmentApi.js
Normal file
@@ -0,0 +1,33 @@
|
||||
import request from "@/config/axios/service";
|
||||
|
||||
//接受任务
|
||||
export function acceptAssignment(id) {
|
||||
return request({
|
||||
url: `/assignment/accept/${id}`,
|
||||
method: "post"
|
||||
});
|
||||
}
|
||||
//领取奖励
|
||||
export function receiveAssignment(id) {
|
||||
return request({
|
||||
url: `/assignment/complete/${id}`,
|
||||
method: "post",
|
||||
});
|
||||
}
|
||||
|
||||
//查询能够领取的任务
|
||||
export function getCanReceiveAssignment() {
|
||||
return request({
|
||||
url: `/assignment/receive`,
|
||||
method: "get",
|
||||
});
|
||||
}
|
||||
|
||||
//查询已领取的任务
|
||||
export function getAssignmentList(data) {
|
||||
return request({
|
||||
url: `/assignment`,
|
||||
method: "get",
|
||||
params:data
|
||||
});
|
||||
}
|
||||
@@ -156,6 +156,14 @@ const router = createRouter({
|
||||
title: "银行",
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "assignment",
|
||||
path: "assignment",
|
||||
component: () => import("../views/assignment/Index.vue"),
|
||||
meta: {
|
||||
title: "任务",
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
|
||||
|
||||
18
Yi.Bbs.Vue3/src/views/assignment/Index.vue
Normal file
18
Yi.Bbs.Vue3/src/views/assignment/Index.vue
Normal file
@@ -0,0 +1,18 @@
|
||||
<script setup>
|
||||
import {getCanReceiveAssignment} from '@/apis/assignmentApi'
|
||||
import {onMounted, ref} from "vue";
|
||||
|
||||
const canReceiveAssignmentList=ref([]);
|
||||
onMounted( async ()=>{
|
||||
const {data:canReceiveAssignmentListData}= await getCanReceiveAssignment();
|
||||
canReceiveAssignmentList.value=canReceiveAssignmentListData;
|
||||
|
||||
});
|
||||
</script>
|
||||
|
||||
<template>
|
||||
|
||||
<div>
|
||||
<div v-for="item in canReceiveAssignmentList">{{item}}</div>
|
||||
</div>
|
||||
</template>
|
||||
Reference in New Issue
Block a user