Skip to content

Commit f4a0d5b

Browse files
committed
feat: setup event link
1 parent 4ff2480 commit f4a0d5b

File tree

7 files changed

+264
-104
lines changed

7 files changed

+264
-104
lines changed

kaiyuanshe/controllers/common.go

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,17 @@ type CreateEventRequest struct {
1515
EventType string `json:"event_type" binding:"required"`
1616
Location string `json:"location"`
1717
Link string `json:"link"`
18-
RegistrationLink string `json:"registration_link"`
19-
RegistrationDeadline string `json:"registration_deadline"`
2018
StartTime string `json:"start_time" binding:"required"`
2119
EndTime string `json:"end_time" binding:"required"`
2220
CoverImg string `json:"cover_img" binding:"required"`
2321
Tags []string `json:"tags"`
2422
Twitter string `json:"twitter" binding:"required"`
2523
EventSetting uint `json:"event_setting" binding:"required"`
2624
BageLink string `json:"bage_link"`
25+
ApplyLink string `json:"apply_link"`
26+
TopicCollectionLink string `json:"topic_collection_link"`
27+
CoursewareSubmitLink string `json:"courseware_submit_link"`
28+
RegistrationLink string `json:"registration_link"`
2729
}
2830

2931
type QueryEventsResponse struct {
@@ -45,10 +47,12 @@ type UpdateEventRequest struct {
4547
CoverImg string `json:"cover_img" binding:"required"`
4648
Tags []string `json:"tags"`
4749
Twitter string `json:"twitter" binding:"required"`
48-
RegistrationLink string `json:"registration_link"`
49-
RegistrationDeadline string `json:"registration_deadline"`
5050
EventSetting uint `json:"event_setting" binging:"required"`
5151
BageLink string `json:"bage_link"`
52+
ApplyLink string `json:"apply_link"`
53+
TopicCollectionLink string `json:"topic_collection_link"`
54+
CoursewareSubmitLink string `json:"courseware_submit_link"`
55+
RegistrationLink string `json:"registration_link"`
5256
}
5357

5458
type UpdateEventPublishStatusRequest struct {

kaiyuanshe/controllers/event.go

Lines changed: 20 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -29,30 +29,23 @@ func CreateEvent(c *gin.Context) {
2929
}
3030

3131
var event = models.Event{
32-
Title: req.Title,
33-
Description: req.Desc,
34-
EventMode: req.EventMode,
35-
EventType: req.EventType,
36-
Location: req.Location,
37-
Link: req.Link,
38-
RegistrationLink: req.RegistrationLink,
39-
StartTime: startT,
40-
EndTime: endT,
41-
CoverImg: req.CoverImg,
42-
Tags: req.Tags,
43-
Twitter: req.Twitter,
44-
BageLink: req.BageLink,
45-
EventSetting: req.EventSetting,
46-
}
47-
48-
if req.RegistrationDeadline != "" {
49-
regisDeadline, err := utils.ParseTime(req.RegistrationDeadline)
50-
if err != nil {
51-
utils.ErrorResponse(c, http.StatusBadRequest, "invalid args", nil)
52-
return
53-
}
54-
event.RegistrationDeadline = &regisDeadline
55-
32+
Title: req.Title,
33+
Description: req.Desc,
34+
EventMode: req.EventMode,
35+
EventType: req.EventType,
36+
Location: req.Location,
37+
Link: req.Link,
38+
StartTime: startT,
39+
EndTime: endT,
40+
CoverImg: req.CoverImg,
41+
Tags: req.Tags,
42+
Twitter: req.Twitter,
43+
BageLink: req.BageLink,
44+
EventSetting: req.EventSetting,
45+
ApplyLink: req.ApplyLink,
46+
RegistrationLink: req.RegistrationLink,
47+
TopicCollectionLink: req.TopicCollectionLink,
48+
CoursewareSubmitLink: req.CoursewareSubmitLink,
5649
}
5750

5851
uid, ok := c.Get("uid")
@@ -220,17 +213,10 @@ func UpdateEvent(c *gin.Context) {
220213
event.Twitter = req.Twitter
221214
event.EventSetting = req.EventSetting
222215
event.BageLink = req.BageLink
223-
216+
event.ApplyLink = req.ApplyLink
224217
event.RegistrationLink = req.RegistrationLink
225-
226-
if req.RegistrationDeadline != "" {
227-
regisDeadline, err := utils.ParseTime(req.RegistrationDeadline)
228-
if err != nil {
229-
utils.ErrorResponse(c, http.StatusBadRequest, "Invalid arg", nil)
230-
return
231-
}
232-
event.RegistrationDeadline = &regisDeadline
233-
}
218+
event.TopicCollectionLink = req.TopicCollectionLink
219+
event.CoursewareSubmitLink = req.CoursewareSubmitLink
234220

235221
if err := event.Update(); err != nil {
236222
utils.ErrorResponse(c, http.StatusInternalServerError, "Failed to update event", nil)

kaiyuanshe/models/event.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ type Event struct {
1717
Location string `json:"location"`
1818
Link string `json:"link"`
1919
RegistrationDeadline *time.Time `json:"registration_deadline"`
20-
RegistrationLink string `json:"registration_link"`
2120
StartTime time.Time `json:"start_time"`
2221
EndTime time.Time `json:"end_time"`
2322
CoverImg string `json:"cover_img"`
@@ -36,6 +35,10 @@ type Event struct {
3635
Gifts []Gift `gorm:"foreignKey:EventID" json:"gifts"`
3736
BageLink string `json:"bage_link"`
3837
EventSetting uint `gorm:"default:1" json:"event_setting" ` // 1: 自行配置 2: 跳转到百格
38+
ApplyLink string `json:"apply_link"`
39+
TopicCollectionLink string `json:"topic_collection_link"`
40+
CoursewareSubmitLink string `json:"courseware_submit_link"`
41+
RegistrationLink string `json:"registration_link"`
3942
}
4043

4144
func (e *Event) Create() error {

src/pages/api/event.ts

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,10 @@ export interface CreateEventParams {
1515
twitter: string;
1616
event_setting: number;
1717
bage_link: string;
18-
registration_deadline?: string;
1918
registration_link?: string;
19+
apply_link?: string;
20+
topic_collection_link?: string;
21+
courseware_submit_link?: string;
2022
}
2123

2224
export interface UpdateEventParams {
@@ -33,8 +35,10 @@ export interface UpdateEventParams {
3335
twitter: string;
3436
event_setting: number;
3537
bage_link: string;
36-
registration_deadline?: string;
3738
registration_link?: string;
39+
apply_link?: string;
40+
topic_collection_link?: string;
41+
courseware_submit_link?: string;
3842
}
3943

4044
export interface GetEventsParams {
@@ -70,8 +74,11 @@ export interface Event {
7074
event_setting: number;
7175
bage_link: string;
7276
participants: number;
73-
registration_link: string;
74-
registration_deadline: string;
77+
registration_link?: string;
78+
apply_link?: string;
79+
topic_collection_link?: string;
80+
courseware_submit_link?: string;
81+
7582
}
7683

7784
// 分页返回数据结构
@@ -114,7 +121,9 @@ export const createEvent = async (
114121
event_setting: params.event_setting,
115122
bage_link: params.bage_link,
116123
registration_link: params.registration_link ?? '',
117-
registration_deadline: params.registration_deadline ?? '',
124+
apply_link: params.apply_link ?? '',
125+
topic_collection_link: params.topic_collection_link ?? '',
126+
courseware_submit_link: params.courseware_submit_link ?? '',
118127
};
119128

120129
const response = await apiRequest<EventResult>('/events', 'POST', body);
@@ -209,8 +218,10 @@ export const updateEventDraft = async (
209218
twitter: params.twitter ?? '',
210219
event_setting: params.event_setting,
211220
bage_link: params.bage_link,
212-
registration_deadline: params.registration_deadline,
213-
registration_link: params.registration_link,
221+
registration_link: params.registration_link ?? '',
222+
apply_link: params.apply_link ?? '',
223+
topic_collection_link: params.topic_collection_link ?? '',
224+
courseware_submit_link: params.courseware_submit_link ?? '',
214225
};
215226

216227
const response = await apiRequest<EventResult>(
@@ -256,8 +267,10 @@ export const updateEvent = async (
256267
event_setting: params.event_setting,
257268
bage_link: params.bage_link,
258269
twitter: params.twitter ?? '',
259-
registration_deadline: params.registration_deadline,
260270
registration_link: params.registration_link,
271+
apply_link: params.apply_link ?? '',
272+
topic_collection_link: params.topic_collection_link ?? '',
273+
courseware_submit_link: params.courseware_submit_link ?? '',
261274
};
262275

263276
const response = await apiRequest<EventResult>(

src/pages/events/[id]/edit.tsx

Lines changed: 92 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,10 @@ export default function EditEventPage() {
135135
event_setting: number
136136
bage_link: string
137137
registration_link: string
138-
registration_deadline: string
138+
apply_link: string
139+
topic_collection_link: string
140+
courseware_submit_link: string
141+
139142
} | null>(null)
140143
const [loading, setLoading] = useState(true)
141144
const [eventSetting, setEventSetting] = useState<number>()
@@ -160,6 +163,9 @@ export default function EditEventPage() {
160163
)
161164

162165
const handleSubmit = async (values: {
166+
coursewareLink: string
167+
topicLink: string
168+
applyLink: string
163169
title: string
164170
eventSetting: number
165171
bageLink: string
@@ -193,9 +199,9 @@ export default function EditEventPage() {
193199
event_setting: values.eventSetting,
194200
bage_link: values.bageLink,
195201
registration_link: values.registrationLink,
196-
registration_deadline: values.registrationDeadline
197-
? values.registrationDeadline.format('YYYY-MM-DD HH:mm:ss')
198-
: ''
202+
apply_link: values.applyLink,
203+
topic_collection_link: values.topicLink ?? '',
204+
courseware_submit_link: values.coursewareLink ?? '',
199205
}
200206

201207
const result = await updateEvent(String(event.ID), updateEventRequest)
@@ -254,10 +260,10 @@ export default function EditEventPage() {
254260
// 直接使用UTC时间,不进行时区转换
255261
const startTime = dayjs.utc(data?.start_time)
256262
const endTime = dayjs.utc(data?.end_time)
257-
263+
258264
console.log('原始 start_time:', data?.start_time, '-> 显示为:', startTime.format('YYYY-MM-DD HH:mm:ss'))
259265
console.log('原始 end_time:', data?.end_time, '-> 显示为:', endTime.format('YYYY-MM-DD HH:mm:ss'))
260-
266+
261267
form.setFieldsValue({
262268
title: data?.title,
263269
description: data?.description,
@@ -275,9 +281,9 @@ export default function EditEventPage() {
275281
eventSetting: data?.event_setting,
276282
bageLink: data?.bage_link,
277283
registrationLink: data?.registration_link,
278-
registrationDeadline: data?.registration_deadline
279-
? dayjs.utc(data?.registration_deadline)
280-
: null
284+
applyLink: data?.apply_link,
285+
topicLink: data?.topic_collection_link ?? '',
286+
coursewareLink: data?.courseware_submit_link ?? '',
281287
})
282288

283289
setPreviewUrl(data?.cover_img || '')
@@ -342,8 +348,8 @@ export default function EditEventPage() {
342348
<div className={styles.error}>
343349
<h2>活动不存在</h2>
344350
<p>抱歉,找不到您要查看的活动</p>
345-
<Link
346-
href={router.query.event_type === 'coscon' ? '/events/coscon' : '/events'}
351+
<Link
352+
href={router.query.event_type === 'coscon' ? '/events/coscon' : '/events'}
347353
className={styles.backButton}
348354
>
349355
{router.query.event_type === 'coscon' ? '返回中国开源年会' : '返回活动列表'}
@@ -355,8 +361,8 @@ export default function EditEventPage() {
355361
return (
356362
<div className={`${styles.container} nav-t-top`}>
357363
<div className={styles.header}>
358-
<Link
359-
href={router.query.event_type === 'coscon' ? '/events/coscon' : '/events'}
364+
<Link
365+
href={router.query.event_type === 'coscon' ? '/events/coscon' : '/events'}
360366
className={styles.backButton}
361367
>
362368
<ArrowLeft className={styles.backIcon} />
@@ -368,10 +374,10 @@ export default function EditEventPage() {
368374
layout="vertical"
369375
onFinish={handleSubmit}
370376
className={styles.form}
371-
// initialValues={{
372-
// eventMode: '线上活动',
373-
// publishImmediately: true,
374-
// }}
377+
// initialValues={{
378+
// eventMode: '线上活动',
379+
// publishImmediately: true,
380+
// }}
375381
>
376382
<div className={styles.formGrid}>
377383
{/* 左侧表单 */}
@@ -571,6 +577,75 @@ export default function EditEventPage() {
571577
</Form.Item>
572578
</Card>
573579

580+
<Card className={styles.section}>
581+
<h2 className={styles.sectionTitle}>
582+
<Users className={styles.sectionIcon} />
583+
其他设置
584+
</h2>
585+
586+
<Form.Item
587+
label="志愿者/讲师报名注册链接"
588+
name="applyLink"
589+
rules={[
590+
{
591+
type: 'url',
592+
message: '请输入有效的链接地址'
593+
}
594+
]}
595+
>
596+
<Input
597+
placeholder="请输入链接"
598+
className={styles.input}
599+
/>
600+
</Form.Item>
601+
<Form.Item
602+
label="议题征集链接"
603+
name="topicLink"
604+
rules={[
605+
{
606+
type: 'url',
607+
message: '请输入有效的链接地址'
608+
}
609+
]}
610+
>
611+
<Input
612+
placeholder="请输入链接"
613+
className={styles.input}
614+
/>
615+
</Form.Item>
616+
<Form.Item
617+
label="议题课件提交链接"
618+
name="coursewareLink"
619+
rules={[
620+
{
621+
type: 'url',
622+
message: '请输入有效的链接地址'
623+
}
624+
]}
625+
>
626+
<Input
627+
placeholder="请输入链接"
628+
className={styles.input}
629+
/>
630+
</Form.Item>
631+
<Form.Item
632+
label="参会注册链接"
633+
name="registrationLink"
634+
rules={[
635+
{
636+
type: 'url',
637+
message: '请输入有效的链接地址'
638+
}
639+
]}
640+
>
641+
<Input
642+
placeholder="请输入链接"
643+
className={styles.input}
644+
/>
645+
</Form.Item>
646+
</Card>
647+
648+
574649
{/* 标签 */}
575650
<Card className={styles.section}>
576651
<h2 className={styles.sectionTitle}>

0 commit comments

Comments
 (0)