gushoubang 2 mesiacov pred
rodič
commit
f8da44a581

+ 5 - 0
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/common/Common.java

@@ -0,0 +1,5 @@
+package com.siwei.apply.common;
+
+public class Common {
+    public static String UserId = "userId"; // 用户ID
+}

+ 43 - 5
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/controller/ProjectController.java

@@ -1,16 +1,16 @@
 package com.siwei.apply.controller;
 
+import com.siwei.apply.domain.Project;
+import com.siwei.apply.domain.vo.ProjectFilterVo;
 import com.siwei.apply.domain.vo.ProjectVo;
 import com.siwei.apply.service.ProjectService;
 import com.siwei.common.core.domain.R;
 import com.siwei.common.core.web.controller.BaseController;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -22,7 +22,12 @@ public class ProjectController extends BaseController {
     @Autowired
     ProjectService projectService;
 
-
+    /**
+     * 添加项目
+     *
+     * @param projectVo
+     * @return
+     */
     @PostMapping("")
     public R<Map> AddProject(@RequestBody ProjectVo projectVo) {
         try {
@@ -34,4 +39,37 @@ public class ProjectController extends BaseController {
             return R.fail(e.getMessage());
         }
     }
+
+    /**
+     * 获取项目
+     *
+     * @param projectId
+     * @return
+     */
+    @GetMapping("/{projectId}")
+    public R<Map> GetProject(@PathVariable String projectId) {
+        try {
+            Map<String, Object> map = new HashMap<>();
+            Project project = projectService.getProject(projectId);
+            map.put("project", project);
+            return R.ok(map);
+        } catch (Exception e) {
+            return R.fail(e.getMessage());
+        }
+    }
+
+    /**
+     * 获取项目列表
+     *
+     * @return
+     */
+    @PostMapping("/list")
+    public R<Map> GetProjectList(@RequestBody ProjectFilterVo projectFilterVo) {
+        try {
+            Map<String, Object> projects = projectService.getProjectList(projectFilterVo);
+            return R.ok(projects);
+        } catch (Exception e) {
+            return R.fail(e.getMessage());
+        }
+    }
 }

+ 3 - 2
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/domain/Project.java

@@ -13,13 +13,14 @@ import java.util.UUID;
  * @date 2025-02-05
  */
 @Data
-public class Project extends BaseSridEntity {
+public class Project {
     private String id;
     private String name;
+    private String code;
     private String company;
     private Date createAt;
     private Date updateAt;
-    private int projectType;
+    private String projectType;
     private String creatorId;
 
     public void generateId() {

+ 40 - 0
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/domain/vo/ProjectFilterVo.java

@@ -0,0 +1,40 @@
+package com.siwei.apply.domain.vo;
+
+import lombok.Data;
+
+/**
+ * 项目过滤条件
+ */
+@Data
+public class ProjectFilterVo {
+    private String name;
+    private String code;
+    private String projectType;
+
+    // 分页参数
+    private Integer pageNum = 1; // 当前页码
+    private Integer pageSize = 10; // 每页条数
+
+    // ========== 计算属性(MyBatis 可直接调用 getOffset()) ==========
+    /**
+     * 计算偏移量(无需手动调用,MyBatis 会自动计算)
+     */
+    public Integer getOffset() {
+        return (pageNum - 1) * pageSize;
+    }
+
+    // ========== 参数校验方法 ==========
+    /**
+     * 校验分页参数(避免非法值)
+     */
+    public void validatePageParams() {
+        // 确保页码 >= 1
+        if (pageNum == null || pageNum < 1) {
+            pageNum = 1;
+        }
+        // 确保每页条数在 1~100 之间
+        if (pageSize == null || pageSize < 1 || pageSize > 100) {
+            pageSize = 10;
+        }
+    }
+}

+ 8 - 0
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/domain/vo/ProjectUpdateVo.java

@@ -0,0 +1,8 @@
+package com.siwei.apply.domain.vo;
+
+import lombok.Data;
+
+@Data
+public class ProjectUpdateVo extends ProjectVo {
+    private String id;
+}

+ 2 - 1
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/domain/vo/ProjectVo.java

@@ -5,6 +5,7 @@ import lombok.Data;
 @Data
 public class ProjectVo {
     private String name;
+    private String code;
     private String company;
-    private int projectType;
+    private String projectType;
 }

+ 31 - 0
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/mapper/ProjectMapper.java

@@ -1,8 +1,12 @@
 package com.siwei.apply.mapper;
 
 import com.siwei.apply.domain.Project;
+import com.siwei.apply.domain.vo.ProjectFilterVo;
+import com.siwei.apply.domain.vo.ProjectUpdateVo;
 import org.apache.ibatis.annotations.Mapper;
 
+import java.util.List;
+
 @Mapper
 public interface ProjectMapper {
     /**
@@ -16,4 +20,31 @@ public interface ProjectMapper {
      * 获取项目
      */
     Project getProject(String projectId);
+
+    /**
+     * 获取项目列表
+     */
+    List<Project> getProjectList(ProjectFilterVo projectFilterVo);
+
+    /**
+     * 获取项目总数
+     *
+     * @param projectFilterVo
+     * @return
+     */
+    Integer getProjectCount(ProjectFilterVo projectFilterVo);
+
+    /**
+     * 更新项目
+     *
+     * @param projectUpdateVo
+     */
+    void updateProject(ProjectUpdateVo projectUpdateVo);
+
+    /**
+     * 删除项目
+     *
+     * @param projectId
+     */
+    void deleteProject(String projectId);
 }

+ 41 - 0
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/service/ProjectService.java

@@ -1,14 +1,55 @@
 package com.siwei.apply.service;
 
 import com.siwei.apply.domain.Project;
+import com.siwei.apply.domain.vo.ProjectFilterVo;
+import com.siwei.apply.domain.vo.ProjectUpdateVo;
 import com.siwei.apply.domain.vo.ProjectVo;
 
+import java.util.List;
+import java.util.Map;
+
 /**
  * 项目服务接口
  */
 public interface ProjectService {
+    /**
+     * 添加项目
+     *
+     * @param projectVo
+     * @return 项目ID
+     */
     String addProject(ProjectVo projectVo);
 
+    /**
+     * 获取项目
+     *
+     * @param projectId
+     * @return 项目对象
+     */
     Project getProject(String projectId);
 
+    /**
+     * 获取项目列表
+     *
+     * @param projectFilterVo
+     * @return 项目列表
+     */
+    Map<String, Object> getProjectList(ProjectFilterVo projectFilterVo);
+
+
+    /**
+     * 更新项目
+     *
+     * @param projectUpdateVo
+     * @return
+     */
+    String updateProject(ProjectUpdateVo projectUpdateVo);
+
+    /**
+     * 删除项目
+     *
+     * @param projectId
+     * @return
+     */
+    String deleteProject(String projectId);
 }

+ 33 - 1
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/service/impl/ProjectImpl.java

@@ -1,12 +1,20 @@
 package com.siwei.apply.service.impl;
 
 import com.siwei.apply.domain.Project;
+import com.siwei.apply.domain.vo.ProjectFilterVo;
+import com.siwei.apply.domain.vo.ProjectUpdateVo;
 import com.siwei.apply.domain.vo.ProjectVo;
 import com.siwei.apply.mapper.ProjectMapper;
 import com.siwei.apply.service.ProjectService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import static com.siwei.apply.common.Common.UserId;
+
 @Service
 public class ProjectImpl implements ProjectService {
     @Autowired
@@ -17,8 +25,10 @@ public class ProjectImpl implements ProjectService {
         Project project = new Project();
         project.generateId();
         project.setName(projectVo.getName());
+        project.setCode(projectVo.getCode());
         project.setCompany(projectVo.getCompany());
         project.setProjectType(projectVo.getProjectType());
+        project.setCreatorId(UserId);
         projectMapper.addProject(project);
 
         return project.getId();
@@ -26,6 +36,28 @@ public class ProjectImpl implements ProjectService {
 
     @Override
     public Project getProject(String projectId) {
-        return null;
+        return projectMapper.getProject(projectId);
+    }
+
+    @Override
+    public Map<String, Object> getProjectList(ProjectFilterVo projectFilterVo) {
+        List<Project> projects = projectMapper.getProjectList(projectFilterVo);
+        Integer count = projectMapper.getProjectCount(projectFilterVo);
+
+        Map<String, Object> map = new HashMap<>();
+        map.put("projects", projects);
+        map.put("count", count);
+        return map;
+    }
+
+
+    @Override
+    public String updateProject(ProjectUpdateVo projectUpdateVo) {
+        return "";
+    }
+
+    @Override
+    public String deleteProject(String projectId) {
+        return "";
     }
 }

+ 36 - 2
siwei-modules/siwei-apply/src/main/resources/mapper/ProjectMapper.xml

@@ -6,6 +6,7 @@
     <resultMap id="projectMap" type="com.siwei.apply.domain.Project">
         <id column="id" property="id"/>
         <result column="name" property="name"/>
+        <result column="code" property="code"/>
         <result column="company" property="company"/>
         <result column="created_at" property="createAt"/>
         <result column="updated_at" property="updateAt"/>
@@ -14,9 +15,9 @@
     </resultMap>
 
     <insert id="addProject" parameterType="com.siwei.apply.domain.Project">
-        INSERT INTO t_project (id, name, company,
+        INSERT INTO t_project (id, name, code, company,
                                created_at, updated_at, project_type, creator_id)
-        VALUES (#{id}, #{name}, #{company}, now(), now(), #{projectType},
+        VALUES (#{id}, #{name}, #{code}, #{company}, now(), now(), #{projectType},
                 #{creatorId})
     </insert>
 
@@ -25,4 +26,37 @@
         FROM t_project
         where t_project.id = #{projectId}
     </select>
+
+    <select id="getProjectList" parameterType="com.siwei.apply.domain.Project">
+        SELECT *
+        FROM t_project
+        <where>
+            <if test="name != null and name != ''">
+                AND name LIKE CONCAT('%', #{name}, '%')
+            </if>
+            <if test="code != null and code != ''">
+                AND code LIKE CONCAT('%', #{code}, '%')
+            </if>
+            <if test="projectType != null and projectType != ''">
+                AND project_type = #{projectType}
+            </if>
+        </where>
+        ORDER BY created_at DESC
+        LIMIT #{pageSize} offset #{offset}
+    </select>
+    <select id="getProjectCount" parameterType="com.siwei.apply.domain.Project">
+        SELECT COUNT(*)
+        FROM t_project
+        <where>
+            <if test="name != null and name != ''">
+                AND name LIKE CONCAT('%', #{name}, '%')
+            </if>
+            <if test="code != null and code != ''">
+                AND code LIKE CONCAT('%', #{code}, '%')
+            </if>
+            <if test="projectType != null and projectType != ''">
+                AND project_type = #{projectType}
+            </if>
+        </where>
+    </select>
 </mapper>