Skip to content
Merged

Dev #28

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
package com.codingapi.example.controller;

import com.codingapi.example.entity.User;
import com.codingapi.example.repository.UserRepository;
import com.codingapi.example.service.UserService;
import com.codingapi.springboot.framework.dto.request.IdRequest;
import com.codingapi.springboot.framework.dto.request.SearchRequest;
import com.codingapi.springboot.framework.dto.response.MultiResponse;
import com.codingapi.springboot.framework.dto.response.Response;
import lombok.AllArgsConstructor;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/api/user")
@AllArgsConstructor
public class UserController {

private final UserService userService;

private final UserRepository userRepository;

@GetMapping("/list")
public MultiResponse<User> list(SearchRequest request){
return MultiResponse.of(userRepository.searchRequest(request));
}

@PostMapping("/save")
public Response save(@RequestBody User request){
userService.save(request);
return Response.buildSuccess();
}

@PostMapping("/remove")
public Response remove(@RequestBody IdRequest request){
userService.remove(request.getLongId());
return Response.buildSuccess();
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,11 @@ public static User admin(PasswordEncoder passwordEncoder){
}


public void encodePassword(PasswordEncoder passwordEncoder){
this.password = passwordEncoder.encode(password);
}


public List<String> getRoles() {
return List.of(ADMIN_ROLE);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package com.codingapi.example.service;

import com.codingapi.example.entity.User;
import com.codingapi.example.repository.UserRepository;
import lombok.AllArgsConstructor;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Service;

@Service
@AllArgsConstructor
public class UserService {

private final UserRepository userRepository;
private final PasswordEncoder passwordEncoder;

public void save(User user) {
user.encodePassword(passwordEncoder);
userRepository.save(user);
}

public void remove(long id) {
userRepository.deleteById(id);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,13 @@

import com.codingapi.flow.infra.entity.FlowRecordEntity;
import com.codingapi.springboot.fast.jpa.repository.FastRepository;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.jpa.repository.Query;

import java.util.List;

public interface FlowRecordEntityRepository extends FastRepository<FlowRecordEntity,Long> {
public interface FlowRecordEntityRepository extends FastRepository<FlowRecordEntity, Long> {

FlowRecordEntity getFlowRecordEntityById(long id);

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

List<FlowRecordEntity> findFlowRecordEntityByProcessIdAndRecordStateAndFlowStateAndHiddenAndRevoked(String processId,
int recordState,
int flowState,
boolean hidden,
boolean revoked);
int recordState,
int flowState,
boolean hidden,
boolean revoked);

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


@Query("from FlowRecordEntity r where r.currentOperatorId = ?1 and (r.recordState = 0 and r.flowState = 0 and r.hidden=false and r.revoked = false)")
Page<FlowRecordEntity> findTodoPage(long operatorId, PageRequest pageRequest);


@Query("from FlowRecordEntity r where r.currentOperatorId = ?1 and (r.recordState = 1 and r.hidden=false and r.revoked = false) ")
Page<FlowRecordEntity> findDonePage(long operatorId, PageRequest pageRequest);


}
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
package com.codingapi.flow.query.controller;

import com.codingapi.flow.infra.entity.FlowRecordEntity;
import com.codingapi.flow.infra.jpa.FlowRecordEntityRepository;
import com.codingapi.flow.operator.IFlowOperator;
import com.codingapi.springboot.framework.dto.request.SearchRequest;
import com.codingapi.springboot.framework.dto.response.MultiResponse;
import com.codingapi.springboot.framework.user.UserContext;
import lombok.AllArgsConstructor;
import org.springframework.data.domain.PageRequest;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/api/query/record")
@AllArgsConstructor
public class FlowRecordQueryController {

private final FlowRecordEntityRepository flowRecordEntityRepository;

/**
* 全部流程记录接口
*/
@GetMapping("/list")
public MultiResponse<FlowRecordEntity> list(SearchRequest request) {
return MultiResponse.of(flowRecordEntityRepository.searchRequest(request));
}


/**
* 我的待办记录
*/
@GetMapping("/todo")
public MultiResponse<FlowRecordEntity> todo(SearchRequest request) {
IFlowOperator current = (IFlowOperator) UserContext.getInstance().current();
PageRequest pageRequest = request.toPageRequest(FlowRecordEntity.class);
return MultiResponse.of(flowRecordEntityRepository.findTodoPage(current.getUserId(),pageRequest));
}


/**
* 我的已办记录
*/
@GetMapping("/done")
public MultiResponse<FlowRecordEntity> done(SearchRequest request) {
IFlowOperator current = (IFlowOperator) UserContext.getInstance().current();
PageRequest pageRequest = request.toPageRequest(FlowRecordEntity.class);
return MultiResponse.of(flowRecordEntityRepository.findDonePage(current.getUserId(),pageRequest));
}
}
13 changes: 13 additions & 0 deletions frontend/apps/app-pc/src/api/record.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
import { httpClient } from "."

export const list = (request: any) => {
return httpClient.page('/api/query/record/list', request, {}, {}, []);
}

export const todo = (request: any) => {
return httpClient.page('/api/query/record/todo', request, {}, {}, []);
}

export const done = (request: any) => {
return httpClient.page('/api/query/record/done', request, {}, {}, []);
}
13 changes: 13 additions & 0 deletions frontend/apps/app-pc/src/api/user.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
import { httpClient } from "."

export const list = (request: any) => {
return httpClient.page('/api/user/list', request, {}, {}, []);
}

export const remove = (id:string) => {
return httpClient.post('/api/user/remove',{id});
}

export const save = (body:any) => {
return httpClient.post('/api/user/save',body);
}
22 changes: 16 additions & 6 deletions frontend/apps/app-pc/src/config/routers.tsx
Original file line number Diff line number Diff line change
@@ -1,26 +1,36 @@
import { createHashRouter, type RouteObject } from "react-router";
import {createHashRouter} from "react-router";
import LoginPage from "@/pages/login";
import HomePage from "@/pages/home";
import DesignPage from "@/pages/desgin";
import TodoPage from "@/pages/todo";
import UserPage from "@/pages/user.tsx";


const routers:RouteObject[] = [
export const routers = [
{
path:'/login',
element:<LoginPage/>
element:<LoginPage/>,
name:'登陆界面',
},
{
path:'/user',
element:<UserPage/>,
name: '用户管理'
},
{
path:'/design',
element:<DesignPage/>
element:<DesignPage/>,
name: '流程设计'
},
{
path:'/todo',
element:<TodoPage/>
element:<TodoPage/>,
name: '待办中心'
},
{
path:'/',
element:<HomePage/>
element:<HomePage/>,
name: '系统主页'
}
]

Expand Down
28 changes: 14 additions & 14 deletions frontend/apps/app-pc/src/pages/home.tsx
Original file line number Diff line number Diff line change
@@ -1,28 +1,28 @@
import React from "react";
import { useNavigate } from "react-router";
import { Button, Flex, Space } from "antd";
import {routers} from "@/config/routers.tsx";

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

const navigate = useNavigate();

const routerButtons = routers.filter(item=>item.path!=='/');

return (
<div>
<Flex justify="center"><h1>Home Page</h1></Flex>
<Flex justify="center"><h1>Flow-Engine Home Page</h1></Flex>
<Space>
<Button
onClick={() => {
navigate("/login")
}}>login</Button>
<Button
onClick={() => {
navigate("/design")
}}>design</Button>
<Button
onClick={() => {
navigate('/todo');
}}
>todo</Button>
{routerButtons.map((item)=>{
return (
<Button
onClick={() => {
navigate(item.path)
}}>
{item.name}
</Button>
)
})}
</Space>
</div>
)
Expand Down
Loading