diff --git a/src/main/java/com/ycwl/basic/controller/pc/SourceController.java b/src/main/java/com/ycwl/basic/controller/pc/SourceController.java
new file mode 100644
index 0000000..42d779b
--- /dev/null
+++ b/src/main/java/com/ycwl/basic/controller/pc/SourceController.java
@@ -0,0 +1,56 @@
+package com.ycwl.basic.controller.pc;
+
+import com.ycwl.basic.model.pc.source.entity.SourceEntity;
+import com.ycwl.basic.model.pc.source.req.SourceReqQuery;
+import com.ycwl.basic.service.pc.SourceService;
+import com.ycwl.basic.utils.ApiResponse;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * @Author:longbinbin
+ * @Date:2024/12/3 15:45
+ */
+@RestController
+@RequestMapping("/api/source/v1")
+@Api(tags = "视频源管理")
+public class SourceController {
+
+    @Autowired
+    private SourceService sourceService;
+
+    @ApiOperation("分页查询视频源")
+    @PostMapping("/page")
+    public ApiResponse pageQuery(@RequestBody SourceReqQuery sourceReqQuery) {
+        return sourceService.pageQuery(sourceReqQuery);
+    }
+    @ApiOperation("查询视频源列表")
+    @PostMapping("/list")
+    public ApiResponse list(@RequestBody SourceReqQuery sourceReqQuery) {
+        return sourceService.list(sourceReqQuery);
+    }
+    @ApiOperation("查询视频源详情")
+    @GetMapping("getDetail/{id}")
+    public ApiResponse getById(@PathVariable Long id) {
+        return sourceService.getById(id);
+    }
+    @ApiOperation("添加视频源")
+    @PostMapping("/add")
+    public ApiResponse add(@RequestBody SourceEntity source) {
+        return sourceService.add(source);
+    }
+    @ApiOperation("删除视频源")
+    @DeleteMapping("/delete/{id}")
+    public ApiResponse deleteById(@PathVariable Long id) {
+        return sourceService.deleteById(id);
+    }
+    @ApiOperation("修改视频源")
+    @PostMapping("/update")
+    public ApiResponse update(@RequestBody SourceEntity source) {
+        return sourceService.update(source);
+    }
+
+
+}
diff --git a/src/main/java/com/ycwl/basic/service/impl/pc/SourceServiceImpl.java b/src/main/java/com/ycwl/basic/service/impl/pc/SourceServiceImpl.java
new file mode 100644
index 0000000..f95d402
--- /dev/null
+++ b/src/main/java/com/ycwl/basic/service/impl/pc/SourceServiceImpl.java
@@ -0,0 +1,74 @@
+package com.ycwl.basic.service.impl.pc;
+
+import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
+import com.ycwl.basic.mapper.pc.SourceMapper;
+import com.ycwl.basic.model.pc.source.entity.SourceEntity;
+import com.ycwl.basic.model.pc.source.req.SourceReqQuery;
+import com.ycwl.basic.model.pc.source.resp.SourceRespVO;
+import com.ycwl.basic.service.pc.SourceService;
+import com.ycwl.basic.utils.ApiResponse;
+import com.ycwl.basic.utils.SnowFlakeUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * @Author:longbinbin
+ * @Date:2024/12/3 15:49
+ */
+@Service
+public class SourceServiceImpl implements SourceService {
+    @Autowired
+    private SourceMapper sourceMapper;
+
+    @Override
+    public ApiResponse<PageInfo<SourceRespVO>> pageQuery(SourceReqQuery sourceReqQuery) {
+        PageHelper.startPage(sourceReqQuery.getPageNum(), sourceReqQuery.getPageSize());
+        List<SourceRespVO> list = sourceMapper.list(sourceReqQuery);
+        PageInfo<SourceRespVO> pageInfo = new PageInfo<>(list);
+        return ApiResponse.success(pageInfo);
+    }
+
+    @Override
+    public ApiResponse<List<SourceRespVO>> list(SourceReqQuery sourceReqQuery) {
+        return ApiResponse.success(sourceMapper.list(sourceReqQuery));
+    }
+
+    @Override
+    public ApiResponse<SourceRespVO> getById(Long id) {
+        return ApiResponse.success(sourceMapper.getById(id));
+    }
+
+    @Override
+    public ApiResponse<Integer> add(SourceEntity source) {
+        source.setId(SnowFlakeUtil.getLongId());
+        int add = sourceMapper.add(source);
+        if (add > 0) {
+            return ApiResponse.success(add);
+        }else {
+            return ApiResponse.commonError("添加失败");
+        }
+    }
+
+    @Override
+    public ApiResponse<Integer> deleteById(Long id) {
+        int i = sourceMapper.deleteById(id);
+        if (i > 0) {
+            return ApiResponse.success(i);
+        }else {
+            return ApiResponse.commonError("删除失败");
+        }
+    }
+
+    @Override
+    public ApiResponse<Integer> update(SourceEntity source) {
+        int i = sourceMapper.update(source);
+        if (i > 0) {
+            return ApiResponse.success(i);
+        }else {
+            return ApiResponse.commonError("修改失败");
+        }
+    }
+}
diff --git a/src/main/java/com/ycwl/basic/service/pc/SourceService.java b/src/main/java/com/ycwl/basic/service/pc/SourceService.java
new file mode 100644
index 0000000..af2983a
--- /dev/null
+++ b/src/main/java/com/ycwl/basic/service/pc/SourceService.java
@@ -0,0 +1,23 @@
+package com.ycwl.basic.service.pc;
+
+import com.github.pagehelper.PageInfo;
+import com.ycwl.basic.model.pc.source.entity.SourceEntity;
+import com.ycwl.basic.model.pc.source.req.SourceReqQuery;
+import com.ycwl.basic.model.pc.source.resp.SourceRespVO;
+import com.ycwl.basic.utils.ApiResponse;
+
+import java.util.List;
+
+/**
+ * @Author:longbinbin
+ * @Date:2024/12/3 15:47
+ */
+public interface SourceService {
+    ApiResponse<PageInfo<SourceRespVO>> pageQuery(SourceReqQuery sourceReqQuery);
+    ApiResponse<List<SourceRespVO>> list(SourceReqQuery sourceReqQuery);
+    ApiResponse<SourceRespVO> getById(Long id);
+    ApiResponse<Integer> add(SourceEntity source);
+    ApiResponse<Integer> deleteById(Long id);
+    ApiResponse<Integer> update(SourceEntity source);
+
+}