Skip to content

Commit 84fc9a3

Browse files
authored
Merge pull request #28 from codingapi/dev
Dev
2 parents 7e26b26 + 1a520e3 commit 84fc9a3

12 files changed

Lines changed: 494 additions & 28 deletions

File tree

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package com.codingapi.example.controller;
2+
3+
import com.codingapi.example.entity.User;
4+
import com.codingapi.example.repository.UserRepository;
5+
import com.codingapi.example.service.UserService;
6+
import com.codingapi.springboot.framework.dto.request.IdRequest;
7+
import com.codingapi.springboot.framework.dto.request.SearchRequest;
8+
import com.codingapi.springboot.framework.dto.response.MultiResponse;
9+
import com.codingapi.springboot.framework.dto.response.Response;
10+
import lombok.AllArgsConstructor;
11+
import org.springframework.web.bind.annotation.*;
12+
13+
@RestController
14+
@RequestMapping("/api/user")
15+
@AllArgsConstructor
16+
public class UserController {
17+
18+
private final UserService userService;
19+
20+
private final UserRepository userRepository;
21+
22+
@GetMapping("/list")
23+
public MultiResponse<User> list(SearchRequest request){
24+
return MultiResponse.of(userRepository.searchRequest(request));
25+
}
26+
27+
@PostMapping("/save")
28+
public Response save(@RequestBody User request){
29+
userService.save(request);
30+
return Response.buildSuccess();
31+
}
32+
33+
@PostMapping("/remove")
34+
public Response remove(@RequestBody IdRequest request){
35+
userService.remove(request.getLongId());
36+
return Response.buildSuccess();
37+
}
38+
39+
}

flow-engine-example/src/main/java/com/codingapi/example/entity/User.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,11 @@ public static User admin(PasswordEncoder passwordEncoder){
3939
}
4040

4141

42+
public void encodePassword(PasswordEncoder passwordEncoder){
43+
this.password = passwordEncoder.encode(password);
44+
}
45+
46+
4247
public List<String> getRoles() {
4348
return List.of(ADMIN_ROLE);
4449
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package com.codingapi.example.service;
2+
3+
import com.codingapi.example.entity.User;
4+
import com.codingapi.example.repository.UserRepository;
5+
import lombok.AllArgsConstructor;
6+
import org.springframework.security.crypto.password.PasswordEncoder;
7+
import org.springframework.stereotype.Service;
8+
9+
@Service
10+
@AllArgsConstructor
11+
public class UserService {
12+
13+
private final UserRepository userRepository;
14+
private final PasswordEncoder passwordEncoder;
15+
16+
public void save(User user) {
17+
user.encodePassword(passwordEncoder);
18+
userRepository.save(user);
19+
}
20+
21+
public void remove(long id) {
22+
userRepository.deleteById(id);
23+
}
24+
}

flow-engine-starter-infra/src/main/java/com/codingapi/flow/infra/jpa/FlowRecordEntityRepository.java

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,13 @@
22

33
import com.codingapi.flow.infra.entity.FlowRecordEntity;
44
import com.codingapi.springboot.fast.jpa.repository.FastRepository;
5+
import org.springframework.data.domain.Page;
6+
import org.springframework.data.domain.PageRequest;
7+
import org.springframework.data.jpa.repository.Query;
58

69
import java.util.List;
710

8-
public interface FlowRecordEntityRepository extends FastRepository<FlowRecordEntity,Long> {
11+
public interface FlowRecordEntityRepository extends FastRepository<FlowRecordEntity, Long> {
912

1013
FlowRecordEntity getFlowRecordEntityById(long id);
1114

@@ -14,11 +17,20 @@ public interface FlowRecordEntityRepository extends FastRepository<FlowRecordEnt
1417
List<FlowRecordEntity> findFlowRecordEntityByFromIdAndNodeIdAndRevoked(long fromId, String nodeId, boolean revoked);
1518

1619
List<FlowRecordEntity> findFlowRecordEntityByProcessIdAndRecordStateAndFlowStateAndHiddenAndRevoked(String processId,
17-
int recordState,
18-
int flowState,
19-
boolean hidden,
20-
boolean revoked);
20+
int recordState,
21+
int flowState,
22+
boolean hidden,
23+
boolean revoked);
2124

2225
List<FlowRecordEntity> findFlowRecordEntityByProcessIdAndFromIdGreaterThanEqual(String processId, long fromId);
2326

27+
28+
@Query("from FlowRecordEntity r where r.currentOperatorId = ?1 and (r.recordState = 0 and r.flowState = 0 and r.hidden=false and r.revoked = false)")
29+
Page<FlowRecordEntity> findTodoPage(long operatorId, PageRequest pageRequest);
30+
31+
32+
@Query("from FlowRecordEntity r where r.currentOperatorId = ?1 and (r.recordState = 1 and r.hidden=false and r.revoked = false) ")
33+
Page<FlowRecordEntity> findDonePage(long operatorId, PageRequest pageRequest);
34+
35+
2436
}
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
package com.codingapi.flow.query.controller;
2+
3+
import com.codingapi.flow.infra.entity.FlowRecordEntity;
4+
import com.codingapi.flow.infra.jpa.FlowRecordEntityRepository;
5+
import com.codingapi.flow.operator.IFlowOperator;
6+
import com.codingapi.springboot.framework.dto.request.SearchRequest;
7+
import com.codingapi.springboot.framework.dto.response.MultiResponse;
8+
import com.codingapi.springboot.framework.user.UserContext;
9+
import lombok.AllArgsConstructor;
10+
import org.springframework.data.domain.PageRequest;
11+
import org.springframework.web.bind.annotation.GetMapping;
12+
import org.springframework.web.bind.annotation.RequestMapping;
13+
import org.springframework.web.bind.annotation.RestController;
14+
15+
@RestController
16+
@RequestMapping("/api/query/record")
17+
@AllArgsConstructor
18+
public class FlowRecordQueryController {
19+
20+
private final FlowRecordEntityRepository flowRecordEntityRepository;
21+
22+
/**
23+
* 全部流程记录接口
24+
*/
25+
@GetMapping("/list")
26+
public MultiResponse<FlowRecordEntity> list(SearchRequest request) {
27+
return MultiResponse.of(flowRecordEntityRepository.searchRequest(request));
28+
}
29+
30+
31+
/**
32+
* 我的待办记录
33+
*/
34+
@GetMapping("/todo")
35+
public MultiResponse<FlowRecordEntity> todo(SearchRequest request) {
36+
IFlowOperator current = (IFlowOperator) UserContext.getInstance().current();
37+
PageRequest pageRequest = request.toPageRequest(FlowRecordEntity.class);
38+
return MultiResponse.of(flowRecordEntityRepository.findTodoPage(current.getUserId(),pageRequest));
39+
}
40+
41+
42+
/**
43+
* 我的已办记录
44+
*/
45+
@GetMapping("/done")
46+
public MultiResponse<FlowRecordEntity> done(SearchRequest request) {
47+
IFlowOperator current = (IFlowOperator) UserContext.getInstance().current();
48+
PageRequest pageRequest = request.toPageRequest(FlowRecordEntity.class);
49+
return MultiResponse.of(flowRecordEntityRepository.findDonePage(current.getUserId(),pageRequest));
50+
}
51+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import { httpClient } from "."
2+
3+
export const list = (request: any) => {
4+
return httpClient.page('/api/query/record/list', request, {}, {}, []);
5+
}
6+
7+
export const todo = (request: any) => {
8+
return httpClient.page('/api/query/record/todo', request, {}, {}, []);
9+
}
10+
11+
export const done = (request: any) => {
12+
return httpClient.page('/api/query/record/done', request, {}, {}, []);
13+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import { httpClient } from "."
2+
3+
export const list = (request: any) => {
4+
return httpClient.page('/api/user/list', request, {}, {}, []);
5+
}
6+
7+
export const remove = (id:string) => {
8+
return httpClient.post('/api/user/remove',{id});
9+
}
10+
11+
export const save = (body:any) => {
12+
return httpClient.post('/api/user/save',body);
13+
}

frontend/apps/app-pc/src/config/routers.tsx

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,36 @@
1-
import { createHashRouter, type RouteObject } from "react-router";
1+
import {createHashRouter} from "react-router";
22
import LoginPage from "@/pages/login";
33
import HomePage from "@/pages/home";
44
import DesignPage from "@/pages/desgin";
55
import TodoPage from "@/pages/todo";
6+
import UserPage from "@/pages/user.tsx";
67

78

8-
const routers:RouteObject[] = [
9+
export const routers = [
910
{
1011
path:'/login',
11-
element:<LoginPage/>
12+
element:<LoginPage/>,
13+
name:'登陆界面',
14+
},
15+
{
16+
path:'/user',
17+
element:<UserPage/>,
18+
name: '用户管理'
1219
},
1320
{
1421
path:'/design',
15-
element:<DesignPage/>
22+
element:<DesignPage/>,
23+
name: '流程设计'
1624
},
1725
{
1826
path:'/todo',
19-
element:<TodoPage/>
27+
element:<TodoPage/>,
28+
name: '待办中心'
2029
},
2130
{
2231
path:'/',
23-
element:<HomePage/>
32+
element:<HomePage/>,
33+
name: '系统主页'
2434
}
2535
]
2636

frontend/apps/app-pc/src/pages/home.tsx

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,28 @@
11
import React from "react";
22
import { useNavigate } from "react-router";
33
import { Button, Flex, Space } from "antd";
4+
import {routers} from "@/config/routers.tsx";
45

56
const HomePage: React.FC = () => {
67

78
const navigate = useNavigate();
89

10+
const routerButtons = routers.filter(item=>item.path!=='/');
11+
912
return (
1013
<div>
11-
<Flex justify="center"><h1>Home Page</h1></Flex>
14+
<Flex justify="center"><h1>Flow-Engine Home Page</h1></Flex>
1215
<Space>
13-
<Button
14-
onClick={() => {
15-
navigate("/login")
16-
}}>login</Button>
17-
<Button
18-
onClick={() => {
19-
navigate("/design")
20-
}}>design</Button>
21-
<Button
22-
onClick={() => {
23-
navigate('/todo');
24-
}}
25-
>todo</Button>
16+
{routerButtons.map((item)=>{
17+
return (
18+
<Button
19+
onClick={() => {
20+
navigate(item.path)
21+
}}>
22+
{item.name}
23+
</Button>
24+
)
25+
})}
2626
</Space>
2727
</div>
2828
)

0 commit comments

Comments
 (0)