├── flower ├── src │ ├── assets │ │ ├── 时钟.png │ │ ├── 注意.png │ │ ├── 404.png │ │ ├── logo.png │ │ ├── 喇叭花.png │ │ ├── 后台管理-后台管理.png │ │ └── globle.css │ ├── App.vue │ ├── views │ │ ├── AboutView.vue │ │ ├── 404.vue │ │ ├── Manage.vue │ │ ├── Loginlog.vue │ │ ├── Password.vue │ │ ├── Person.vue │ │ ├── Inventory.vue │ │ ├── Login.vue │ │ ├── Home copy.vue │ │ ├── Home.vue │ │ └── File.vue │ ├── main.js │ ├── store │ │ └── index.js │ ├── common │ │ └── date.js │ ├── utils │ │ └── request.js │ ├── components │ │ ├── Aside.vue │ │ ├── HelloWorld.vue │ │ └── Header.vue │ └── router │ │ └── index.js ├── public │ ├── favicon.ico │ └── index.html ├── babel.config.js ├── vue.config.js ├── .gitignore ├── README.md ├── jsconfig.json └── package.json ├── src ├── main │ ├── java │ │ └── com │ │ │ └── lm │ │ │ └── flowershop │ │ │ ├── common │ │ │ ├── RoleEnum.java │ │ │ ├── Constants.java │ │ │ └── Result.java │ │ │ ├── mapper │ │ │ ├── FileMapper.java │ │ │ ├── MenuMapper.java │ │ │ ├── DictMapper.java │ │ │ ├── UnitMapper.java │ │ │ ├── FosterMapper.java │ │ │ ├── RoleMapper.java │ │ │ ├── AdminloginMapper.java │ │ │ ├── SupplierMapper.java │ │ │ ├── BuyMapper.java │ │ │ ├── SortMapper.java │ │ │ ├── PutMapper.java │ │ │ ├── ProductMapper.java │ │ │ ├── CustomerMapper.java │ │ │ ├── OutMapper.java │ │ │ ├── SaleMapper.java │ │ │ ├── RoleMenuMapper.java │ │ │ └── ManagerMapper.java │ │ │ ├── controller │ │ │ ├── dto │ │ │ │ ├── UserPasswordDTO.java │ │ │ │ └── ManagerDTO.java │ │ │ ├── AdminloginController.java │ │ │ ├── FosterController.java │ │ │ ├── RoleController.java │ │ │ ├── SortController.java │ │ │ ├── UnitController.java │ │ │ ├── EchartsController.java │ │ │ ├── MenuController.java │ │ │ ├── PutController.java │ │ │ ├── OutController.java │ │ │ ├── BuyController.java │ │ │ ├── SaleController.java │ │ │ ├── ManagerController.java │ │ │ ├── FileController.java │ │ │ ├── CustomerController.java │ │ │ └── SupplierController.java │ │ │ ├── entity │ │ │ ├── RoleMenu.java │ │ │ ├── Dict.java │ │ │ ├── Files.java │ │ │ ├── Sort.java │ │ │ ├── Adminlogin.java │ │ │ ├── Unit.java │ │ │ ├── Role.java │ │ │ ├── Supplier.java │ │ │ ├── Product.java │ │ │ ├── Customer.java │ │ │ ├── Menu.java │ │ │ ├── Manager.java │ │ │ ├── Foster.java │ │ │ ├── Putstorage.java │ │ │ ├── Buy.java │ │ │ ├── Sale.java │ │ │ └── Outstorage.java │ │ │ ├── service │ │ │ ├── IMenuService.java │ │ │ ├── IUnitService.java │ │ │ ├── IRoleService.java │ │ │ ├── ISupplierService.java │ │ │ ├── ISortService.java │ │ │ ├── IAdminloginService.java │ │ │ ├── impl │ │ │ │ ├── AdminloginServiceImpl.java │ │ │ │ ├── ProductServiceImpl.java │ │ │ │ ├── SupplierServiceImpl.java │ │ │ │ ├── ForsterServiceImpl.java │ │ │ │ ├── BuyServiceImpl.java │ │ │ │ ├── SortServiceImpl.java │ │ │ │ ├── CustomerServiceImpl.java │ │ │ │ ├── SaleServiceImpl.java │ │ │ │ ├── PutServiceImpl.java │ │ │ │ ├── MenuServiceImpl.java │ │ │ │ ├── UnitServiceImpl.java │ │ │ │ ├── OutServiceImpl.java │ │ │ │ ├── RoleServiceImpl.java │ │ │ │ └── ManagerServiceImpl.java │ │ │ ├── IFosterService.java │ │ │ ├── IProductService.java │ │ │ ├── ICustomerService.java │ │ │ ├── IPutService.java │ │ │ ├── IBuyService.java │ │ │ ├── IOutService.java │ │ │ ├── ISaleService.java │ │ │ └── IManagerService.java │ │ │ ├── FlowershopApplication.java │ │ │ ├── exception │ │ │ ├── ServiceException.java │ │ │ └── GlobalExceptionHandler.java │ │ │ ├── utils │ │ │ ├── DateUtils.java │ │ │ └── TokenUtils.java │ │ │ └── config │ │ │ ├── MybatisPlusConfig.java │ │ │ ├── interceptorConfig.java │ │ │ ├── CorsConfig.java │ │ │ ├── swaggerConfig.java │ │ │ └── interceptor │ │ │ └── JwtInterceptor.java │ └── resources │ │ ├── application.yml │ │ └── mapper │ │ ├── Customer.xml │ │ ├── Product.xml │ │ ├── Foster.xml │ │ ├── Sort.xml │ │ ├── Manager.xml │ │ ├── Put.xml │ │ ├── Buy.xml │ │ ├── Sale.xml │ │ └── Out.xml └── test │ └── java │ └── com │ └── lm │ └── flowershop │ └── FlowershopApplicationTests.java ├── .gitignore ├── README.md └── pom.xml /flower/src/assets/时钟.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skrlis/Flowers/HEAD/flower/src/assets/时钟.png -------------------------------------------------------------------------------- /flower/src/assets/注意.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skrlis/Flowers/HEAD/flower/src/assets/注意.png -------------------------------------------------------------------------------- /flower/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skrlis/Flowers/HEAD/flower/public/favicon.ico -------------------------------------------------------------------------------- /flower/src/assets/404.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skrlis/Flowers/HEAD/flower/src/assets/404.png -------------------------------------------------------------------------------- /flower/src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skrlis/Flowers/HEAD/flower/src/assets/logo.png -------------------------------------------------------------------------------- /flower/src/assets/喇叭花.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skrlis/Flowers/HEAD/flower/src/assets/喇叭花.png -------------------------------------------------------------------------------- /flower/src/assets/后台管理-后台管理.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skrlis/Flowers/HEAD/flower/src/assets/后台管理-后台管理.png -------------------------------------------------------------------------------- /flower/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/cli-plugin-babel/preset' 4 | ] 5 | } 6 | -------------------------------------------------------------------------------- /flower/src/App.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | -------------------------------------------------------------------------------- /flower/src/views/AboutView.vue: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /flower/vue.config.js: -------------------------------------------------------------------------------- 1 | const { defineConfig } = require('@vue/cli-service') 2 | module.exports = defineConfig({ 3 | transpileDependencies: true 4 | }) 5 | -------------------------------------------------------------------------------- /flower/src/assets/globle.css: -------------------------------------------------------------------------------- 1 | *{ 2 | margin: 0; 3 | padding: 0; 4 | box-sizing: border-box; 5 | } 6 | .ml-5{ 7 | margin-left: 5px; 8 | } 9 | .mr-5{ 10 | margin-right: 5px; 11 | } 12 | .pd-10{ 13 | padding: 10px 0; 14 | } -------------------------------------------------------------------------------- /src/main/java/com/lm/flowershop/common/RoleEnum.java: -------------------------------------------------------------------------------- 1 | package com.lm.flowershop.common; 2 | 3 | /** 4 | * @author lm 5 | * @create 2022-03-27 13:49 6 | */ 7 | public enum RoleEnum { 8 | ROLE_ADMIN,ROLE_BUYER,ROLE_SALER; 9 | 10 | 11 | } 12 | -------------------------------------------------------------------------------- /flower/src/views/404.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /src/main/java/com/lm/flowershop/mapper/FileMapper.java: -------------------------------------------------------------------------------- 1 | package com.lm.flowershop.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.lm.flowershop.entity.Files; 5 | 6 | /** 7 | * @author lm 8 | * @create 2022-03-24 9:34 9 | */ 10 | public interface FileMapper extends BaseMapper { 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/com/lm/flowershop/mapper/MenuMapper.java: -------------------------------------------------------------------------------- 1 | package com.lm.flowershop.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.lm.flowershop.entity.Menu; 5 | 6 | /** 7 | * @author lm 8 | * @create 2022-03-26 15:27 9 | */ 10 | public interface MenuMapper extends BaseMapper { 11 | } 12 | -------------------------------------------------------------------------------- /src/test/java/com/lm/flowershop/FlowershopApplicationTests.java: -------------------------------------------------------------------------------- 1 | package com.lm.flowershop; 2 | 3 | import org.junit.jupiter.api.Test; 4 | import org.springframework.boot.test.context.SpringBootTest; 5 | 6 | @SpringBootTest 7 | class FlowershopApplicationTests { 8 | 9 | @Test 10 | void contextLoads() { 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /flower/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | /dist 4 | 5 | 6 | # local env files 7 | .env.local 8 | .env.*.local 9 | 10 | # Log files 11 | npm-debug.log* 12 | yarn-debug.log* 13 | yarn-error.log* 14 | pnpm-debug.log* 15 | 16 | # Editor directories and files 17 | .idea 18 | .vscode 19 | *.suo 20 | *.ntvs* 21 | *.njsproj 22 | *.sln 23 | *.sw? 24 | -------------------------------------------------------------------------------- /src/main/java/com/lm/flowershop/controller/dto/UserPasswordDTO.java: -------------------------------------------------------------------------------- 1 | package com.lm.flowershop.controller.dto; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * @author lm 7 | * @create 2022-04-18 17:35 8 | */ 9 | @Data 10 | public class UserPasswordDTO { 11 | private String adname; 12 | private String adpwd; 13 | private String newPassword; 14 | } 15 | -------------------------------------------------------------------------------- /flower/README.md: -------------------------------------------------------------------------------- 1 | # flower 2 | 3 | ## Project setup 4 | ``` 5 | npm install 6 | ``` 7 | 8 | ### Compiles and hot-reloads for development 9 | ``` 10 | npm run serve 11 | ``` 12 | 13 | ### Compiles and minifies for production 14 | ``` 15 | npm run build 16 | ``` 17 | 18 | ### Customize configuration 19 | See [Configuration Reference](https://cli.vuejs.org/config/). 20 | -------------------------------------------------------------------------------- /src/main/java/com/lm/flowershop/mapper/DictMapper.java: -------------------------------------------------------------------------------- 1 | package com.lm.flowershop.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.lm.flowershop.entity.Dict; 5 | import com.lm.flowershop.entity.Role; 6 | 7 | /** 8 | * @author lm 9 | * @create 2022-03-26 15:27 10 | */ 11 | public interface DictMapper extends BaseMapper { 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/com/lm/flowershop/mapper/UnitMapper.java: -------------------------------------------------------------------------------- 1 | package com.lm.flowershop.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.lm.flowershop.entity.Menu; 5 | import com.lm.flowershop.entity.Unit; 6 | 7 | /** 8 | * @author lm 9 | * @create 2022-03-26 15:27 10 | */ 11 | public interface UnitMapper extends BaseMapper { 12 | } 13 | -------------------------------------------------------------------------------- /flower/jsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "module": "esnext", 5 | "baseUrl": "./", 6 | "moduleResolution": "node", 7 | "paths": { 8 | "@/*": [ 9 | "src/*" 10 | ] 11 | }, 12 | "lib": [ 13 | "esnext", 14 | "dom", 15 | "dom.iterable", 16 | "scripthost" 17 | ] 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/com/lm/flowershop/entity/RoleMenu.java: -------------------------------------------------------------------------------- 1 | package com.lm.flowershop.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.TableName; 4 | import lombok.Data; 5 | 6 | /** 7 | * @author lm 8 | * @create 2022-03-27 10:24 9 | */ 10 | @TableName("sys_role_menu") 11 | @Data 12 | public class RoleMenu { 13 | private Integer roleId; 14 | private Integer menuId; 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/com/lm/flowershop/entity/Dict.java: -------------------------------------------------------------------------------- 1 | package com.lm.flowershop.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.TableName; 4 | import lombok.Data; 5 | 6 | /** 7 | * @author lm 8 | * @create 2022-03-27 8:46 9 | */ 10 | @TableName("sys_dict") 11 | @Data 12 | public class Dict { 13 | private String name; 14 | private String value; 15 | private String type; 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/com/lm/flowershop/service/IMenuService.java: -------------------------------------------------------------------------------- 1 | package com.lm.flowershop.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import com.lm.flowershop.entity.Menu; 5 | 6 | import java.util.List; 7 | 8 | /** 9 | * @author lm 10 | * @create 2022-03-26 15:24 11 | */ 12 | public interface IMenuService extends IService { 13 | List findMenus(String name); 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/com/lm/flowershop/FlowershopApplication.java: -------------------------------------------------------------------------------- 1 | package com.lm.flowershop; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | 6 | @SpringBootApplication 7 | 8 | public class FlowershopApplication { 9 | 10 | public static void main(String[] args) { SpringApplication.run(FlowershopApplication.class, args); } 11 | 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/com/lm/flowershop/common/Constants.java: -------------------------------------------------------------------------------- 1 | package com.lm.flowershop.common; 2 | 3 | /** 4 | * @author lm 5 | * @create 2022-03-22 10:43 6 | */ 7 | public interface Constants { 8 | String CODE_200 ="200";//成功 9 | String CODE_401="401";//权限不足 10 | String CODE_400="400";//参数错误 11 | String CODE_500="500";//系统错误 12 | String CODE_600="600";//其它业务异常 13 | 14 | String DICT_TYPE_ICON="icon"; 15 | 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/com/lm/flowershop/exception/ServiceException.java: -------------------------------------------------------------------------------- 1 | package com.lm.flowershop.exception; 2 | 3 | import lombok.Getter; 4 | 5 | /** 6 | * @author lm 7 | * @create 2022-03-22 11:09 8 | */ 9 | /* 10 | 自定义异常 11 | */ 12 | @Getter 13 | public class ServiceException extends RuntimeException { 14 | private String code; 15 | 16 | public ServiceException(String code,String msg){ 17 | super(msg); 18 | this.code=code; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/com/lm/flowershop/service/IUnitService.java: -------------------------------------------------------------------------------- 1 | package com.lm.flowershop.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import com.lm.flowershop.entity.Menu; 5 | import com.lm.flowershop.entity.Unit; 6 | 7 | import java.util.List; 8 | 9 | /** 10 | * @author lm 11 | * @create 2022-03-26 15:24 12 | */ 13 | public interface IUnitService extends IService { 14 | List findUnits(String unitname); 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/com/lm/flowershop/service/IRoleService.java: -------------------------------------------------------------------------------- 1 | package com.lm.flowershop.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import com.lm.flowershop.entity.Role; 5 | 6 | import java.util.List; 7 | 8 | /** 9 | * @author lm 10 | * @create 2022-03-26 15:24 11 | */ 12 | public interface IRoleService extends IService { 13 | void setRoleMenu(Integer roleId, List menuIds); 14 | 15 | List getRoleMenu(Integer roleId); 16 | } 17 | -------------------------------------------------------------------------------- /flower/src/main.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import App from './App.vue' 3 | import router from './router' 4 | import store from './store' 5 | import ElementUI from 'element-ui'; 6 | import 'element-ui/lib/theme-chalk/index.css'; 7 | import './assets/globle.css' 8 | import request from './utils/request'; 9 | 10 | 11 | Vue.config.productionTip = false 12 | 13 | 14 | Vue.use(ElementUI,{size:"small"}); 15 | 16 | Vue.prototype.request=request 17 | new Vue({ 18 | router, 19 | store, 20 | render: h => h(App) 21 | }).$mount('#app') 22 | -------------------------------------------------------------------------------- /src/main/java/com/lm/flowershop/service/ISupplierService.java: -------------------------------------------------------------------------------- 1 | package com.lm.flowershop.service; 2 | 3 | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 4 | import com.baomidou.mybatisplus.extension.service.IService; 5 | import com.lm.flowershop.entity.Product; 6 | import com.lm.flowershop.entity.Supplier; 7 | 8 | /** 9 | * @author lm 10 | * @create 2022-03-26 15:24 11 | */ 12 | public interface ISupplierService extends IService { 13 | 14 | Page findPage(Page page, String supName); 15 | } 16 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | HELP.md 2 | target/ 3 | !.mvn/wrapper/maven-wrapper.jar 4 | !**/src/main/**/target/ 5 | !**/src/test/**/target/ 6 | 7 | ### STS ### 8 | .apt_generated 9 | .classpath 10 | .factorypath 11 | .project 12 | .settings 13 | .springBeans 14 | .sts4-cache 15 | 16 | ### IntelliJ IDEA ### 17 | .idea 18 | *.iws 19 | *.iml 20 | *.ipr 21 | 22 | ### NetBeans ### 23 | /nbproject/private/ 24 | /nbbuild/ 25 | /dist/ 26 | /nbdist/ 27 | /.nb-gradle/ 28 | build/ 29 | !**/src/main/**/build/ 30 | !**/src/test/**/build/ 31 | 32 | ### VS Code ### 33 | .vscode/ 34 | -------------------------------------------------------------------------------- /src/main/java/com/lm/flowershop/mapper/FosterMapper.java: -------------------------------------------------------------------------------- 1 | package com.lm.flowershop.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 5 | import com.lm.flowershop.entity.Foster; 6 | 7 | /** 8 | * @author lm 9 | * @create 2022-03-26 15:27 10 | */ 11 | public interface FosterMapper extends BaseMapper { 12 | 13 | 14 | Page findPage(Page page, String phone, String fosName, String startTime, String fosOper, String fosStatus); 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/com/lm/flowershop/mapper/RoleMapper.java: -------------------------------------------------------------------------------- 1 | package com.lm.flowershop.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.lm.flowershop.entity.Role; 5 | import org.apache.ibatis.annotations.Param; 6 | import org.apache.ibatis.annotations.Select; 7 | 8 | /** 9 | * @author lm 10 | * @create 2022-03-26 15:27 11 | */ 12 | public interface RoleMapper extends BaseMapper { 13 | @Select("select id from sys_role where flag = #{flag}") 14 | Integer selectByFlag(@Param("flag") String flag); 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/com/lm/flowershop/service/ISortService.java: -------------------------------------------------------------------------------- 1 | package com.lm.flowershop.service; 2 | 3 | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 4 | import com.baomidou.mybatisplus.extension.service.IService; 5 | import com.lm.flowershop.entity.*; 6 | 7 | import java.util.List; 8 | 9 | /** 10 | * @author lm 11 | * @create 2022-03-26 15:24 12 | */ 13 | public interface ISortService extends IService { 14 | 15 | Page findPage(Page objectPage, String sortname); 16 | Page findPage1(Page objectPage); 17 | 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/com/lm/flowershop/mapper/AdminloginMapper.java: -------------------------------------------------------------------------------- 1 | package com.lm.flowershop.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 5 | import com.lm.flowershop.controller.dto.UserPasswordDTO; 6 | import com.lm.flowershop.entity.Adminlogin; 7 | import com.lm.flowershop.entity.Manager; 8 | import org.apache.ibatis.annotations.Update; 9 | 10 | /** 11 | * @author lm 12 | * @create 2022-03-17 16:12 13 | */ 14 | 15 | public interface AdminloginMapper extends BaseMapper { 16 | } -------------------------------------------------------------------------------- /src/main/java/com/lm/flowershop/mapper/SupplierMapper.java: -------------------------------------------------------------------------------- 1 | package com.lm.flowershop.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 5 | import com.lm.flowershop.entity.Product; 6 | import com.lm.flowershop.entity.Supplier; 7 | import org.apache.ibatis.annotations.Param; 8 | 9 | /** 10 | * @author lm 11 | * @create 2022-03-26 15:27 12 | */ 13 | public interface SupplierMapper extends BaseMapper { 14 | Page findPage(Page page, @Param("supName") String supName); 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/com/lm/flowershop/service/IAdminloginService.java: -------------------------------------------------------------------------------- 1 | package com.lm.flowershop.service; 2 | 3 | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 4 | import com.baomidou.mybatisplus.extension.service.IService; 5 | import com.lm.flowershop.controller.dto.ManagerDTO; 6 | import com.lm.flowershop.controller.dto.UserPasswordDTO; 7 | import com.lm.flowershop.entity.Adminlogin; 8 | import com.lm.flowershop.entity.Manager; 9 | 10 | /** 11 | * @author lm 12 | * @create 2022-03-21 18:24 13 | */ 14 | public interface IAdminloginService extends IService { 15 | 16 | } 17 | -------------------------------------------------------------------------------- /src/main/resources/application.yml: -------------------------------------------------------------------------------- 1 | server: 2 | port: 9090 3 | spring: 4 | datasource: 5 | driver-class-name: com.mysql.jdbc.Driver 6 | url: jdbc:mysql://127.0.0.1:3306/flowers_shop?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 7 | username: root 8 | password: root 9 | mybatis: 10 | mapper-locations: classpath:mapper/*.xml #扫描所有mybatis的xml文件 11 | mybatis-plus: 12 | configuration: 13 | log-impl: org.apache.ibatis.logging.stdout.StdOutImpl 14 | 15 | files: 16 | upload: 17 | path: D:/workspace_idea/files/ 18 | -------------------------------------------------------------------------------- /src/main/java/com/lm/flowershop/mapper/BuyMapper.java: -------------------------------------------------------------------------------- 1 | package com.lm.flowershop.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 5 | import com.lm.flowershop.entity.Buy; 6 | 7 | /** 8 | * @author lm 9 | * @create 2022-03-26 15:27 10 | */ 11 | public interface BuyMapper extends BaseMapper { 12 | Page findPage(Page page, String buyid, String buyApply,String buyer,String buyName, String buyStatus, String startTime, String endTime); 13 | 14 | Page findPage1(Page page); 15 | 16 | 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/com/lm/flowershop/utils/DateUtils.java: -------------------------------------------------------------------------------- 1 | package com.lm.flowershop.utils; 2 | 3 | import com.baomidou.mybatisplus.core.toolkit.StringUtils; 4 | 5 | import java.text.SimpleDateFormat; 6 | import java.util.Calendar; 7 | import java.util.Date; 8 | import java.util.GregorianCalendar; 9 | 10 | /** 11 | * @author lm 12 | * @create 2022-04-12 20:57 13 | */ 14 | public class DateUtils { 15 | public static String dateFormat(Date date, String pattern){ 16 | SimpleDateFormat sdf = new SimpleDateFormat(pattern); 17 | String str = sdf.format(date); 18 | return str; 19 | }} 20 | 21 | -------------------------------------------------------------------------------- /src/main/java/com/lm/flowershop/service/impl/AdminloginServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.lm.flowershop.service.impl; 2 | 3 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 4 | import com.lm.flowershop.entity.Adminlogin; 5 | import com.lm.flowershop.mapper.AdminloginMapper; 6 | import com.lm.flowershop.service.IAdminloginService; 7 | import org.springframework.stereotype.Service; 8 | 9 | /** 10 | * @author lm 11 | * @create 2022-03-21 18:22 12 | */ 13 | @Service 14 | public class AdminloginServiceImpl extends ServiceImpl implements IAdminloginService { 15 | 16 | 17 | } 18 | 19 | -------------------------------------------------------------------------------- /src/main/java/com/lm/flowershop/controller/dto/ManagerDTO.java: -------------------------------------------------------------------------------- 1 | package com.lm.flowershop.controller.dto; 2 | 3 | import com.lm.flowershop.entity.Menu; 4 | import lombok.Data; 5 | 6 | import java.util.Date; 7 | import java.util.List; 8 | 9 | /** 10 | * @author lm 11 | * @create 2022-03-21 18:01 12 | */ 13 | /*接收前端登录请求的参数*/ 14 | @Data 15 | public class ManagerDTO { 16 | private String adname; 17 | private String adpwd; 18 | private Date createTime; 19 | private String avatarUrl; 20 | private String nikename; 21 | private String token; 22 | private String role; 23 | private List menus; 24 | } 25 | -------------------------------------------------------------------------------- /src/main/java/com/lm/flowershop/mapper/SortMapper.java: -------------------------------------------------------------------------------- 1 | package com.lm.flowershop.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 5 | import com.lm.flowershop.entity.Sale; 6 | import com.lm.flowershop.entity.Sort; 7 | import org.apache.ibatis.annotations.Param; 8 | 9 | /** 10 | * @author lm 11 | * @create 2022-03-26 15:27 12 | */ 13 | public interface SortMapper extends BaseMapper { 14 | 15 | Page findPage(Page page, @Param("sortname") String sortname); 16 | 17 | Page findPage1(Page page); 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/com/lm/flowershop/service/IFosterService.java: -------------------------------------------------------------------------------- 1 | package com.lm.flowershop.service; 2 | 3 | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 4 | import com.baomidou.mybatisplus.extension.service.IService; 5 | import com.lm.flowershop.entity.Buy; 6 | import com.lm.flowershop.entity.Foster; 7 | import com.lm.flowershop.entity.Sale; 8 | 9 | /** 10 | * @author lm 11 | * @create 2022-03-26 15:24 12 | */ 13 | public interface IFosterService extends IService { 14 | 15 | Page findPage(Page page, String phone,String fosName,String startTime,String fosOper,String fosStatus); 16 | 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/com/lm/flowershop/service/IProductService.java: -------------------------------------------------------------------------------- 1 | package com.lm.flowershop.service; 2 | 3 | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 4 | import com.baomidou.mybatisplus.extension.service.IService; 5 | import com.lm.flowershop.entity.Product; 6 | import com.lm.flowershop.entity.Role; 7 | import com.lm.flowershop.entity.Unit; 8 | 9 | import java.util.List; 10 | 11 | /** 12 | * @author lm 13 | * @create 2022-03-26 15:24 14 | */ 15 | public interface IProductService extends IService { 16 | 17 | Page findPage(Page page, String name,String psort); 18 | 19 | 20 | 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/com/lm/flowershop/mapper/PutMapper.java: -------------------------------------------------------------------------------- 1 | package com.lm.flowershop.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 5 | import com.lm.flowershop.entity.Putstorage; 6 | import com.lm.flowershop.entity.Sale; 7 | 8 | /** 9 | * @author lm 10 | * @create 2022-03-26 15:27 11 | */ 12 | public interface PutMapper extends BaseMapper { 13 | Page findPage(Page page, String putId, String putOper, String startTime, String endTime); 14 | 15 | Double sumByToday(); 16 | 17 | public Integer totalput(); 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/com/lm/flowershop/service/ICustomerService.java: -------------------------------------------------------------------------------- 1 | package com.lm.flowershop.service; 2 | 3 | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 4 | import com.baomidou.mybatisplus.extension.service.IService; 5 | import com.lm.flowershop.entity.Customer; 6 | import com.lm.flowershop.entity.Product; 7 | import com.lm.flowershop.entity.Supplier; 8 | 9 | /** 10 | * @author lm 11 | * @create 2022-03-26 15:24 12 | */ 13 | public interface ICustomerService extends IService { 14 | Page findPage(Page page, String cusName); 15 | int nameValidate(); 16 | int saleValidate(); 17 | 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/com/lm/flowershop/service/IPutService.java: -------------------------------------------------------------------------------- 1 | package com.lm.flowershop.service; 2 | 3 | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 4 | import com.baomidou.mybatisplus.extension.service.IService; 5 | import com.lm.flowershop.entity.Putstorage; 6 | import com.lm.flowershop.entity.Sale; 7 | 8 | /** 9 | * @author lm 10 | * @create 2022-03-26 15:24 11 | */ 12 | public interface IPutService extends IService { 13 | 14 | Page findPage(Page page, String putId,String putOper, String startTime,String endTime); 15 | Double sumByToday(); 16 | int saleValidate(); 17 | 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/com/lm/flowershop/mapper/ProductMapper.java: -------------------------------------------------------------------------------- 1 | package com.lm.flowershop.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 5 | import com.lm.flowershop.entity.Product; 6 | import com.lm.flowershop.entity.Role; 7 | import org.apache.ibatis.annotations.Param; 8 | import org.apache.ibatis.annotations.Select; 9 | 10 | /** 11 | * @author lm 12 | * @create 2022-03-26 15:27 13 | */ 14 | public interface ProductMapper extends BaseMapper { 15 | Page findPage(Page page,@Param("name") String name,@Param("psort") String psort); 16 | } 17 | -------------------------------------------------------------------------------- /flower/src/store/index.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import Vuex from 'vuex' 3 | import router, { resetRouter } from "@/router" 4 | Vue.use(Vuex) 5 | 6 | export default new Vuex.Store({ 7 | state: { 8 | currentPathName: '' 9 | }, 10 | getters: { 11 | }, 12 | mutations: { 13 | setPath (state) { 14 | state.currentPathName = localStorage.getItem("currentPathName") 15 | }, 16 | logout(){ 17 | //清空缓存 18 | localStorage.removeItem("manager") 19 | localStorage.removeItem("menus") 20 | router.push("/login") 21 | 22 | //重置路由 23 | resetRouter() 24 | } 25 | }, 26 | actions: { 27 | }, 28 | modules: { 29 | } 30 | }) 31 | -------------------------------------------------------------------------------- /src/main/java/com/lm/flowershop/service/IBuyService.java: -------------------------------------------------------------------------------- 1 | package com.lm.flowershop.service; 2 | 3 | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 4 | import com.baomidou.mybatisplus.extension.service.IService; 5 | import com.lm.flowershop.entity.Buy; 6 | import com.lm.flowershop.entity.Sale; 7 | 8 | /** 9 | * @author lm 10 | * @create 2022-03-26 15:24 11 | */ 12 | public interface IBuyService extends IService { 13 | 14 | Page findPage(Page page, String buyid ,String buyApply,String buyer,String buyName,String buyStatus,String startTime,String endTime); 15 | Page findPage1(Page objectPage); 16 | 17 | 18 | 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/com/lm/flowershop/entity/Files.java: -------------------------------------------------------------------------------- 1 | package com.lm.flowershop.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.IdType; 4 | import com.baomidou.mybatisplus.annotation.TableId; 5 | import com.baomidou.mybatisplus.annotation.TableName; 6 | import lombok.Data; 7 | 8 | /** 9 | * @author lm 10 | * @create 2022-03-24 9:30 11 | */ 12 | @Data 13 | @TableName("sys_file") 14 | public class Files { 15 | @TableId(type = IdType.AUTO) 16 | private Integer id; 17 | private String name; 18 | private String type; 19 | private Long size; 20 | private String url; 21 | private String md5; 22 | private Boolean isDelete; 23 | private Boolean enable; 24 | 25 | } 26 | -------------------------------------------------------------------------------- /flower/public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | <%= htmlWebpackPlugin.options.title %> 11 | 12 | 13 | 14 | 15 | 19 |
20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /src/main/resources/mapper/Customer.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 11 | 17 | -------------------------------------------------------------------------------- /src/main/java/com/lm/flowershop/mapper/CustomerMapper.java: -------------------------------------------------------------------------------- 1 | package com.lm.flowershop.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 5 | import com.lm.flowershop.entity.Customer; 6 | import com.lm.flowershop.entity.Product; 7 | import com.lm.flowershop.entity.Supplier; 8 | import org.apache.ibatis.annotations.Param; 9 | 10 | /** 11 | * @author lm 12 | * @create 2022-03-26 15:27 13 | */ 14 | public interface CustomerMapper extends BaseMapper { 15 | Page findPage(Page page, @Param("cusName") String cusName); 16 | 17 | public Integer userNameValidate(); 18 | 19 | public Integer salerValidate(); 20 | } 21 | -------------------------------------------------------------------------------- /flower/src/common/date.js: -------------------------------------------------------------------------------- 1 | export function formatDate(date, fmt) { 2 | if (/(y+)/.test(fmt)) { 3 | fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length)); 4 | } 5 | let o = { 6 | 'M+': date.getMonth() + 1, 7 | 'd+': date.getDate(), 8 | 'h+': date.getHours(), 9 | 'm+': date.getMinutes(), 10 | 's+': date.getSeconds() 11 | }; 12 | for (let k in o) { 13 | if (new RegExp(`(${k})`).test(fmt)) { 14 | let str = o[k] + ''; 15 | fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? str : padLeftZero(str)); 16 | } 17 | } 18 | return fmt; 19 | } 20 | 21 | function padLeftZero(str) { 22 | return ('00' + str).substr(str.length); 23 | } 24 | 25 | -------------------------------------------------------------------------------- /flower/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "flower", 3 | "version": "0.1.0", 4 | "private": true, 5 | "scripts": { 6 | "serve": "vue-cli-service serve", 7 | "build": "vue-cli-service build" 8 | }, 9 | "dependencies": { 10 | "axios": "^0.26.1", 11 | "core-js": "^3.8.3", 12 | "echarts": "^5.3.1", 13 | "element-ui": "^2.15.6", 14 | "vue": "^2.6.14", 15 | "vue-router": "^3.5.1", 16 | "vuex": "^3.6.2" 17 | }, 18 | "devDependencies": { 19 | "@vue/cli-plugin-babel": "~5.0.0", 20 | "@vue/cli-plugin-router": "~5.0.0", 21 | "@vue/cli-plugin-vuex": "~5.0.0", 22 | "@vue/cli-service": "~5.0.0", 23 | "vue-template-compiler": "^2.6.14" 24 | }, 25 | "browserslist": [ 26 | "> 1%", 27 | "last 2 versions", 28 | "not dead" 29 | ] 30 | } 31 | -------------------------------------------------------------------------------- /src/main/java/com/lm/flowershop/service/IOutService.java: -------------------------------------------------------------------------------- 1 | package com.lm.flowershop.service; 2 | 3 | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 4 | import com.baomidou.mybatisplus.extension.service.IService; 5 | import com.lm.flowershop.entity.Outstorage; 6 | import com.lm.flowershop.entity.Putstorage; 7 | 8 | /** 9 | * @author lm 10 | * @create 2022-03-26 15:24 11 | */ 12 | public interface IOutService extends IService { 13 | 14 | Page findPage(Page page, String outId, String outOper, String outCustomer,String startTime, String endTime); 15 | Page findPage1(Page page,String startTime, String endTime); 16 | Double sumByToday(); 17 | Double sumByPaid(); 18 | 19 | int saleValidate(); 20 | 21 | 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/com/lm/flowershop/mapper/OutMapper.java: -------------------------------------------------------------------------------- 1 | package com.lm.flowershop.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 5 | import com.lm.flowershop.entity.Outstorage; 6 | import com.lm.flowershop.entity.Putstorage; 7 | 8 | /** 9 | * @author lm 10 | * @create 2022-03-26 15:27 11 | */ 12 | public interface OutMapper extends BaseMapper { 13 | Page findPage(Page page, String outId, String outOper, String outCustomer,String startTime, String endTime); 14 | 15 | Double sumByToday(); 16 | 17 | public Integer totalsale(); 18 | 19 | Double sumByPaid(); 20 | 21 | Page findPage1(Page page, String startTime, String endTime); 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/com/lm/flowershop/mapper/SaleMapper.java: -------------------------------------------------------------------------------- 1 | package com.lm.flowershop.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 5 | import com.lm.flowershop.entity.Buy; 6 | import com.lm.flowershop.entity.Manager; 7 | import com.lm.flowershop.entity.Sale; 8 | import org.apache.ibatis.annotations.Param; 9 | 10 | import java.util.Date; 11 | 12 | /** 13 | * @author lm 14 | * @create 2022-03-26 15:27 15 | */ 16 | public interface SaleMapper extends BaseMapper { 17 | Page findPage(Page page, String saleId); 18 | 19 | Page findPage1(Page page, String saleId,String saler,String reviewer ,String results ,String startTime,String endTime); 20 | 21 | Page findPage2(Page page); 22 | } -------------------------------------------------------------------------------- /src/main/java/com/lm/flowershop/entity/Sort.java: -------------------------------------------------------------------------------- 1 | package com.lm.flowershop.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.IdType; 4 | import com.baomidou.mybatisplus.annotation.TableField; 5 | import com.baomidou.mybatisplus.annotation.TableId; 6 | import com.baomidou.mybatisplus.annotation.TableName; 7 | import io.swagger.annotations.ApiModelProperty; 8 | import lombok.Data; 9 | 10 | import java.util.List; 11 | 12 | /** 13 | * @author lm 14 | * @create 2022-03-28 17:42 15 | */ 16 | @TableName("fl_sort") 17 | @Data 18 | public class Sort { 19 | 20 | @ApiModelProperty("类别编号") 21 | @TableId(value = "id",type = IdType.AUTO) 22 | private Integer id; 23 | 24 | @ApiModelProperty("类别名称") 25 | private String sortname; 26 | 27 | @TableField(exist = false) 28 | private List products; 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/com/lm/flowershop/exception/GlobalExceptionHandler.java: -------------------------------------------------------------------------------- 1 | package com.lm.flowershop.exception; 2 | 3 | import com.lm.flowershop.common.Result; 4 | import org.springframework.web.bind.annotation.ControllerAdvice; 5 | import org.springframework.web.bind.annotation.ExceptionHandler; 6 | import org.springframework.web.bind.annotation.ResponseBody; 7 | 8 | /** 9 | * @author lm 10 | * @create 2022-03-22 11:08 11 | */ 12 | 13 | @ControllerAdvice 14 | public class GlobalExceptionHandler { 15 | 16 | /* 17 | 如果抛出的是ServiceException,则调用该方法 18 | GlobalExceptionHandler 全局异常处理器 19 | @param se 业务异常 20 | @return Result 21 | */ 22 | @ExceptionHandler(ServiceException.class) 23 | @ResponseBody 24 | public Result handle(ServiceException se){ 25 | return Result.error(se.getCode(),se.getMessage()); 26 | 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/main/resources/mapper/Product.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 18 | -------------------------------------------------------------------------------- /src/main/java/com/lm/flowershop/mapper/RoleMenuMapper.java: -------------------------------------------------------------------------------- 1 | package com.lm.flowershop.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.lm.flowershop.entity.Role; 5 | import com.lm.flowershop.entity.RoleMenu; 6 | import org.apache.ibatis.annotations.Delete; 7 | import org.apache.ibatis.annotations.Param; 8 | import org.apache.ibatis.annotations.Select; 9 | 10 | import java.util.List; 11 | 12 | /** 13 | * @author lm 14 | * @create 2022-03-26 15:27 15 | */ 16 | public interface RoleMenuMapper extends BaseMapper { 17 | 18 | @Delete("delete from sys_role_menu where role_id = #{roleId}") 19 | int deleteByRoleId(@Param("roleId") Integer roleId); 20 | 21 | @Select("select menu_id from sys_role_menu where role_id = #{roleId}") 22 | List selectByRoleId(@Param("roleId")Integer roleId); 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/com/lm/flowershop/entity/Adminlogin.java: -------------------------------------------------------------------------------- 1 | package com.lm.flowershop.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.IdType; 4 | import com.baomidou.mybatisplus.annotation.TableId; 5 | import com.baomidou.mybatisplus.annotation.TableName; 6 | import io.swagger.annotations.ApiModel; 7 | import io.swagger.annotations.ApiModelProperty; 8 | import lombok.Data; 9 | 10 | import java.util.Date; 11 | 12 | /** 13 | * @author lm 14 | * @create 2022-04-21 15:38 15 | */ 16 | @Data 17 | @TableName(value = "fl_login") 18 | @ApiModel(value = "登录日志",description = "") 19 | public class Adminlogin { 20 | 21 | @ApiModelProperty("编号") 22 | @TableId(value = "id",type = IdType.AUTO) 23 | private Integer id; 24 | 25 | @ApiModelProperty("姓名") 26 | private String adname; 27 | 28 | @ApiModelProperty("登陆时间") 29 | private Date createTime; 30 | 31 | } 32 | -------------------------------------------------------------------------------- /src/main/java/com/lm/flowershop/service/ISaleService.java: -------------------------------------------------------------------------------- 1 | package com.lm.flowershop.service; 2 | 3 | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 4 | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 5 | import com.baomidou.mybatisplus.extension.service.IService; 6 | import com.lm.flowershop.entity.Buy; 7 | import com.lm.flowershop.entity.Manager; 8 | import com.lm.flowershop.entity.Putstorage; 9 | import com.lm.flowershop.entity.Sale; 10 | 11 | import java.util.Date; 12 | import java.util.List; 13 | 14 | /** 15 | * @author lm 16 | * @create 2022-03-26 15:24 17 | */ 18 | public interface ISaleService extends IService { 19 | 20 | Page findPage(Page page, String saleId); 21 | Page findPage1(Page page, String saleId,String saler, String reviewer,String results,String startTime,String endTime); 22 | Page findPage2(Page objectPage); 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/com/lm/flowershop/service/impl/ProductServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.lm.flowershop.service.impl; 2 | 3 | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 4 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 5 | import com.lm.flowershop.entity.Product; 6 | import com.lm.flowershop.mapper.ProductMapper; 7 | import com.lm.flowershop.service.IProductService; 8 | import org.springframework.stereotype.Service; 9 | import javax.annotation.Resource; 10 | 11 | /** 12 | * @author lm 13 | * @create 2022-03-26 15:23 14 | */ 15 | @Service 16 | public class ProductServiceImpl extends ServiceImpl implements IProductService { 17 | 18 | @Resource 19 | private ProductMapper productMapper; 20 | 21 | @Override 22 | public Page findPage(Page page, String name,String psort) { 23 | return productMapper.findPage(page,name,psort); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/com/lm/flowershop/common/Result.java: -------------------------------------------------------------------------------- 1 | package com.lm.flowershop.common; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | /** 8 | * @author lm 9 | * @create 2022-03-22 10:40 10 | */ 11 | /* 12 | 13 | 接口统一返回包装类 14 | */ 15 | 16 | @Data 17 | @NoArgsConstructor 18 | @AllArgsConstructor 19 | public class Result { 20 | private String code; 21 | private String msg; 22 | private Object data; 23 | 24 | public static Result success(){ 25 | 26 | return new Result(Constants.CODE_200,"",null); 27 | } 28 | public static Result success(Object data){ 29 | 30 | return new Result(Constants.CODE_200,"",data); 31 | } 32 | public static Result error(String code,String msg){ 33 | return new Result(code,msg,null); 34 | } 35 | public static Result error(){ 36 | return new Result(Constants.CODE_500,"系统错误",null); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /src/main/java/com/lm/flowershop/service/IManagerService.java: -------------------------------------------------------------------------------- 1 | package com.lm.flowershop.service; 2 | 3 | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 4 | import com.baomidou.mybatisplus.extension.service.IService; 5 | import com.lm.flowershop.controller.dto.ManagerDTO; 6 | import com.lm.flowershop.controller.dto.UserPasswordDTO; 7 | import com.lm.flowershop.entity.Manager; 8 | import com.lm.flowershop.entity.Menu; 9 | import com.lm.flowershop.entity.Sort; 10 | 11 | import java.util.List; 12 | 13 | /** 14 | * @author lm 15 | * @create 2022-03-21 18:24 16 | */ 17 | public interface IManagerService extends IService { 18 | ManagerDTO login(ManagerDTO managerDTO); 19 | void updatePassword(UserPasswordDTO userPasswordDTO); 20 | Page findPage(Page objectPage); 21 | Page findPage1(Page objectPage); 22 | Page findPage2(Page objectPage); 23 | 24 | 25 | 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/com/lm/flowershop/config/MybatisPlusConfig.java: -------------------------------------------------------------------------------- 1 | package com.lm.flowershop.config; 2 | 3 | import com.baomidou.mybatisplus.annotation.DbType; 4 | import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; 5 | import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; 6 | import org.mybatis.spring.annotation.MapperScan; 7 | import org.springframework.context.annotation.Bean; 8 | import org.springframework.context.annotation.Configuration; 9 | 10 | /** 11 | * @author lm 12 | * @create 2022-03-19 9:43 13 | */ 14 | @Configuration 15 | @MapperScan("com.lm.flowershop.mapper") 16 | public class MybatisPlusConfig { 17 | @Bean 18 | public MybatisPlusInterceptor mybatisPlusInterceptor() { 19 | MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); 20 | interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL)); 21 | return interceptor; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/com/lm/flowershop/service/impl/SupplierServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.lm.flowershop.service.impl; 2 | 3 | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 4 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 5 | import com.lm.flowershop.entity.Supplier; 6 | import com.lm.flowershop.mapper.SupplierMapper; 7 | import com.lm.flowershop.service.ISupplierService; 8 | import org.springframework.stereotype.Service; 9 | 10 | import javax.annotation.Resource; 11 | 12 | /** 13 | * @author lm 14 | * @create 2022-03-26 15:23 15 | */ 16 | @Service 17 | public class SupplierServiceImpl extends ServiceImpl implements ISupplierService { 18 | 19 | @Resource 20 | private SupplierMapper supplierMapper; 21 | 22 | 23 | @Override 24 | public Page findPage(Page page, String supName) { 25 | return supplierMapper.findPage(page,supName); 26 | 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/com/lm/flowershop/mapper/ManagerMapper.java: -------------------------------------------------------------------------------- 1 | package com.lm.flowershop.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 5 | import com.lm.flowershop.controller.dto.UserPasswordDTO; 6 | import com.lm.flowershop.entity.Manager; 7 | import com.lm.flowershop.entity.Sort; 8 | import org.apache.ibatis.annotations.Param; 9 | import org.apache.ibatis.annotations.Update; 10 | 11 | import java.util.List; 12 | 13 | /** 14 | * @author lm 15 | * @create 2022-03-17 16:12 16 | */ 17 | 18 | public interface ManagerMapper extends BaseMapper { 19 | Page findPage(Page page); 20 | Page findPage1(Page page); 21 | Page findPage2(Page page); 22 | 23 | @Update("update fl_admin set adpwd = #{newPassword} where adname = #{adname} and adpwd = #{adpwd}") 24 | int updatePassword(UserPasswordDTO userPasswordDTO); 25 | 26 | } -------------------------------------------------------------------------------- /src/main/java/com/lm/flowershop/service/impl/ForsterServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.lm.flowershop.service.impl; 2 | 3 | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 4 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 5 | import com.lm.flowershop.entity.Foster; 6 | import com.lm.flowershop.mapper.FosterMapper; 7 | import com.lm.flowershop.service.IFosterService; 8 | import org.springframework.stereotype.Service; 9 | 10 | import javax.annotation.Resource; 11 | 12 | /** 13 | * @author lm 14 | * @create 2022-04-17 17:39 15 | */ 16 | @Service 17 | public class ForsterServiceImpl extends ServiceImpl implements IFosterService { 18 | 19 | @Resource private FosterMapper fosterMapper; 20 | 21 | @Override 22 | public Page findPage(Page page, String phone, String fosName, String startTime, String fosOper, String fosStatus) { 23 | return fosterMapper.findPage(page,phone, fosName, startTime, fosOper, fosStatus); 24 | 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/com/lm/flowershop/entity/Unit.java: -------------------------------------------------------------------------------- 1 | package com.lm.flowershop.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.IdType; 4 | import com.baomidou.mybatisplus.annotation.TableField; 5 | import com.baomidou.mybatisplus.annotation.TableId; 6 | import com.baomidou.mybatisplus.annotation.TableName; 7 | import io.swagger.annotations.ApiModel; 8 | import io.swagger.annotations.ApiModelProperty; 9 | import lombok.Getter; 10 | import lombok.Setter; 11 | 12 | import java.util.List; 13 | 14 | /** 15 | * @author lm 16 | * @create 2022-04-02 16:11 17 | */ 18 | @Getter 19 | @Setter 20 | @TableName("fl_unit") 21 | @ApiModel(value = "数量单位", description = "") 22 | public class Unit { 23 | 24 | @ApiModelProperty("id") 25 | @TableId(value = "unitsid", type = IdType.AUTO) 26 | private Integer unitsid; 27 | 28 | @ApiModelProperty("名称") 29 | private String unitname; 30 | 31 | @ApiModelProperty("父级id") 32 | private Integer unitpid; 33 | 34 | @TableField(exist = false) 35 | private List children; 36 | } 37 | -------------------------------------------------------------------------------- /src/main/java/com/lm/flowershop/config/interceptorConfig.java: -------------------------------------------------------------------------------- 1 | package com.lm.flowershop.config; 2 | 3 | import com.auth0.jwt.JWT; 4 | import com.lm.flowershop.config.interceptor.JwtInterceptor; 5 | import org.springframework.context.annotation.Bean; 6 | import org.springframework.context.annotation.Configuration; 7 | import org.springframework.web.servlet.config.annotation.InterceptorRegistry; 8 | import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; 9 | 10 | /** 11 | * @author lm 12 | * @create 2022-03-23 16:07 13 | */ 14 | @Configuration 15 | public class interceptorConfig implements WebMvcConfigurer { 16 | @Override 17 | public void addInterceptors(InterceptorRegistry registry) { 18 | registry.addInterceptor(jwtInterceptor()) 19 | .addPathPatterns("/**")//拦截所有请求,通过判断token是否合法来决定是否需要登录 20 | .excludePathPatterns("/manager/login","/**/export","/**/import","/file/**"); 21 | } 22 | @Bean 23 | public JwtInterceptor jwtInterceptor(){ 24 | return new JwtInterceptor(); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/com/lm/flowershop/entity/Role.java: -------------------------------------------------------------------------------- 1 | package com.lm.flowershop.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.IdType; 4 | import com.baomidou.mybatisplus.annotation.TableId; 5 | import com.baomidou.mybatisplus.annotation.TableName; 6 | import io.swagger.annotations.ApiModel; 7 | import io.swagger.annotations.ApiModelProperty; 8 | import lombok.Getter; 9 | import lombok.Setter; 10 | 11 | import java.io.Serializable; 12 | 13 | /** 14 | * @author lm 15 | * @create 2022-03-26 15:17 16 | */ 17 | @Getter 18 | @Setter 19 | @TableName("sys_role") 20 | @ApiModel(value = "Role对象",description = "") 21 | public class Role implements Serializable { 22 | 23 | private static final long serialVersionUID=1L; 24 | 25 | @ApiModelProperty("id") 26 | @TableId(value = "id",type = IdType.AUTO) 27 | private Integer id; 28 | 29 | @ApiModelProperty("名称") 30 | private String name; 31 | 32 | @ApiModelProperty("描述") 33 | private String description; 34 | 35 | @ApiModelProperty("唯一标识") 36 | private String flag; 37 | 38 | } 39 | -------------------------------------------------------------------------------- /src/main/java/com/lm/flowershop/service/impl/BuyServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.lm.flowershop.service.impl; 2 | 3 | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 4 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 5 | import com.lm.flowershop.entity.Buy; 6 | import com.lm.flowershop.mapper.BuyMapper; 7 | import com.lm.flowershop.service.IBuyService; 8 | import org.springframework.stereotype.Service; 9 | 10 | import javax.annotation.Resource; 11 | 12 | /** 13 | * @author lm 14 | * @create 2022-03-26 15:23 15 | */ 16 | @Service 17 | public class BuyServiceImpl extends ServiceImpl implements IBuyService { 18 | 19 | @Resource 20 | private BuyMapper buyMapper; 21 | 22 | 23 | @Override 24 | public Page findPage(Page page, String buyid,String buyApply,String buyer, String buyName,String buyStatus,String startTime,String endTime) { 25 | return buyMapper.findPage(page,buyid, buyApply, buyer, buyName, buyStatus, startTime, endTime); 26 | 27 | } 28 | 29 | @Override 30 | public Page findPage1(Page page) { 31 | return buyMapper.findPage1(page); 32 | 33 | } 34 | 35 | 36 | } 37 | -------------------------------------------------------------------------------- /src/main/java/com/lm/flowershop/entity/Supplier.java: -------------------------------------------------------------------------------- 1 | package com.lm.flowershop.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.IdType; 4 | import com.baomidou.mybatisplus.annotation.TableId; 5 | import com.baomidou.mybatisplus.annotation.TableName; 6 | import io.swagger.annotations.ApiModel; 7 | import io.swagger.annotations.ApiModelProperty; 8 | import lombok.Data; 9 | import lombok.Getter; 10 | import lombok.Setter; 11 | import lombok.ToString; 12 | 13 | import java.util.Date; 14 | 15 | /** 16 | * @author lm 17 | * @create 2022-03-17 16:05 18 | */ 19 | @Data 20 | @Getter 21 | @Setter 22 | @ToString 23 | @TableName(value = "fl_supplier") 24 | @ApiModel(value = "供应商",description = "") 25 | public class Supplier { 26 | private static final long serialVersionUID=1L; 27 | 28 | @ApiModelProperty("编号") 29 | @TableId(value = "id",type = IdType.AUTO) 30 | private Integer id; 31 | 32 | @ApiModelProperty("名称") 33 | private String name; 34 | 35 | @ApiModelProperty("负责人") 36 | private String smanager; 37 | 38 | @ApiModelProperty("联系方式") 39 | private String supPhone; 40 | 41 | @ApiModelProperty("地址") 42 | private String supAddress; 43 | 44 | } 45 | -------------------------------------------------------------------------------- /src/main/resources/mapper/Foster.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 25 | -------------------------------------------------------------------------------- /src/main/java/com/lm/flowershop/entity/Product.java: -------------------------------------------------------------------------------- 1 | package com.lm.flowershop.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.IdType; 4 | import com.baomidou.mybatisplus.annotation.TableField; 5 | import com.baomidou.mybatisplus.annotation.TableId; 6 | import com.baomidou.mybatisplus.annotation.TableName; 7 | import io.swagger.annotations.ApiModelProperty; 8 | import lombok.Data; 9 | 10 | /** 11 | * @author lm 12 | * @create 2022-03-28 10:36 13 | */ 14 | @TableName("fl_product") 15 | @Data 16 | public class Product { 17 | 18 | @ApiModelProperty("花材编号") 19 | @TableId(value = "id",type = IdType.AUTO) 20 | private Integer id; 21 | 22 | @ApiModelProperty("花材名称") 23 | private String name; 24 | 25 | @ApiModelProperty("所属类别") 26 | private String psort; 27 | 28 | @ApiModelProperty("进价") 29 | private Double proCost; 30 | 31 | @ApiModelProperty("售价") 32 | private Double proPrice; 33 | 34 | @ApiModelProperty("库存") 35 | private Integer proStock; 36 | 37 | @ApiModelProperty("供应商") 38 | private String proFrom; 39 | 40 | @ApiModelProperty("销量") 41 | private Integer proSales; 42 | 43 | @TableField(exist = false) 44 | private String sort; 45 | } 46 | -------------------------------------------------------------------------------- /src/main/java/com/lm/flowershop/service/impl/SortServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.lm.flowershop.service.impl; 2 | 3 | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 4 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 5 | import com.lm.flowershop.entity.Product; 6 | import com.lm.flowershop.entity.Sale; 7 | import com.lm.flowershop.entity.Sort; 8 | import com.lm.flowershop.mapper.ProductMapper; 9 | import com.lm.flowershop.mapper.SortMapper; 10 | import com.lm.flowershop.service.IProductService; 11 | import com.lm.flowershop.service.ISortService; 12 | import org.springframework.stereotype.Service; 13 | 14 | import javax.annotation.Resource; 15 | 16 | /** 17 | * @author lm 18 | * @create 2022-03-26 15:23 19 | */ 20 | @Service 21 | public class SortServiceImpl extends ServiceImpl implements ISortService { 22 | 23 | @Resource 24 | private SortMapper sortMapper; 25 | 26 | @Override 27 | public Page findPage(Page page, String sortname) { 28 | 29 | return sortMapper.findPage(page,sortname); 30 | } 31 | 32 | @Override 33 | public Page findPage1(Page page) { 34 | return sortMapper.findPage1(page); 35 | 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /src/main/java/com/lm/flowershop/config/CorsConfig.java: -------------------------------------------------------------------------------- 1 | package com.lm.flowershop.config; 2 | 3 | /** 4 | * @author lm 5 | * @create 2022-03-18 16:18 6 | */ 7 | import org.springframework.context.annotation.Bean; 8 | import org.springframework.context.annotation.Configuration; 9 | import org.springframework.web.cors.CorsConfiguration; 10 | import org.springframework.web.cors.UrlBasedCorsConfigurationSource; 11 | import org.springframework.web.filter.CorsFilter; 12 | 13 | @Configuration 14 | public class CorsConfig { 15 | 16 | // 当前跨域请求最大有效时长。这里默认1天 17 | private static final long MAX_AGE = 24 * 60 * 60; 18 | 19 | @Bean 20 | public CorsFilter corsFilter() { 21 | UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); 22 | CorsConfiguration corsConfiguration = new CorsConfiguration(); 23 | corsConfiguration.addAllowedOrigin("*"); // 1 设置访问源地址 24 | corsConfiguration.addAllowedHeader("*"); // 2 设置访问源请求头 25 | corsConfiguration.addAllowedMethod("*"); // 3 设置访问源请求方法 26 | corsConfiguration.setMaxAge(MAX_AGE); 27 | source.registerCorsConfiguration("/**", corsConfiguration); // 4 对接口配置跨域设置 28 | return new CorsFilter(source); 29 | } 30 | } 31 | 32 | -------------------------------------------------------------------------------- /src/main/java/com/lm/flowershop/entity/Customer.java: -------------------------------------------------------------------------------- 1 | package com.lm.flowershop.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.IdType; 4 | import com.baomidou.mybatisplus.annotation.TableId; 5 | import com.baomidou.mybatisplus.annotation.TableName; 6 | import io.swagger.annotations.ApiModel; 7 | import io.swagger.annotations.ApiModelProperty; 8 | import lombok.Data; 9 | 10 | import java.util.Date; 11 | 12 | /** 13 | * @author lm 14 | * @create 2022-03-30 15:28 15 | */ 16 | @Data 17 | @TableName(value = "fl_customer") 18 | @ApiModel(value = "顾客",description = "") 19 | public class Customer { 20 | private static final long serialVersionUID=1L; 21 | 22 | @ApiModelProperty("编号") 23 | @TableId(value = "id",type = IdType.AUTO) 24 | private Integer id; 25 | 26 | @ApiModelProperty("名称") 27 | private String cusName; 28 | 29 | @ApiModelProperty("类别") 30 | private String cusSort; 31 | 32 | @ApiModelProperty("联系方式") 33 | private String cusPhone; 34 | 35 | @ApiModelProperty("地址") 36 | private String cusAddress; 37 | 38 | @ApiModelProperty("总花费") 39 | private String cusCost; 40 | 41 | @ApiModelProperty("总支付") 42 | private String cusPay; 43 | 44 | @ApiModelProperty("创建时间") 45 | private Date createTime; 46 | } 47 | -------------------------------------------------------------------------------- /src/main/resources/mapper/Sort.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 25 | 26 | 31 | 32 | -------------------------------------------------------------------------------- /src/main/resources/mapper/Manager.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | adname = #{adname}, 9 | 10 | 11 | adpwd = #{adpwd}, 12 | 13 | 14 | adisused = #{adisused} 15 | 16 | 17 | 18 | adid = #{adid} 19 | 20 | 21 | 22 | 28 | 29 | 35 | 36 | 42 | 43 | -------------------------------------------------------------------------------- /src/main/java/com/lm/flowershop/entity/Menu.java: -------------------------------------------------------------------------------- 1 | package com.lm.flowershop.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.IdType; 4 | import com.baomidou.mybatisplus.annotation.TableField; 5 | import com.baomidou.mybatisplus.annotation.TableId; 6 | import com.baomidou.mybatisplus.annotation.TableName; 7 | import io.swagger.annotations.ApiModel; 8 | import io.swagger.annotations.ApiModelProperty; 9 | import lombok.Getter; 10 | import lombok.Setter; 11 | 12 | import java.io.Serializable; 13 | import java.util.List; 14 | 15 | /** 16 | * @author lm 17 | * @create 2022-03-26 16:07 18 | */ 19 | @Getter 20 | @Setter 21 | @TableName("sys_menu") 22 | @ApiModel(value = "Menu对象", description = "") 23 | public class Menu implements Serializable { 24 | 25 | private static final long serialVersionUID = 1L; 26 | 27 | @ApiModelProperty("id") 28 | @TableId(value = "id", type = IdType.AUTO) 29 | private Integer id; 30 | 31 | @ApiModelProperty("名称") 32 | private String name; 33 | 34 | @ApiModelProperty("路径") 35 | private String path; 36 | 37 | @ApiModelProperty("图标") 38 | private String icon; 39 | 40 | @ApiModelProperty("描述") 41 | private String description; 42 | 43 | @ApiModelProperty("父级id") 44 | private Integer pid; 45 | 46 | @ApiModelProperty("页面路径") 47 | private String pagePath; 48 | 49 | @TableField(exist = false) 50 | private List children; 51 | 52 | } -------------------------------------------------------------------------------- /src/main/java/com/lm/flowershop/entity/Manager.java: -------------------------------------------------------------------------------- 1 | package com.lm.flowershop.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.IdType; 4 | import com.baomidou.mybatisplus.annotation.TableId; 5 | import com.baomidou.mybatisplus.annotation.TableName; 6 | import io.swagger.annotations.ApiModel; 7 | import io.swagger.annotations.ApiModelProperty; 8 | import lombok.Data; 9 | import lombok.Getter; 10 | import lombok.Setter; 11 | import lombok.ToString; 12 | 13 | import java.util.Date; 14 | 15 | /** 16 | * @author lm 17 | * @create 2022-03-17 16:05 18 | */ 19 | @Data 20 | @Getter 21 | @Setter 22 | @TableName(value = "fl_admin") 23 | @ApiModel(value = "Manager对象",description = "") 24 | @ToString 25 | public class Manager { 26 | private static final long serialVersionUID=1L; 27 | 28 | @ApiModelProperty("adid") 29 | @TableId(value = "adid",type = IdType.AUTO) 30 | private Integer adid; 31 | 32 | @ApiModelProperty("管理员名称") 33 | private String adname; 34 | 35 | @ApiModelProperty("管理员密码") 36 | private String adpwd; 37 | 38 | @ApiModelProperty("角色") 39 | private String role; 40 | 41 | @ApiModelProperty("创建时间") 42 | private Date createTime; 43 | 44 | @ApiModelProperty("头像") 45 | private String avatarUrl; 46 | 47 | @ApiModelProperty("昵称") 48 | private String nikename; 49 | 50 | private String phone; 51 | 52 | 53 | private Boolean isDelete; 54 | private Boolean enable; 55 | 56 | } 57 | -------------------------------------------------------------------------------- /src/main/resources/mapper/Put.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 24 | 27 | 30 | -------------------------------------------------------------------------------- /src/main/java/com/lm/flowershop/service/impl/CustomerServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.lm.flowershop.service.impl; 2 | 3 | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 4 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 5 | import com.lm.flowershop.entity.Customer; 6 | import com.lm.flowershop.mapper.CustomerMapper; 7 | import com.lm.flowershop.service.ICustomerService; 8 | import org.springframework.stereotype.Service; 9 | 10 | import javax.annotation.Resource; 11 | 12 | /** 13 | * @author lm 14 | * @create 2022-03-26 15:23 15 | */ 16 | @Service 17 | public class CustomerServiceImpl extends ServiceImpl implements ICustomerService { 18 | 19 | @Resource 20 | private CustomerMapper customerMapper; 21 | 22 | @Override 23 | public Page findPage(Page page, String cusName) { 24 | return customerMapper.findPage(page,cusName); 25 | 26 | } 27 | 28 | @Override 29 | public int nameValidate() { 30 | Integer Validate ; 31 | 32 | Validate = customerMapper.userNameValidate(); 33 | 34 | if(Validate == null) 35 | return 0; 36 | return Validate.intValue(); 37 | } 38 | 39 | @Override 40 | public int saleValidate() { 41 | Integer Validate ; 42 | 43 | Validate = customerMapper.salerValidate(); 44 | 45 | if(Validate == null) 46 | return 0; 47 | return Validate.intValue(); 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /src/main/java/com/lm/flowershop/service/impl/SaleServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.lm.flowershop.service.impl; 2 | 3 | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 4 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 5 | import com.lm.flowershop.entity.Buy; 6 | import com.lm.flowershop.entity.Manager; 7 | import com.lm.flowershop.entity.Sale; 8 | import com.lm.flowershop.mapper.BuyMapper; 9 | import com.lm.flowershop.mapper.SaleMapper; 10 | import com.lm.flowershop.service.IBuyService; 11 | import com.lm.flowershop.service.ISaleService; 12 | import org.springframework.stereotype.Service; 13 | 14 | import javax.annotation.Resource; 15 | import java.util.Date; 16 | 17 | /** 18 | * @author lm 19 | * @create 2022-03-26 15:23 20 | */ 21 | @Service 22 | public class SaleServiceImpl extends ServiceImpl implements ISaleService { 23 | 24 | @Resource 25 | private SaleMapper saleMapper; 26 | 27 | @Override 28 | public Page findPage(Page page, String saleId) { 29 | return saleMapper.findPage(page,saleId); 30 | 31 | } 32 | 33 | @Override 34 | public Page findPage1(Page page, String saleId, String saler,String reviewer,String results,String startTime,String endTime) { 35 | return saleMapper.findPage1(page,saleId,saler,reviewer,results,startTime,endTime); 36 | 37 | } 38 | 39 | @Override 40 | public Page findPage2(Page page) { 41 | return saleMapper.findPage2(page); 42 | } 43 | 44 | } 45 | -------------------------------------------------------------------------------- /flower/src/utils/request.js: -------------------------------------------------------------------------------- 1 | import axios from 'axios' 2 | import ElementUI from 'element-ui'; 3 | const request = axios.create({ 4 | baseURL: 'http://localhost:9090', // 注意!! 这里是全局统一加上了 '/api' 前缀,也就是说所有接口都会加上'/api'前缀在,页面里面写接口的时候就不要加 '/api'了,否则会出现2个'/api',类似 '/api/api/user'这样的报错,切记!!! 5 | timeout: 30000 6 | }) 7 | 8 | // request 拦截器 9 | // 可以自请求发送前对请求做一些处理 10 | // 比如统一加token,对请求参数统一加密 11 | request.interceptors.request.use(config => { 12 | config.headers['Content-Type'] = 'application/json;charset=utf-8'; 13 | let manager = localStorage.getItem("manager") ? JSON.parse(localStorage.getItem("manager")) : null 14 | if (manager) { 15 | config.headers['token'] = manager.token; // 设置请求头 16 | } 17 | return config 18 | }, error => { 19 | return Promise.reject(error) 20 | }); 21 | 22 | // response 拦截器 23 | // 可以在接口响应后统一处理结果 24 | request.interceptors.response.use( 25 | response => { 26 | let res = response.data; 27 | // 如果是返回的文件 28 | if (response.config.responseType === 'blob') { 29 | return res 30 | } 31 | // 兼容服务端返回的字符串数据 32 | if (typeof res === 'string') { 33 | res = res ? JSON.parse(res) : res 34 | } 35 | //当权限验证不通过时给出提示 36 | if (res.code === '401') { 37 | ElementUI.Message({ 38 | message: res.msg, 39 | type: 'error' 40 | }) 41 | 42 | } 43 | return res; 44 | }, 45 | error => { 46 | console.log('err' + error) // for debug 47 | return Promise.reject(error) 48 | } 49 | ) 50 | 51 | 52 | export default request 53 | 54 | -------------------------------------------------------------------------------- /src/main/java/com/lm/flowershop/service/impl/PutServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.lm.flowershop.service.impl; 2 | 3 | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 4 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 5 | import com.lm.flowershop.entity.Putstorage; 6 | import com.lm.flowershop.entity.Sale; 7 | import com.lm.flowershop.mapper.PutMapper; 8 | import com.lm.flowershop.mapper.SaleMapper; 9 | import com.lm.flowershop.service.IPutService; 10 | import com.lm.flowershop.service.ISaleService; 11 | import org.springframework.stereotype.Service; 12 | 13 | import javax.annotation.Resource; 14 | 15 | /** 16 | * @author lm 17 | * @create 2022-03-26 15:23 18 | */ 19 | @Service 20 | public class PutServiceImpl extends ServiceImpl implements IPutService { 21 | 22 | @Resource 23 | private PutMapper putMapper; 24 | 25 | @Override 26 | public Page findPage(Page page, String putId, String putOper, String startTime, String endTime) { 27 | return putMapper.findPage(page,putId,putOper,startTime,endTime); 28 | 29 | } 30 | @Override 31 | public Double sumByToday() { 32 | return putMapper.sumByToday(); 33 | } 34 | @Override 35 | public int saleValidate() { 36 | Integer Validate ; 37 | 38 | Validate = putMapper.totalput(); 39 | 40 | if(Validate == null) 41 | return 0; 42 | return Validate.intValue(); 43 | } 44 | // @Override 45 | // public Page findPage(Page page, String putId) { 46 | // return putMapper.findPage(page,putId); 47 | // 48 | // } 49 | } 50 | -------------------------------------------------------------------------------- /src/main/java/com/lm/flowershop/service/impl/MenuServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.lm.flowershop.service.impl; 2 | 3 | import cn.hutool.core.util.StrUtil; 4 | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 5 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 6 | import com.lm.flowershop.entity.Menu; 7 | import com.lm.flowershop.entity.Role; 8 | import com.lm.flowershop.mapper.MenuMapper; 9 | import com.lm.flowershop.mapper.RoleMapper; 10 | import com.lm.flowershop.service.IMenuService; 11 | import com.lm.flowershop.service.IRoleService; 12 | import org.springframework.stereotype.Service; 13 | 14 | import java.util.List; 15 | import java.util.stream.Collectors; 16 | 17 | /** 18 | * @author lm 19 | * @create 2022-03-26 15:23 20 | */ 21 | @Service 22 | public class MenuServiceImpl extends ServiceImpl implements IMenuService { 23 | @Override 24 | public List findMenus(String name) { 25 | QueryWrapper queryWrapper = new QueryWrapper<>(); 26 | if(StrUtil.isNotBlank(name)){ 27 | queryWrapper.like("name", name); 28 | queryWrapper.orderByDesc("id"); 29 | } 30 | 31 | //查询所有数据 32 | List list= list(queryWrapper); 33 | //找出pid为null的一级菜单 34 | List parentNodes= list.stream().filter(menu -> menu.getPid() == null).collect(Collectors.toList()); 35 | //找出一级菜单的子菜单 36 | for (Menu menu : parentNodes){ 37 | //筛选所有数据中pid=父级id的数据就是二级菜单 38 | menu.setChildren(list.stream().filter(menu1 -> menu.getId().equals(menu1.getPid())).collect(Collectors.toList())); 39 | } 40 | return parentNodes; 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /src/main/resources/mapper/Buy.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 31 | 37 | -------------------------------------------------------------------------------- /src/main/java/com/lm/flowershop/service/impl/UnitServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.lm.flowershop.service.impl; 2 | 3 | import cn.hutool.core.util.StrUtil; 4 | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 5 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 6 | import com.lm.flowershop.entity.Menu; 7 | import com.lm.flowershop.entity.Unit; 8 | import com.lm.flowershop.mapper.MenuMapper; 9 | import com.lm.flowershop.mapper.UnitMapper; 10 | import com.lm.flowershop.service.IMenuService; 11 | import com.lm.flowershop.service.IUnitService; 12 | import org.springframework.stereotype.Service; 13 | 14 | import java.util.List; 15 | import java.util.stream.Collectors; 16 | 17 | /** 18 | * @author lm 19 | * @create 2022-03-26 15:23 20 | */ 21 | @Service 22 | public class UnitServiceImpl extends ServiceImpl implements IUnitService { 23 | @Override 24 | public List findUnits(String unitname) { 25 | QueryWrapper queryWrapper = new QueryWrapper<>(); 26 | if(StrUtil.isNotBlank(unitname)){ 27 | queryWrapper.like("unitname", unitname); 28 | queryWrapper.orderByDesc("unitsid"); 29 | } 30 | 31 | //查询所有数据 32 | List list= list(queryWrapper); 33 | //找出pid为null的一级菜单 34 | List parentNodes= list.stream().filter(unit -> unit.getUnitpid() == null).collect(Collectors.toList()); 35 | //找出一级菜单的子菜单 36 | for (Unit unit : parentNodes){ 37 | //筛选所有数据中pid=父级id的数据就是二级菜单 38 | unit.setChildren(list.stream().filter(unit1 -> unit.getUnitsid().equals(unit1.getUnitpid())).collect(Collectors.toList())); 39 | } 40 | return parentNodes; 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /src/main/java/com/lm/flowershop/entity/Foster.java: -------------------------------------------------------------------------------- 1 | package com.lm.flowershop.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.IdType; 4 | import com.baomidou.mybatisplus.annotation.TableField; 5 | import com.baomidou.mybatisplus.annotation.TableId; 6 | import com.baomidou.mybatisplus.annotation.TableName; 7 | import io.swagger.annotations.ApiModel; 8 | import io.swagger.annotations.ApiModelProperty; 9 | import lombok.Data; 10 | 11 | import java.util.Date; 12 | 13 | /** 14 | * @author lm 15 | * @create 2022-04-17 17:02 16 | */ 17 | @Data 18 | @TableName(value = "fl_foster") 19 | @ApiModel(value = "寄养信息",description = "") 20 | public class Foster { 21 | 22 | @ApiModelProperty("编号") 23 | @TableId(value = "id",type = IdType.AUTO) 24 | private Integer id; 25 | 26 | @ApiModelProperty("寄养人") 27 | private String sender; 28 | 29 | @ApiModelProperty("联系方式") 30 | private String phone; 31 | 32 | @ApiModelProperty("寄养植物名称") 33 | private String fosName; 34 | 35 | @ApiModelProperty("品种") 36 | private String fosVariety; 37 | 38 | @ApiModelProperty("图片") 39 | private String fosUrl; 40 | 41 | @ApiModelProperty("养护备注") 42 | private String fosNote; 43 | 44 | @ApiModelProperty("寄养开始日期") 45 | private Date fosStarttime; 46 | 47 | @ApiModelProperty("寄养结束日期") 48 | private Date fosEndtime; 49 | 50 | @ApiModelProperty("单天价格") 51 | private Double fosPrice; 52 | 53 | @ApiModelProperty("总价") 54 | private Double fosTotal; 55 | 56 | @ApiModelProperty("支付状态") 57 | private String fosStatus; 58 | 59 | @ApiModelProperty("操作人") 60 | private String fosOper; 61 | 62 | @TableField(exist = false) 63 | private String startTime; 64 | 65 | } 66 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## 开源项目 2 | 毕设:基于SpringBoot+vue的在线花店后台管理系统 3 | 4 | ## 前端 5 | * Vue,Vuex,Vue Router 6 | * Axios 7 | * Element-ui 8 | * Echarts 9 | 10 | ## 后端 11 | * Java 12 | * SpringBoot 13 | * Mybatis 14 | * Mybatis-Plus 15 | * jdk8 16 | * maven 17 | * mysql 18 | 19 | ## 系统登录 20 | 1. 管理员: admin 123321 21 | 2. 采购员: 祖一一 33333 22 | 3. 销售员: 王贝贝 123456 23 | 24 | ## 内置功能 25 | 1. 用户登录:不同用户登录后进入对应身份的后台管理界面(本系统用户为管理员、采购员、销售员)。 26 | 2. 用户管理:用户是系统操作者,该功能主要完成系统用户配置。 27 | 3. 角色管理:管理员为角色分配菜单权限。 28 | 4. 菜单管理:对菜单信息进行新增、修改及删除。 29 | 5. 供应商管管理:对供应商信息进行新增、修改及删除。 30 | 6. 客户管理:对客户信息进行新增、修改及删除。 31 | 7. 采购入库管理:采购员录入采购申请单,并由管理员审核,审核通过后由采购员进行入库操作。 32 | 8. 入库统计:入库信息统计。 33 | 9. 销售出库管理:销售员录入出库通知单,并由管理员审核,审核通过后由销售员进行出库操作。 34 | 10. 出库统计:出库信息统计。 35 | 11. 寄养服务管理:录入寄养信息,价格结算。 36 | 12. 花材管理:对花材信息进行新增、修改及删除。 37 | 13. 花材类别管理:对花材类别信息进行新增、修改及删除。 38 | 14. 单位管理:对单位信息进行新增、修改及删除。 39 | 15. 库存盘点:盘点所有花材的库存,提醒采购员及时采购。 40 | 16. 登录日志:记录所有用户登录时间及用户名。 41 | 17. 数据分析:统计所有经营数据,包括各季度客户数量统计及热销花卉排行等。 42 | 43 | ## 演示图 44 | ![image](https://user-images.githubusercontent.com/97578747/171969374-52483702-1c88-4a56-aa0c-4e7a2306551e.png) 45 | ![image](https://user-images.githubusercontent.com/97578747/171969396-b28cfa96-20c5-400f-8c90-b6f2ce01685d.png) 46 | ![image](https://user-images.githubusercontent.com/97578747/171969410-7660dbc6-b03e-4a0b-95ec-34bdee60a562.png) 47 | ![image](https://user-images.githubusercontent.com/97578747/171969438-abac1450-0afe-43c7-a97f-454e6e77dc06.png) 48 | ![image](https://user-images.githubusercontent.com/97578747/171969457-93c50810-3f35-4939-b2a6-a6361b4217d0.png) 49 | ![image](https://user-images.githubusercontent.com/97578747/171969477-23a607e6-1a4e-4318-90f3-6e703c582b18.png) 50 | ![image](https://user-images.githubusercontent.com/97578747/171969487-43a5b9bd-30c6-4689-abb8-f39793340c0a.png) 51 | -------------------------------------------------------------------------------- /src/main/java/com/lm/flowershop/service/impl/OutServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.lm.flowershop.service.impl; 2 | 3 | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 4 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 5 | import com.lm.flowershop.entity.Outstorage; 6 | import com.lm.flowershop.entity.Putstorage; 7 | import com.lm.flowershop.mapper.OutMapper; 8 | import com.lm.flowershop.mapper.PutMapper; 9 | import com.lm.flowershop.service.IOutService; 10 | import com.lm.flowershop.service.IPutService; 11 | import org.springframework.stereotype.Service; 12 | 13 | import javax.annotation.Resource; 14 | 15 | /** 16 | * @author lm 17 | * @create 2022-03-26 15:23 18 | */ 19 | @Service 20 | public class OutServiceImpl extends ServiceImpl implements IOutService { 21 | 22 | @Resource 23 | private OutMapper outMapper; 24 | 25 | @Override 26 | public Page findPage(Page page, String outId, String outOper,String outCustomer, String startTime, String endTime) { 27 | return outMapper.findPage(page,outId,outOper,outCustomer,startTime,endTime); 28 | 29 | } 30 | 31 | @Override 32 | public Page findPage1(Page page, String startTime, String endTime) { 33 | return outMapper.findPage1(page,startTime,endTime); 34 | } 35 | 36 | @Override 37 | public Double sumByToday() { 38 | return outMapper.sumByToday(); 39 | } 40 | @Override 41 | public Double sumByPaid() { 42 | return outMapper.sumByPaid(); 43 | } 44 | @Override 45 | public int saleValidate() { 46 | Integer Validate ; 47 | 48 | Validate = outMapper.totalsale(); 49 | 50 | if(Validate == null) 51 | return 0; 52 | return Validate.intValue(); 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /src/main/java/com/lm/flowershop/controller/AdminloginController.java: -------------------------------------------------------------------------------- 1 | package com.lm.flowershop.controller; 2 | 3 | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 4 | import com.baomidou.mybatisplus.core.metadata.IPage; 5 | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 6 | import com.lm.flowershop.common.Result; 7 | import com.lm.flowershop.entity.Adminlogin; 8 | import com.lm.flowershop.entity.Buy; 9 | import com.lm.flowershop.entity.Manager; 10 | import com.lm.flowershop.service.IAdminloginService; 11 | import com.lm.flowershop.service.IBuyService; 12 | import org.springframework.web.bind.annotation.*; 13 | 14 | import javax.annotation.Resource; 15 | import java.util.List; 16 | 17 | /** 18 | * @author lm 19 | * @create 2022-03-17 16:29 20 | */ 21 | @RestController 22 | @RequestMapping("/adminlogin") 23 | public class AdminloginController { 24 | 25 | @Resource 26 | private IAdminloginService adminloginService; 27 | 28 | 29 | //新增和修改 30 | @PostMapping 31 | public Result save(@RequestBody Adminlogin adminlogin) { 32 | //新增或者更新 33 | return Result.success(adminloginService.saveOrUpdate(adminlogin)); 34 | 35 | } 36 | 37 | //查询所有数据 38 | @GetMapping("/") 39 | public Result findAll() { 40 | return Result.success(adminloginService.list()); 41 | } 42 | 43 | 44 | //分页查询——mybatis-plus的方式查询 45 | @GetMapping("/page") 46 | public Result findPage(@RequestParam Integer pageNum, 47 | @RequestParam Integer pageSize 48 | 49 | ) { 50 | IPage page = new Page<>(pageNum, pageSize); 51 | QueryWrapper queryWrapper = new QueryWrapper<>(); 52 | queryWrapper.orderByAsc("id"); 53 | return Result.success(adminloginService.page(page, queryWrapper)); 54 | } 55 | 56 | } 57 | -------------------------------------------------------------------------------- /src/main/java/com/lm/flowershop/entity/Putstorage.java: -------------------------------------------------------------------------------- 1 | package com.lm.flowershop.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.IdType; 4 | import com.baomidou.mybatisplus.annotation.TableField; 5 | import com.baomidou.mybatisplus.annotation.TableId; 6 | import com.baomidou.mybatisplus.annotation.TableName; 7 | import io.swagger.annotations.ApiModel; 8 | import io.swagger.annotations.ApiModelProperty; 9 | import lombok.Data; 10 | 11 | import java.util.Date; 12 | 13 | /** 14 | * @author lm 15 | * @create 2022-04-10 9:44 16 | */ 17 | @Data 18 | @TableName(value = "fl_put") 19 | @ApiModel(value = "入库",description = "") 20 | public class Putstorage { 21 | 22 | @ApiModelProperty("编号") 23 | @TableId(value = "id",type = IdType.AUTO) 24 | private Integer id; 25 | 26 | @ApiModelProperty("入库单号") 27 | private String putId; 28 | 29 | @ApiModelProperty("入库商品") 30 | private String putName; 31 | 32 | @ApiModelProperty("入库日期") 33 | private Date putDate; 34 | 35 | @ApiModelProperty("供应商") 36 | private String putSupplier; 37 | 38 | @ApiModelProperty("操作人") 39 | private String putOper; 40 | 41 | @ApiModelProperty("入库数量") 42 | private Integer putNum; 43 | 44 | @ApiModelProperty("数量单位") 45 | private String putUnit; 46 | 47 | @ApiModelProperty("单价") 48 | private Double putPrice; 49 | 50 | @ApiModelProperty("总价") 51 | private Double putTotal; 52 | 53 | @ApiModelProperty("状态") 54 | private String status; 55 | 56 | @TableField(exist = false) 57 | private String proname; 58 | 59 | @TableField(exist = false) 60 | private String prostock; 61 | 62 | @TableField(exist = false) 63 | private String startTime; 64 | 65 | @TableField(exist = false) 66 | private String endTime; 67 | 68 | @TableField(exist = false) 69 | private Double sumByToday; 70 | } 71 | 72 | -------------------------------------------------------------------------------- /src/main/java/com/lm/flowershop/entity/Buy.java: -------------------------------------------------------------------------------- 1 | package com.lm.flowershop.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.IdType; 4 | import com.baomidou.mybatisplus.annotation.TableField; 5 | import com.baomidou.mybatisplus.annotation.TableId; 6 | import com.baomidou.mybatisplus.annotation.TableName; 7 | import io.swagger.annotations.ApiModel; 8 | import io.swagger.annotations.ApiModelProperty; 9 | import lombok.Data; 10 | 11 | import java.util.Date; 12 | 13 | /** 14 | * @author lm 15 | * @create 2022-04-01 15:38 16 | */ 17 | @Data 18 | @TableName(value = "fl_buy") 19 | @ApiModel(value = "采购单号",description = "") 20 | public class Buy { 21 | 22 | @ApiModelProperty("编号") 23 | @TableId(value = "id",type = IdType.AUTO) 24 | private Integer id; 25 | 26 | @ApiModelProperty("采购单号") 27 | private String buyid; 28 | 29 | @ApiModelProperty("采购日期") 30 | private Date buyDate; 31 | 32 | @ApiModelProperty("申请人") 33 | private String buyApply; 34 | 35 | @ApiModelProperty("采购人") 36 | private String buyer; 37 | 38 | @ApiModelProperty("采购商品") 39 | private String buyName; 40 | 41 | @ApiModelProperty("供应商") 42 | private String buySupplier; 43 | 44 | @ApiModelProperty("采购数量") 45 | private String buyCount; 46 | 47 | @ApiModelProperty("数量单位") 48 | private String buyUnit; 49 | 50 | @ApiModelProperty("单价") 51 | private Double buyPrice; 52 | 53 | @ApiModelProperty("审核状态") 54 | private String buyStatus; 55 | 56 | @ApiModelProperty("审核人") 57 | private String reviewer; 58 | 59 | @ApiModelProperty("审核日期") 60 | private String reviewdate; 61 | 62 | @ApiModelProperty("审核备注") 63 | private String remarks; 64 | 65 | @TableField(exist = false) 66 | private String startTime; 67 | 68 | @TableField(exist = false) 69 | private String endTime; 70 | 71 | 72 | 73 | } 74 | 75 | -------------------------------------------------------------------------------- /src/main/java/com/lm/flowershop/entity/Sale.java: -------------------------------------------------------------------------------- 1 | package com.lm.flowershop.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.IdType; 4 | import com.baomidou.mybatisplus.annotation.TableField; 5 | import com.baomidou.mybatisplus.annotation.TableId; 6 | import com.baomidou.mybatisplus.annotation.TableName; 7 | import io.swagger.annotations.ApiModel; 8 | import io.swagger.annotations.ApiModelProperty; 9 | import lombok.Data; 10 | 11 | import java.util.Date; 12 | 13 | /** 14 | * @author lm 15 | * @create 2022-04-01 15:38 16 | */ 17 | @Data 18 | @TableName(value = "fl_sale") 19 | @ApiModel(value = "出库通知单",description = "") 20 | public class Sale { 21 | 22 | @ApiModelProperty("编号") 23 | @TableId(value = "id",type = IdType.AUTO) 24 | private Integer id; 25 | 26 | @ApiModelProperty("出库通知单编号") 27 | private String saleId; 28 | 29 | @ApiModelProperty("申请人") 30 | private String saler; 31 | 32 | @ApiModelProperty("出库申请日期") 33 | private Date saleDate; 34 | 35 | @ApiModelProperty("出库产品名称") 36 | private String saleName; 37 | 38 | @ApiModelProperty("供应商") 39 | private String saleSupplier; 40 | 41 | @ApiModelProperty("出库数量") 42 | private String saleNum; 43 | 44 | @ApiModelProperty("数量单位") 45 | private String saleUnit; 46 | 47 | @ApiModelProperty("单价") 48 | private Double salePrice; 49 | 50 | @ApiModelProperty("总价") 51 | private Double saleTotal; 52 | 53 | @ApiModelProperty("已付款") 54 | private Double salePaid; 55 | 56 | @ApiModelProperty("审核人备注") 57 | private String remarks; 58 | 59 | @ApiModelProperty("审核人") 60 | private String reviewer; 61 | 62 | @ApiModelProperty("审核结果") 63 | private String results; 64 | 65 | @ApiModelProperty("审核日期") 66 | private String reviewdate; 67 | 68 | @ApiModelProperty("申请人备注") 69 | private String applynote; 70 | 71 | 72 | @TableField(exist = false) 73 | private String proname; 74 | 75 | @TableField(exist = false) 76 | private String startTime; 77 | 78 | @TableField(exist = false) 79 | private String endTime; 80 | } 81 | 82 | -------------------------------------------------------------------------------- /flower/src/views/Manage.vue: -------------------------------------------------------------------------------- 1 | 22 | 23 | 73 | -------------------------------------------------------------------------------- /src/main/java/com/lm/flowershop/entity/Outstorage.java: -------------------------------------------------------------------------------- 1 | package com.lm.flowershop.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.IdType; 4 | import com.baomidou.mybatisplus.annotation.TableField; 5 | import com.baomidou.mybatisplus.annotation.TableId; 6 | import com.baomidou.mybatisplus.annotation.TableName; 7 | import io.swagger.annotations.ApiModelProperty; 8 | import lombok.Data; 9 | 10 | import java.util.Date; 11 | 12 | /** 13 | * @author lm 14 | * @create 2022-04-10 17:17 15 | */ 16 | @TableName("fl_out") 17 | @Data 18 | public class Outstorage { 19 | @ApiModelProperty("编号") 20 | @TableId(value = "id",type = IdType.AUTO) 21 | private Integer id; 22 | 23 | @ApiModelProperty("出库单编号") 24 | private String outId; 25 | 26 | @ApiModelProperty("操作申请人") 27 | private String outOper; 28 | 29 | @ApiModelProperty("出库日期") 30 | private Date outDate; 31 | 32 | @ApiModelProperty("出库产品名称") 33 | private String outName; 34 | 35 | @ApiModelProperty("客户") 36 | private String outCustomer; 37 | 38 | @ApiModelProperty("供应商") 39 | private String outSupplier; 40 | 41 | @ApiModelProperty("出库数量") 42 | private Integer outNum; 43 | 44 | @ApiModelProperty("数量单位") 45 | private String outUnit; 46 | 47 | @ApiModelProperty("单价") 48 | private Double outPrice; 49 | 50 | @ApiModelProperty("总价") 51 | private Double outTotal; 52 | 53 | @ApiModelProperty("利润") 54 | private Double outProfit; 55 | 56 | @ApiModelProperty("已付款") 57 | private Double outPaid; 58 | 59 | @ApiModelProperty("状态") 60 | private String status; 61 | 62 | @TableField(exist = false) 63 | private String proname; 64 | 65 | @TableField(exist = false) 66 | private String prostock; 67 | 68 | @TableField(exist = false) 69 | private String prosales; 70 | 71 | @TableField(exist = false) 72 | private String startTime; 73 | 74 | @TableField(exist = false) 75 | private String endTime; 76 | 77 | @TableField(exist = false) 78 | private Double sumByToday; 79 | 80 | @TableField(exist = false) 81 | private Double sumByPaid; 82 | 83 | } 84 | -------------------------------------------------------------------------------- /src/main/java/com/lm/flowershop/utils/TokenUtils.java: -------------------------------------------------------------------------------- 1 | package com.lm.flowershop.utils; 2 | 3 | import cn.hutool.core.date.DateUtil; 4 | import cn.hutool.core.util.StrUtil; 5 | import com.auth0.jwt.JWT; 6 | import com.auth0.jwt.algorithms.Algorithm; 7 | import com.lm.flowershop.entity.Manager; 8 | import com.lm.flowershop.service.IManagerService; 9 | import org.springframework.beans.factory.annotation.Autowired; 10 | import org.springframework.stereotype.Component; 11 | import org.springframework.web.context.request.RequestContextHolder; 12 | import org.springframework.web.context.request.ServletRequestAttributes; 13 | 14 | import javax.annotation.PostConstruct; 15 | import javax.annotation.Resource; 16 | import javax.servlet.http.HttpServletRequest; 17 | import java.time.Period; 18 | import java.util.Date; 19 | 20 | /** 21 | * @author lm 22 | * @create 2022-03-23 11:01 23 | */ 24 | @Component 25 | public class TokenUtils { 26 | private static IManagerService staticManagerService; 27 | @Resource 28 | private IManagerService managerService; 29 | 30 | @PostConstruct 31 | public void setManagerService(){ 32 | staticManagerService=managerService; 33 | } 34 | //生成token 35 | public static String genToken(String adid,String sign){ 36 | return JWT.create().withAudience(adid) // 将 adid 保存到 token 里面,作为载荷 37 | .withExpiresAt(DateUtil.offsetHour(new Date(),2)) //两小时后token过期 38 | .sign(Algorithm.HMAC256(sign)); // 以 adpwd 作为 token 的密钥 39 | } 40 | /** 41 | * 获取当前登录的用户信息 42 | * 静态方法不能调用非静态成员变量 43 | */ 44 | public static Manager getCurrentManager() { 45 | try { 46 | HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); 47 | String token = request.getHeader("token"); 48 | if (StrUtil.isNotBlank(token)) { 49 | String adid = JWT.decode(token).getAudience().get(0); 50 | return staticManagerService.getById(Integer.valueOf(adid)); 51 | } 52 | }catch(Exception e){ 53 | return null; 54 | } 55 | return null; 56 | } 57 | } -------------------------------------------------------------------------------- /flower/src/components/Aside.vue: -------------------------------------------------------------------------------- 1 | 47 | 48 | 70 | 71 | -------------------------------------------------------------------------------- /src/main/resources/mapper/Sale.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 15 | 40 | 48 | -------------------------------------------------------------------------------- /src/main/java/com/lm/flowershop/controller/FosterController.java: -------------------------------------------------------------------------------- 1 | package com.lm.flowershop.controller; 2 | 3 | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 4 | import com.lm.flowershop.common.Result; 5 | import com.lm.flowershop.entity.Foster; 6 | import com.lm.flowershop.service.IFosterService; 7 | import org.springframework.web.bind.annotation.*; 8 | 9 | import javax.annotation.Resource; 10 | import java.util.List; 11 | 12 | /** 13 | * @author lm 14 | * @create 2022-03-17 16:29 15 | */ 16 | @RestController 17 | @RequestMapping("/foster") 18 | public class FosterController { 19 | 20 | @Resource 21 | private IFosterService fosterService; 22 | 23 | 24 | //新增和修改 25 | @PostMapping 26 | public Result save(@RequestBody Foster foster){ 27 | //新增或者更新 28 | return Result.success(fosterService.saveOrUpdate(foster)); 29 | 30 | } 31 | //查询所有数据 32 | @GetMapping("/") 33 | public Result findAll() { 34 | return Result.success(fosterService.list()); 35 | } 36 | //删除数据 37 | @DeleteMapping("/{id}") 38 | public Result delete(@PathVariable Integer id){ 39 | return Result.success( fosterService.removeById(id)); 40 | } 41 | 42 | //批量删除 43 | @PostMapping("/del/batch") 44 | public Result deleteBatch(@RequestBody List ids) { 45 | 46 | return Result.success(fosterService.removeByIds(ids)); 47 | } 48 | 49 | //分页查询——mybatis-plus的方式查询 50 | @GetMapping("/page") 51 | public Result findPage(@RequestParam(defaultValue = "") String phone, 52 | @RequestParam(defaultValue = "") String fosName, 53 | @RequestParam String startTime, 54 | @RequestParam(defaultValue = "") String fosOper, 55 | @RequestParam(defaultValue = "") String fosStatus, 56 | @RequestParam Integer pageNum, 57 | @RequestParam Integer pageSize 58 | ) { 59 | 60 | Page page=fosterService.findPage(new Page<>(pageNum,pageSize), phone,fosName,startTime,fosOper,fosStatus); 61 | 62 | return Result.success(page); 63 | }} 64 | 65 | 66 | 67 | 68 | 69 | 70 | -------------------------------------------------------------------------------- /src/main/java/com/lm/flowershop/config/swaggerConfig.java: -------------------------------------------------------------------------------- 1 | package com.lm.flowershop.config; 2 | 3 | import org.springframework.context.annotation.Bean; 4 | import org.springframework.context.annotation.Configuration; 5 | import springfox.documentation.builders.ApiInfoBuilder; 6 | import springfox.documentation.builders.PathSelectors; 7 | import springfox.documentation.builders.RequestHandlerSelectors; 8 | import springfox.documentation.oas.annotations.EnableOpenApi; 9 | import springfox.documentation.service.ApiInfo; 10 | import springfox.documentation.service.Contact; 11 | import springfox.documentation.spi.DocumentationType; 12 | import springfox.documentation.spring.web.plugins.Docket; 13 | import springfox.documentation.swagger2.annotations.EnableSwagger2WebMvc; 14 | 15 | /** 16 | * @author lm 17 | * @create 2022-03-19 10:29 18 | */ 19 | @Configuration 20 | @EnableOpenApi 21 | public class swaggerConfig { 22 | /** 23 | * 创建API应用 24 | * apiInfo() 增加API相关信息 25 | * 通过select()函数返回一个ApiSelectorBuilder实例,用来控制哪些接口暴露给Swagger来展现, 26 | * 本例采用指定扫描的包路径来定义指定要建立API的目录。 27 | * 28 | * @return 29 | */ 30 | @Bean 31 | public Docket restApi() { 32 | return new Docket(DocumentationType.SWAGGER_2) 33 | .groupName("标准接口") 34 | .apiInfo(apiInfo("Spring Boot中使用Swagger2构建RESTful APIs", "1.0")) 35 | .useDefaultResponseMessages(true) 36 | .forCodeGeneration(false) 37 | .select() 38 | .apis(RequestHandlerSelectors.basePackage("com.lm.flowershop.controller")) 39 | .paths(PathSelectors.any()) 40 | .build(); 41 | } 42 | 43 | /** 44 | * 创建该API的基本信息(这些基本信息会展现在文档页面中) 45 | * 访问地址:http://ip:port/swagger-ui.html 46 | * 47 | * @return 48 | */ 49 | private ApiInfo apiInfo(String title, String version) { 50 | return new ApiInfoBuilder() 51 | .title(title) 52 | .description("更多请关注: https://blog.csdn.net/xqnode") 53 | .termsOfServiceUrl("https://blog.csdn.net/xqnode") 54 | .contact(new Contact("xqnode", "https://blog.csdn.net/xqnode", "xiaqingweb@163.com")) 55 | .version(version) 56 | .build(); 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /flower/src/views/Loginlog.vue: -------------------------------------------------------------------------------- 1 | 27 | 28 | 80 | 81 | -------------------------------------------------------------------------------- /src/main/java/com/lm/flowershop/service/impl/RoleServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.lm.flowershop.service.impl; 2 | 3 | import cn.hutool.core.collection.CollUtil; 4 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 5 | import com.lm.flowershop.entity.Menu; 6 | import com.lm.flowershop.entity.Role; 7 | import com.lm.flowershop.entity.RoleMenu; 8 | import com.lm.flowershop.mapper.RoleMapper; 9 | import com.lm.flowershop.mapper.RoleMenuMapper; 10 | import com.lm.flowershop.service.IMenuService; 11 | import com.lm.flowershop.service.IRoleService; 12 | import org.springframework.stereotype.Service; 13 | import org.springframework.transaction.annotation.Transactional; 14 | 15 | import javax.annotation.Resource; 16 | import java.util.List; 17 | 18 | /** 19 | * @author lm 20 | * @create 2022-03-26 15:23 21 | */ 22 | @Service 23 | public class RoleServiceImpl extends ServiceImpl implements IRoleService { 24 | 25 | @Resource 26 | private RoleMenuMapper roleMenuMapper; 27 | 28 | @Resource 29 | private IMenuService menuService; 30 | 31 | @Transactional 32 | @Override 33 | public void setRoleMenu(Integer roleId, List menuIds) { 34 | 35 | //先删除当前角色id所有的绑定关系 36 | roleMenuMapper.deleteByRoleId(roleId); 37 | 38 | //再把前端传过来的菜单id数组绑定到当前的这个角色id上去 39 | List menuIdCopy= CollUtil.newArrayList(menuIds); 40 | for (Integer menuId : menuIds){ 41 | 42 | 43 | Menu menu= menuService.getById(menuId); 44 | if (menu.getPid() != null && !menuIdCopy.contains(menu.getPid())){//二级菜单 并且传过来的menuId数组里面没有它的父级id 45 | //那么我们就得补上这个父级id 46 | RoleMenu roleMenu= new RoleMenu(); 47 | roleMenu.setRoleId(roleId); 48 | roleMenu.setMenuId(menu.getPid()); 49 | roleMenuMapper.insert(roleMenu); 50 | menuIdCopy.add(menu.getPid()); 51 | 52 | } 53 | RoleMenu roleMenu= new RoleMenu(); 54 | roleMenu.setRoleId(roleId); 55 | roleMenu.setMenuId(menuId); 56 | roleMenuMapper.insert(roleMenu); 57 | } 58 | } 59 | 60 | @Override 61 | public List getRoleMenu(Integer roleId) { 62 | return roleMenuMapper.selectByRoleId(roleId); 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /flower/src/components/HelloWorld.vue: -------------------------------------------------------------------------------- 1 | 33 | 34 | 42 | 43 | 44 | 60 | -------------------------------------------------------------------------------- /flower/src/components/Header.vue: -------------------------------------------------------------------------------- 1 | 37 | 38 | 68 | 69 | -------------------------------------------------------------------------------- /src/main/java/com/lm/flowershop/config/interceptor/JwtInterceptor.java: -------------------------------------------------------------------------------- 1 | package com.lm.flowershop.config.interceptor; 2 | 3 | import cn.hutool.core.util.StrUtil; 4 | import com.auth0.jwt.JWT; 5 | import com.auth0.jwt.JWTVerifier; 6 | import com.auth0.jwt.algorithms.Algorithm; 7 | import com.auth0.jwt.exceptions.JWTDecodeException; 8 | import com.auth0.jwt.exceptions.JWTVerificationException; 9 | import com.lm.flowershop.common.Constants; 10 | import com.lm.flowershop.entity.Manager; 11 | import com.lm.flowershop.exception.ServiceException; 12 | import com.lm.flowershop.service.IManagerService; 13 | import org.springframework.beans.factory.annotation.Autowired; 14 | import org.springframework.stereotype.Component; 15 | import org.springframework.web.method.HandlerMethod; 16 | import org.springframework.web.servlet.HandlerInterceptor; 17 | 18 | import javax.servlet.http.HttpServletRequest; 19 | import javax.servlet.http.HttpServletResponse; 20 | 21 | /** 22 | * @author lm 23 | * @create 2022-03-23 15:17 24 | */ 25 | public class JwtInterceptor implements HandlerInterceptor { 26 | @Autowired 27 | private IManagerService managerService; 28 | 29 | @Override 30 | public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) { 31 | String token = request.getHeader("token"); 32 | // 如果不是映射到方法直接通过 33 | if(!(handler instanceof HandlerMethod)){ 34 | return true; 35 | } 36 | // 执行认证 37 | if (StrUtil.isBlank(token)) { 38 | throw new ServiceException(Constants.CODE_401, "无token,请重新登录"); 39 | } 40 | // 获取 token 中的 adid 41 | String adid; 42 | try { 43 | adid = JWT.decode(token).getAudience().get(0); 44 | } catch (JWTDecodeException j) { 45 | throw new ServiceException(Constants.CODE_401, "token验证失败,请重新登录"); 46 | } 47 | // 根据token中的userid查询数据库 48 | Manager manager = managerService.getById(adid); 49 | if (manager == null) { 50 | throw new ServiceException(Constants.CODE_401, "用户不存在,请重新登录"); 51 | } 52 | // 用户密码加签验证 token 53 | JWTVerifier jwtVerifier = JWT.require(Algorithm.HMAC256(manager.getAdpwd())).build(); 54 | try { 55 | jwtVerifier.verify(token); // 验证token 56 | } catch (JWTVerificationException e) { 57 | throw new ServiceException(Constants.CODE_401, "token验证失败,请重新登录"); 58 | } 59 | return true; 60 | } 61 | } 62 | 63 | -------------------------------------------------------------------------------- /src/main/resources/mapper/Out.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 27 | 38 | 44 | 50 | 56 | -------------------------------------------------------------------------------- /src/main/java/com/lm/flowershop/controller/RoleController.java: -------------------------------------------------------------------------------- 1 | package com.lm.flowershop.controller; 2 | 3 | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 4 | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 5 | import com.lm.flowershop.common.Constants; 6 | import com.lm.flowershop.common.Result; 7 | import com.lm.flowershop.entity.Dict; 8 | import com.lm.flowershop.entity.Role; 9 | import com.lm.flowershop.service.IRoleService; 10 | import org.springframework.web.bind.annotation.*; 11 | 12 | import javax.annotation.Resource; 13 | import java.util.List; 14 | 15 | /** 16 | * @author lm 17 | * @create 2022-03-26 15:29 18 | */ 19 | @RestController 20 | @RequestMapping("/role") 21 | public class RoleController { 22 | @Resource 23 | private IRoleService roleService; 24 | 25 | // 新增或者更新 26 | @PostMapping 27 | public Result save(@RequestBody Role role) { 28 | roleService.saveOrUpdate(role); 29 | return Result.success(); 30 | } 31 | 32 | @DeleteMapping("/{id}") 33 | public Result delete(@PathVariable Integer id) { 34 | roleService.removeById(id); 35 | return Result.success(); 36 | } 37 | 38 | @PostMapping("/del/batch") 39 | public Result deleteBatch(@RequestBody List ids) { 40 | roleService.removeByIds(ids); 41 | return Result.success(); 42 | } 43 | 44 | @GetMapping 45 | public Result findAll() { 46 | return Result.success(roleService.list()); 47 | } 48 | 49 | @GetMapping("/{id}") 50 | public Result findOne(@PathVariable Integer id) { 51 | return Result.success(roleService.getById(id)); 52 | } 53 | 54 | @GetMapping("/page") 55 | public Result findPage(@RequestParam String name, 56 | @RequestParam Integer pageNum, 57 | @RequestParam Integer pageSize) { 58 | QueryWrapper queryWrapper = new QueryWrapper<>(); 59 | queryWrapper.like("name", name); 60 | queryWrapper.orderByDesc("id"); 61 | return Result.success(roleService.page(new Page<>(pageNum, pageSize), queryWrapper)); 62 | } 63 | 64 | /** 65 | * 绑定角色和菜单的关系 66 | * @param roleId 角色id 67 | * @param menuIds 菜单id 68 | * @return 69 | */ 70 | @PostMapping("/roleMenu/{roleId}") 71 | public Result roleMenu(@PathVariable Integer roleId, @RequestBody List menuIds) { 72 | roleService.setRoleMenu(roleId,menuIds); 73 | return Result.success(); 74 | } 75 | 76 | @GetMapping("/roleMenu/{roleId}") 77 | public Result getRoleMenu(@PathVariable Integer roleId) { 78 | return Result.success(roleService.getRoleMenu(roleId)); 79 | } 80 | } 81 | -------------------------------------------------------------------------------- /src/main/java/com/lm/flowershop/controller/SortController.java: -------------------------------------------------------------------------------- 1 | package com.lm.flowershop.controller; 2 | 3 | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 4 | import com.baomidou.mybatisplus.core.metadata.IPage; 5 | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 6 | import com.lm.flowershop.common.Result; 7 | import com.lm.flowershop.entity.Product; 8 | import com.lm.flowershop.entity.Sort; 9 | import com.lm.flowershop.service.IProductService; 10 | import com.lm.flowershop.service.ISortService; 11 | import org.springframework.web.bind.annotation.*; 12 | 13 | import javax.annotation.Resource; 14 | import java.util.List; 15 | 16 | /** 17 | * @author lm 18 | * @create 2022-03-26 15:29 19 | */ 20 | @RestController 21 | @RequestMapping("/sort") 22 | public class SortController { 23 | @Resource 24 | private ISortService sortService; 25 | 26 | // 新增或者更新 27 | @PostMapping 28 | public Result save(@RequestBody Sort sort) { 29 | sortService.saveOrUpdate(sort); 30 | return Result.success(); 31 | } 32 | 33 | @DeleteMapping("/{id}") 34 | public Result delete(@PathVariable Integer id) { 35 | sortService.removeById(id); 36 | return Result.success(); 37 | } 38 | 39 | @PostMapping("/del/batch") 40 | public Result deleteBatch(@RequestBody List ids) { 41 | sortService.removeByIds(ids); 42 | return Result.success(); 43 | } 44 | 45 | @GetMapping 46 | public Result findAll() { 47 | return Result.success(sortService.list()); 48 | } 49 | 50 | // @GetMapping("/sort/{sortName}") 51 | // public Result findSortByName(@PathVariable String sortName) { 52 | // QueryWrapper queryWrapper= new QueryWrapper<>(); 53 | // queryWrapper.eq("sortName",sortName); 54 | // List list= sortService.list(queryWrapper); 55 | // return Result.success(list); 56 | // } 57 | 58 | @GetMapping("/{id}") 59 | public Result findOne(@PathVariable Integer id) { 60 | return Result.success(sortService.getById(id)); 61 | } 62 | 63 | //分页查询——mybatis-plus的方式查询 64 | @GetMapping("/page") 65 | public Result findPage(@RequestParam Integer pageNum, 66 | @RequestParam Integer pageSize, 67 | @RequestParam(defaultValue = "") String sortname 68 | 69 | ) { 70 | // IPage page=new Page<>(pageNum,pageSize); 71 | // QueryWrapper queryWrapper=new QueryWrapper<>(); 72 | // if (!"".equals(sortName)){ 73 | // queryWrapper.like("sortName",sortName); 74 | // } 75 | return Result.success(sortService.findPage(new Page<>(pageNum,pageSize),sortname)); 76 | } 77 | 78 | } 79 | -------------------------------------------------------------------------------- /flower/src/router/index.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import VueRouter from 'vue-router' 3 | import store from "@/store"; 4 | Vue.use(VueRouter) 5 | 6 | const routes = [ 7 | 8 | { 9 | path: '/login', 10 | name: 'Login', 11 | component: () => import('../views/Login.vue') 12 | }, 13 | { 14 | path: '/404', 15 | name: '404', 16 | component: () => import('../views/404.vue') 17 | } 18 | ] 19 | 20 | const router = new VueRouter({ 21 | mode: 'history', 22 | base: process.env.BASE_URL, 23 | routes 24 | }) 25 | 26 | //提供一个重置路由的方法 27 | export const resetRouter = () => { 28 | router.matcher = new VueRouter({ 29 | mode: 'history', 30 | base: process.env.BASE_URL, 31 | routes 32 | }) 33 | } 34 | 35 | //注:刷新页面会导致页面路由重置 36 | export const setRoutes = () => { 37 | const storeMenus = localStorage.getItem("menus"); 38 | if (storeMenus) { 39 | 40 | 41 | //获取当前的路由对象名称数组 42 | const currentRouteNames = router.getRoutes().map(v => v.name) 43 | if (!currentRouteNames.includes('Manage')) { 44 | 45 | //拼装动态路由 46 | const manageRoute = { 47 | path: '/', name: 'Manage', component: () => import('../views/Manage.vue'), redirect: "/home", children: [ 48 | { path: 'person', name: '个人信息', component: () => import('../views/Person.vue') }, 49 | { path: 'password', name: '修改密码', component: () => import('../views/Password.vue') }, 50 | ] 51 | } 52 | const menus = JSON.parse(storeMenus) 53 | menus.forEach(item => { 54 | if (item.path) {//当且仅当path不为空的时候才去设置路由 55 | let itemMenu = { path: item.path.replace("/", ""), name: item.name, component: () => import('../views/' + item.pagePath + '.vue') } 56 | manageRoute.children.push(itemMenu) 57 | } else if (item.children.length) { 58 | item.children.forEach(item => { 59 | if (item.path) { 60 | let itemMenu = { path: item.path.replace("/", ""), name: item.name, component: () => import('../views/' + item.pagePath + '.vue') } 61 | manageRoute.children.push(itemMenu) 62 | 63 | } 64 | }) 65 | } 66 | }) 67 | //动态添加到现在的路由对象中去 68 | router.addRoute(manageRoute) 69 | } 70 | 71 | } 72 | } 73 | //刷新页面是再set一次路由 74 | setRoutes() 75 | //路由守卫 76 | router.beforeEach((to, from, next) => { 77 | localStorage.setItem("currentPathName", to.name)// 设置当前的路由名称,为了在Header组件中去使用 78 | store.commit("setPath") // 触发store的数据更新 79 | 80 | //未找到路由的情况 81 | if (!to.matched.length) { 82 | const storeMenus = localStorage.getItem("menus") 83 | if (storeMenus) { 84 | next("/404") // 放行路由 85 | } else { 86 | //跳回登录页面 87 | next("/login") // 放行路由 88 | } 89 | } 90 | //其他的情况都放行 91 | next() 92 | }) 93 | 94 | export default router 95 | -------------------------------------------------------------------------------- /src/main/java/com/lm/flowershop/controller/UnitController.java: -------------------------------------------------------------------------------- 1 | package com.lm.flowershop.controller; 2 | 3 | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 4 | import com.baomidou.mybatisplus.core.metadata.IPage; 5 | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 6 | import com.lm.flowershop.common.Constants; 7 | import com.lm.flowershop.common.Result; 8 | import com.lm.flowershop.entity.Customer; 9 | import com.lm.flowershop.entity.Dict; 10 | import com.lm.flowershop.entity.Menu; 11 | import com.lm.flowershop.entity.Unit; 12 | import com.lm.flowershop.mapper.DictMapper; 13 | import com.lm.flowershop.mapper.UnitMapper; 14 | import com.lm.flowershop.service.IMenuService; 15 | import com.lm.flowershop.service.IUnitService; 16 | import org.springframework.web.bind.annotation.*; 17 | 18 | import javax.annotation.Resource; 19 | import java.util.List; 20 | 21 | /** 22 | * @author lm 23 | * @create 2022-03-26 15:29 24 | */ 25 | @RestController 26 | @RequestMapping("/unit") 27 | public class UnitController { 28 | @Resource 29 | private IUnitService unitService; 30 | 31 | @Resource 32 | private UnitMapper unitMapper; 33 | // 新增或者更新 34 | @PostMapping 35 | public Result save(@RequestBody Unit unit) { 36 | unitService.saveOrUpdate(unit); 37 | return Result.success(); 38 | } 39 | 40 | @DeleteMapping("/{unitsid}") 41 | public Result delete(@PathVariable Integer unitsid) { 42 | unitService.removeById(unitsid); 43 | return Result.success(); 44 | } 45 | 46 | @PostMapping("/del/batch") 47 | public Result deleteBatch(@RequestBody List unitsids) { 48 | unitService.removeByIds(unitsids); 49 | return Result.success(); 50 | } 51 | 52 | 53 | @GetMapping 54 | public Result findAll(@RequestParam(defaultValue = "") String unitname) { 55 | 56 | 57 | return Result.success(unitService.findUnits(unitname)); 58 | } 59 | 60 | @GetMapping("/{unitsid}") 61 | public Result findOne(@PathVariable Integer unitsid) { 62 | return Result.success(unitService.getById(unitsid)); 63 | } 64 | 65 | //分页查询——mybatis-plus的方式查询 66 | @GetMapping("/page") 67 | public Result findPage(@RequestParam Integer pageNum, 68 | @RequestParam Integer pageSize, 69 | @RequestParam(defaultValue = "") String unitname 70 | 71 | 72 | 73 | ) { 74 | IPage page=new Page<>(pageNum,pageSize); 75 | QueryWrapper queryWrapper=new QueryWrapper<>(); 76 | if (!"".equals(unitname)){ 77 | queryWrapper.like("unitname",unitname); 78 | } 79 | 80 | queryWrapper.orderByDesc("unitsid"); 81 | return Result.success(unitService.page(page,queryWrapper)); 82 | } 83 | 84 | 85 | } 86 | -------------------------------------------------------------------------------- /src/main/java/com/lm/flowershop/controller/EchartsController.java: -------------------------------------------------------------------------------- 1 | package com.lm.flowershop.controller; 2 | 3 | import cn.hutool.core.collection.CollUtil; 4 | import cn.hutool.core.date.DateUtil; 5 | import cn.hutool.core.date.Quarter; 6 | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 7 | import com.lm.flowershop.common.Result; 8 | import com.lm.flowershop.entity.Customer; 9 | import com.lm.flowershop.entity.Manager; 10 | import com.lm.flowershop.service.*; 11 | import org.springframework.beans.factory.annotation.Autowired; 12 | import org.springframework.web.bind.annotation.GetMapping; 13 | import org.springframework.web.bind.annotation.RequestMapping; 14 | import org.springframework.web.bind.annotation.RequestParam; 15 | import org.springframework.web.bind.annotation.RestController; 16 | 17 | import java.util.Date; 18 | import java.util.HashMap; 19 | import java.util.List; 20 | import java.util.Map; 21 | 22 | /** 23 | * @author lm 24 | * @create 2022-03-25 16:57 25 | */ 26 | @RestController 27 | @RequestMapping("/echarts") 28 | public class EchartsController { 29 | @Autowired 30 | private IPutService putService; 31 | @Autowired 32 | private IOutService outService; 33 | @Autowired 34 | private ICustomerService customerService; 35 | @Autowired 36 | private IProductService productService; 37 | @Autowired 38 | private ISortService sortService; 39 | 40 | @GetMapping("/members") 41 | public Result members(){ 42 | List list =customerService.list(); 43 | int q1=0;//第一季度 44 | int q2=0;//第二季度 45 | int q3=0;//第三季度 46 | int q4=0;//第四季度 47 | for (Customer customer : list){ 48 | Date createTime=customer.getCreateTime(); 49 | Quarter quarter= DateUtil.quarterEnum(createTime); 50 | switch (quarter){ 51 | case Q1:q1 += 1; break; 52 | case Q2:q2 += 1; break; 53 | case Q3:q3 += 1; break; 54 | case Q4:q4 += 1; break; 55 | default: break; 56 | } 57 | } 58 | return Result.success(CollUtil.newArrayList(q1,q2,q3,q4)); 59 | } 60 | @GetMapping("/members1") 61 | public Result members1(){ 62 | { 63 | return Result.success(productService.list()); 64 | }} 65 | @GetMapping("/members2") 66 | public Result findPage1( 67 | 68 | ) { 69 | return Result.success( 70 | sortService.findPage1(new Page<>())); 71 | } 72 | //统计入库信息 73 | @GetMapping("/members3") 74 | public Result findPage2( 75 | 76 | ) { 77 | return Result.success(putService.list()); 78 | } 79 | //统计出库信息 80 | @GetMapping("/members4") 81 | public Result findPage3( 82 | 83 | ) { 84 | return Result.success(outService.list()); 85 | } 86 | } 87 | -------------------------------------------------------------------------------- /src/main/java/com/lm/flowershop/controller/MenuController.java: -------------------------------------------------------------------------------- 1 | package com.lm.flowershop.controller; 2 | 3 | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 4 | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 5 | import com.lm.flowershop.common.Constants; 6 | import com.lm.flowershop.common.Result; 7 | import com.lm.flowershop.entity.Dict; 8 | import com.lm.flowershop.entity.Menu; 9 | import com.lm.flowershop.entity.Role; 10 | import com.lm.flowershop.mapper.DictMapper; 11 | import com.lm.flowershop.service.IMenuService; 12 | import com.lm.flowershop.service.IRoleService; 13 | import org.springframework.web.bind.annotation.*; 14 | 15 | import javax.annotation.Resource; 16 | import java.util.List; 17 | import java.util.stream.Collectors; 18 | 19 | /** 20 | * @author lm 21 | * @create 2022-03-26 15:29 22 | */ 23 | @RestController 24 | @RequestMapping("/menu") 25 | public class MenuController { 26 | @Resource 27 | private IMenuService menuService; 28 | 29 | @Resource 30 | private DictMapper dictMapper; 31 | // 新增或者更新 32 | @PostMapping 33 | public Result save(@RequestBody Menu menu) { 34 | menuService.saveOrUpdate(menu); 35 | return Result.success(); 36 | } 37 | 38 | @DeleteMapping("/{id}") 39 | public Result delete(@PathVariable Integer id) { 40 | menuService.removeById(id); 41 | return Result.success(); 42 | } 43 | 44 | @PostMapping("/del/batch") 45 | public Result deleteBatch(@RequestBody List ids) { 46 | menuService.removeByIds(ids); 47 | return Result.success(); 48 | } 49 | 50 | @GetMapping("/ids") 51 | public Result findAllIds() { 52 | //查出数据表里的所有菜单id去跟当前选中的菜单id进行比较 53 | return Result.success(menuService.list().stream().map(Menu::getId)); 54 | } 55 | 56 | @GetMapping 57 | public Result findAll(@RequestParam(defaultValue = "") String name) { 58 | 59 | 60 | return Result.success(menuService.findMenus(name)); 61 | } 62 | 63 | @GetMapping("/{id}") 64 | public Result findOne(@PathVariable Integer id) { 65 | return Result.success(menuService.getById(id)); 66 | } 67 | 68 | @GetMapping("/page") 69 | public Result findPage(@RequestParam String name, 70 | @RequestParam Integer pageNum, 71 | @RequestParam Integer pageSize) { 72 | QueryWrapper queryWrapper = new QueryWrapper<>(); 73 | queryWrapper.like("name", name); 74 | queryWrapper.orderByAsc("id"); 75 | 76 | return Result.success(menuService.page(new Page<>(pageNum, pageSize), queryWrapper)); 77 | } 78 | 79 | @GetMapping("/icons") 80 | public Result getIcons() { 81 | QueryWrapper queryWrapper=new QueryWrapper<>(); 82 | queryWrapper.eq("type", Constants.DICT_TYPE_ICON); 83 | return Result.success(dictMapper.selectList(queryWrapper)); 84 | } 85 | 86 | 87 | } 88 | -------------------------------------------------------------------------------- /flower/src/views/Password.vue: -------------------------------------------------------------------------------- 1 | 19 | 20 | 68 | 69 | 98 | -------------------------------------------------------------------------------- /flower/src/views/Person.vue: -------------------------------------------------------------------------------- 1 | 32 | 33 | 74 | 75 | -------------------------------------------------------------------------------- /flower/src/views/Inventory.vue: -------------------------------------------------------------------------------- 1 | 63 | 64 | 114 | 115 | -------------------------------------------------------------------------------- /flower/src/views/Login.vue: -------------------------------------------------------------------------------- 1 | 48 | 49 | 106 | 107 | -------------------------------------------------------------------------------- /pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 4.0.0 5 | 6 | org.springframework.boot 7 | spring-boot-starter-parent 8 | 2.5.10 9 | 10 | 11 | com.lm 12 | flowershop 13 | 0.0.1-SNAPSHOT 14 | flowershop 15 | flowershop project for Spring Boot 16 | 17 | 1.8 18 | 19 | 20 | 21 | org.springframework.boot 22 | spring-boot-starter-web 23 | 24 | 25 | org.mybatis.spring.boot 26 | mybatis-spring-boot-starter 27 | 2.2.2 28 | 29 | 30 | 31 | mysql 32 | mysql-connector-java 33 | runtime 34 | 35 | 36 | org.projectlombok 37 | lombok 38 | true 39 | 40 | 41 | 42 | com.baomidou 43 | mybatis-plus-boot-starter 44 | 3.5.1 45 | 46 | 47 | 48 | com.baomidou 49 | mybatis-plus-generator 50 | 3.5.1 51 | 52 | 53 | 54 | io.springfox 55 | springfox-boot-starter 56 | 3.0.0 57 | 58 | 59 | 60 | cn.hutool 61 | hutool-all 62 | 5.7.20 63 | 64 | 65 | org.apache.poi 66 | poi-ooxml 67 | 4.1.2 68 | 69 | 70 | 71 | com.auth0 72 | java-jwt 73 | 3.10.3 74 | 75 | 76 | joda-time 77 | joda-time 78 | 2.3 79 | 80 | 81 | 82 | org.springframework.boot 83 | spring-boot-starter-test 84 | test 85 | 86 | 87 | 88 | 89 | 90 | 91 | org.springframework.boot 92 | spring-boot-maven-plugin 93 | 94 | 95 | 96 | org.projectlombok 97 | lombok 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | -------------------------------------------------------------------------------- /src/main/java/com/lm/flowershop/controller/PutController.java: -------------------------------------------------------------------------------- 1 | package com.lm.flowershop.controller; 2 | 3 | import cn.hutool.poi.excel.ExcelUtil; 4 | import cn.hutool.poi.excel.ExcelWriter; 5 | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 6 | import com.baomidou.mybatisplus.core.metadata.IPage; 7 | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 8 | import com.lm.flowershop.common.Result; 9 | import com.lm.flowershop.entity.Buy; 10 | import com.lm.flowershop.entity.Putstorage; 11 | import com.lm.flowershop.entity.Sale; 12 | import com.lm.flowershop.service.IPutService; 13 | import com.lm.flowershop.service.ISaleService; 14 | import org.springframework.web.bind.annotation.*; 15 | 16 | import javax.annotation.Resource; 17 | import javax.servlet.ServletOutputStream; 18 | import javax.servlet.http.HttpServletResponse; 19 | import java.net.URLEncoder; 20 | import java.util.List; 21 | 22 | /** 23 | * @author lm 24 | * @create 2022-03-17 16:29 25 | */ 26 | @RestController 27 | @RequestMapping("/put") 28 | public class PutController { 29 | 30 | @Resource 31 | private IPutService putService; 32 | 33 | 34 | //新增和修改 35 | @PostMapping 36 | public Result save(@RequestBody Putstorage putstorage){ 37 | //新增或者更新 38 | return Result.success(putService.saveOrUpdate(putstorage)); 39 | 40 | } 41 | //查询所有数据 42 | @GetMapping("/") 43 | public Result findAll() { 44 | return Result.success(putService.list()); 45 | } 46 | //删除数据 47 | @DeleteMapping("/{id}") 48 | public Result delete(@PathVariable Integer id){ 49 | return Result.success( putService.removeById(id)); 50 | } 51 | 52 | //批量删除 53 | @PostMapping("/del/batch") 54 | public Result deleteBatch(@RequestBody List ids){ 55 | 56 | return Result.success(putService.removeByIds(ids)); 57 | } 58 | 59 | //总支出 60 | @GetMapping("/findsum") 61 | public Result sumByToday() { 62 | return Result.success(putService.sumByToday()); 63 | } 64 | //入库量 65 | @GetMapping("/findwholput") 66 | public Result findwholput() { 67 | 68 | return Result.success(putService.saleValidate()); 69 | } 70 | //分页查询——mybatis-plus的方式查询 71 | @GetMapping("/page") 72 | public Result findPage(@RequestParam(defaultValue = "") String putId, 73 | @RequestParam(defaultValue = "") String putOper, 74 | @RequestParam String startTime, 75 | @RequestParam String endTime, 76 | @RequestParam Integer pageNum, 77 | @RequestParam Integer pageSize 78 | 79 | ) { 80 | 81 | Page page=putService.findPage(new Page<>(pageNum,pageSize), putId,putOper,startTime,endTime); 82 | 83 | return Result.success(page); 84 | 85 | } 86 | /** 87 | * 导出接口 88 | */ 89 | @GetMapping("/export") 90 | public void export(HttpServletResponse response)throws Exception{ 91 | //从数据库查询出所有的数据 92 | List list = putService.list(); 93 | //通过工具类创建writer写出到磁盘路径 94 | //ExcelWriter writer = ExcelUtil.getWriter(filesUploadPath+ "/用户信息.xlsx"); 95 | //在内存操作,写出到浏览器 96 | ExcelWriter writer = ExcelUtil.getWriter(true); 97 | //自定义标题别名 98 | writer.addHeaderAlias("id","编号"); 99 | writer.addHeaderAlias("putId","入库单号"); 100 | writer.addHeaderAlias("putName","入库商品"); 101 | writer.addHeaderAlias("putDate","入库日期"); 102 | writer.addHeaderAlias("putSupplier","供应商"); 103 | writer.addHeaderAlias("putOper","操作人"); 104 | writer.addHeaderAlias("putNum","入库数量"); 105 | writer.addHeaderAlias("putUnit","数量单位"); 106 | writer.addHeaderAlias("putPrice","单价"); 107 | writer.addHeaderAlias("putTotal","总价"); 108 | writer.addHeaderAlias("status","状态"); 109 | 110 | //一次性写出list内的对象到Excel,使用默认样式,强制输出标题 111 | writer.write(list,true); 112 | //设置浏览器响应格式 113 | response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8"); 114 | String fileName = URLEncoder.encode("入库单信息","UTF-8"); 115 | response.setHeader("Content-Disposition", "attachment;filename=" + fileName + ".xlsx"); 116 | 117 | ServletOutputStream out = response.getOutputStream(); 118 | writer.flush(out,true); 119 | out.close(); 120 | writer.close(); 121 | } 122 | } 123 | 124 | 125 | -------------------------------------------------------------------------------- /src/main/java/com/lm/flowershop/service/impl/ManagerServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.lm.flowershop.service.impl; 2 | 3 | import cn.hutool.core.bean.BeanUtil; 4 | import cn.hutool.log.Log; 5 | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 6 | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 7 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 8 | import com.lm.flowershop.common.Constants; 9 | import com.lm.flowershop.common.Result; 10 | import com.lm.flowershop.controller.dto.ManagerDTO; 11 | import com.lm.flowershop.controller.dto.UserPasswordDTO; 12 | import com.lm.flowershop.entity.Manager; 13 | import com.lm.flowershop.entity.Menu; 14 | import com.lm.flowershop.entity.Sort; 15 | import com.lm.flowershop.exception.ServiceException; 16 | import com.lm.flowershop.mapper.ManagerMapper; 17 | import com.lm.flowershop.mapper.RoleMapper; 18 | import com.lm.flowershop.mapper.RoleMenuMapper; 19 | import com.lm.flowershop.service.IManagerService; 20 | import com.lm.flowershop.service.IMenuService; 21 | import com.lm.flowershop.utils.TokenUtils; 22 | import org.apache.poi.poifs.property.Child; 23 | import org.springframework.beans.factory.annotation.Autowired; 24 | import org.springframework.stereotype.Service; 25 | 26 | import javax.annotation.Resource; 27 | import java.util.ArrayList; 28 | import java.util.List; 29 | 30 | /** 31 | * @author lm 32 | * @create 2022-03-21 18:22 33 | */ 34 | @Service 35 | public class ManagerServiceImpl extends ServiceImpl implements IManagerService { 36 | private static final Log LOG = Log.get(); 37 | @Resource 38 | private RoleMapper roleMapper ; 39 | @Resource 40 | private RoleMenuMapper roleMenuMapper; 41 | @Resource ManagerMapper managerMapper; 42 | @Resource 43 | private IMenuService menuService; 44 | @Override 45 | public ManagerDTO login(ManagerDTO managerDTO) { 46 | QueryWrapper queryWrapper=new QueryWrapper<>(); 47 | queryWrapper.eq("adname",managerDTO.getAdname()); 48 | queryWrapper.eq("adpwd",managerDTO.getAdpwd()); 49 | Manager one; 50 | try { 51 | one = getOne(queryWrapper);//从数据库查询用户信息 52 | }catch (Exception e){ 53 | LOG.error(e); 54 | throw new ServiceException(Constants.CODE_500,"系统错误"); 55 | 56 | } 57 | if (one != null){ 58 | BeanUtil.copyProperties(one,managerDTO,true); 59 | //设置token 60 | String token= TokenUtils.genToken(one.getAdid().toString(),one.getAdpwd()); 61 | managerDTO.setToken(token); 62 | 63 | String role=one.getRole();//ROLE_ADMIN 64 | 65 | //设置用户的菜单列表 66 | List roleMenus= getRoleMenus(role); 67 | managerDTO.setMenus(roleMenus); 68 | 69 | return managerDTO; 70 | }else { 71 | throw new ServiceException(Constants.CODE_600,"用户名或密码错误"); 72 | } 73 | } 74 | 75 | @Override 76 | public void updatePassword(UserPasswordDTO userPasswordDTO) { 77 | int update = managerMapper.updatePassword(userPasswordDTO); 78 | if (update < 1) { 79 | throw new ServiceException(Constants.CODE_600, "密码错误"); 80 | 81 | } 82 | } 83 | 84 | @Override 85 | public Page findPage(Page page) { 86 | 87 | return managerMapper.findPage(page); 88 | } 89 | 90 | @Override 91 | public Page findPage1(Page page) { 92 | 93 | return managerMapper.findPage1(page); 94 | } 95 | @Override 96 | public Page findPage2(Page page) { 97 | 98 | return managerMapper.findPage2(page); 99 | } 100 | /** 101 | * 获取当前角色的菜单列表 102 | * @param roleFlag 103 | * @return 104 | */ 105 | private List getRoleMenus(String roleFlag){ 106 | Integer roleId= roleMapper.selectByFlag(roleFlag); 107 | 108 | //当前角色的所有菜单id集合 109 | List menuIds = roleMenuMapper.selectByRoleId(roleId); 110 | //查询系统所有的菜单 111 | List menus= menuService.findMenus(""); 112 | //new一个最后筛选完成之后的list 113 | List roleMenus=new ArrayList<>(); 114 | //筛选当前用户角色的菜单 115 | for (Menu menu : menus){ 116 | if (menuIds.contains(menu.getId())){ 117 | roleMenus.add(menu); 118 | } 119 | List children=menu.getChildren(); 120 | //removeIf 移除children里面不在menuIds集合中的元素 121 | children.removeIf(child -> !menuIds.contains(child.getId())); 122 | } 123 | return roleMenus; 124 | } 125 | } 126 | 127 | -------------------------------------------------------------------------------- /flower/src/views/Home copy.vue: -------------------------------------------------------------------------------- 1 | 52 | 53 | 174 | 175 | -------------------------------------------------------------------------------- /src/main/java/com/lm/flowershop/controller/OutController.java: -------------------------------------------------------------------------------- 1 | package com.lm.flowershop.controller; 2 | 3 | import cn.hutool.poi.excel.ExcelUtil; 4 | import cn.hutool.poi.excel.ExcelWriter; 5 | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 6 | import com.baomidou.mybatisplus.core.metadata.IPage; 7 | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 8 | import com.lm.flowershop.common.Result; 9 | import com.lm.flowershop.entity.Outstorage; 10 | import com.lm.flowershop.entity.Putstorage; 11 | import com.lm.flowershop.service.IOutService; 12 | import com.lm.flowershop.service.IPutService; 13 | import org.springframework.web.bind.annotation.*; 14 | 15 | import javax.annotation.Resource; 16 | import javax.servlet.ServletOutputStream; 17 | import javax.servlet.http.HttpServletResponse; 18 | import java.net.URLEncoder; 19 | import java.util.List; 20 | 21 | /** 22 | * @author lm 23 | * @create 2022-03-17 16:29 24 | */ 25 | @RestController 26 | @RequestMapping("/out") 27 | public class OutController { 28 | 29 | @Resource 30 | private IOutService outService; 31 | 32 | 33 | //新增和修改 34 | @PostMapping 35 | public Result save(@RequestBody Outstorage outstorage){ 36 | //新增或者更新 37 | return Result.success(outService.saveOrUpdate(outstorage)); 38 | 39 | } 40 | //查询所有数据 41 | @GetMapping("/") 42 | public Result findAll() { 43 | return Result.success(outService.list()); 44 | } 45 | //删除数据 46 | @DeleteMapping("/{id}") 47 | public Result delete(@PathVariable Integer id){ 48 | return Result.success( outService.removeById(id)); 49 | } 50 | 51 | //批量删除 52 | @PostMapping("/del/batch") 53 | public Result deleteBatch(@RequestBody List ids){ 54 | 55 | return Result.success(outService.removeByIds(ids)); 56 | } 57 | 58 | //总收入 59 | @GetMapping("/findsum") 60 | public Result sumByToday() { 61 | return Result.success(outService.sumByToday()); 62 | } 63 | //总支付 64 | @GetMapping("/findpaid") 65 | public Result sumByPaid() { 66 | return Result.success(outService.sumByPaid()); 67 | } 68 | //销量 69 | @GetMapping("/findwholesale") 70 | public Result findwholesale() { 71 | 72 | return Result.success(outService.saleValidate()); 73 | } 74 | //分页查询——mybatis-plus的方式查询 75 | @GetMapping("/page") 76 | public Result findPage(@RequestParam(defaultValue = "") String outId, 77 | @RequestParam(defaultValue = "") String outOper, 78 | @RequestParam(defaultValue = "") String outCustomer, 79 | @RequestParam String startTime, 80 | @RequestParam String endTime, 81 | @RequestParam Integer pageNum, 82 | @RequestParam Integer pageSize 83 | 84 | ) { 85 | 86 | Page page=outService.findPage(new Page<>(pageNum,pageSize), outId,outOper,outCustomer,startTime,endTime); 87 | 88 | return Result.success(page); 89 | 90 | } 91 | @GetMapping("/page1") 92 | public Result findPage1( 93 | @RequestParam(defaultValue = "") String startTime, 94 | @RequestParam(defaultValue = "") String endTime, 95 | @RequestParam Integer pageNum, 96 | @RequestParam Integer pageSize 97 | 98 | ) { 99 | 100 | Page page=outService.findPage1(new Page<>(pageNum,pageSize),startTime,endTime); 101 | 102 | return Result.success(page); 103 | 104 | } 105 | /** 106 | * 导出接口 107 | */ 108 | @GetMapping("/export") 109 | public void export(HttpServletResponse response)throws Exception{ 110 | //从数据库查询出所有的数据 111 | List list = outService.list(); 112 | //通过工具类创建writer写出到磁盘路径 113 | //ExcelWriter writer = ExcelUtil.getWriter(filesUploadPath+ "/用户信息.xlsx"); 114 | //在内存操作,写出到浏览器 115 | ExcelWriter writer = ExcelUtil.getWriter(true); 116 | //自定义标题别名 117 | writer.addHeaderAlias("id","编号"); 118 | writer.addHeaderAlias("outId","出库单编号"); 119 | writer.addHeaderAlias("outOper","操作申请人"); 120 | writer.addHeaderAlias("outDate","出库日期"); 121 | writer.addHeaderAlias("outName","出库产品名称"); 122 | writer.addHeaderAlias("outCustomer","客户"); 123 | writer.addHeaderAlias("outSupplier","供应商"); 124 | writer.addHeaderAlias("outNum","出库数量"); 125 | writer.addHeaderAlias("outUnit","数量单位"); 126 | writer.addHeaderAlias("outPrice","单价"); 127 | writer.addHeaderAlias("outTotal","总价"); 128 | writer.addHeaderAlias("outProfit","利润"); 129 | writer.addHeaderAlias("outPaid","已付款"); 130 | writer.addHeaderAlias("status","状态"); 131 | 132 | 133 | //一次性写出list内的对象到Excel,使用默认样式,强制输出标题 134 | writer.write(list,true); 135 | //设置浏览器响应格式 136 | response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8"); 137 | String fileName = URLEncoder.encode("出库单信息","UTF-8"); 138 | response.setHeader("Content-Disposition", "attachment;filename=" + fileName + ".xlsx"); 139 | 140 | ServletOutputStream out = response.getOutputStream(); 141 | writer.flush(out,true); 142 | out.close(); 143 | writer.close(); 144 | } 145 | } 146 | 147 | 148 | -------------------------------------------------------------------------------- /src/main/java/com/lm/flowershop/controller/BuyController.java: -------------------------------------------------------------------------------- 1 | package com.lm.flowershop.controller; 2 | 3 | import cn.hutool.core.collection.CollUtil; 4 | import cn.hutool.poi.excel.ExcelReader; 5 | import cn.hutool.poi.excel.ExcelUtil; 6 | import cn.hutool.poi.excel.ExcelWriter; 7 | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 8 | import com.baomidou.mybatisplus.core.metadata.IPage; 9 | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 10 | import com.lm.flowershop.common.Result; 11 | import com.lm.flowershop.entity.Buy; 12 | import com.lm.flowershop.entity.Customer; 13 | import com.lm.flowershop.entity.Sale; 14 | import com.lm.flowershop.entity.Supplier; 15 | import com.lm.flowershop.service.IBuyService; 16 | import com.lm.flowershop.service.ISupplierService; 17 | import org.springframework.web.bind.annotation.*; 18 | import org.springframework.web.multipart.MultipartFile; 19 | 20 | import javax.annotation.Resource; 21 | import javax.servlet.ServletOutputStream; 22 | import javax.servlet.http.HttpServletResponse; 23 | import java.io.InputStream; 24 | import java.net.URLEncoder; 25 | import java.util.List; 26 | 27 | /** 28 | * @author lm 29 | * @create 2022-03-17 16:29 30 | */ 31 | @RestController 32 | @RequestMapping("/buy") 33 | public class BuyController { 34 | 35 | @Resource 36 | private IBuyService buyService; 37 | 38 | 39 | //新增和修改 40 | @PostMapping 41 | public Result save(@RequestBody Buy buy){ 42 | //新增或者更新 43 | return Result.success(buyService.saveOrUpdate(buy)); 44 | 45 | } 46 | @GetMapping("/supName/{supName}") 47 | public Result findOne(@PathVariable String buyid){ 48 | QueryWrapper queryWrapper=new QueryWrapper<>(); 49 | queryWrapper.eq("buyid",buyid); 50 | return Result.success(buyService.getOne(queryWrapper)); 51 | } 52 | 53 | //查询所有数据 54 | @GetMapping("/") 55 | public Result findAll() { 56 | return Result.success(buyService.list()); 57 | } 58 | //删除数据 59 | @DeleteMapping("/{id}") 60 | public Result delete(@PathVariable Integer id){ 61 | return Result.success( buyService.removeById(id)); 62 | } 63 | 64 | //批量删除 65 | @PostMapping("/del/batch") 66 | public Result deleteBatch(@RequestBody List ids){ 67 | return Result.success(buyService.removeByIds(ids)); 68 | } 69 | //查询已通过审核的采购申请单 70 | @GetMapping("/passbuy") 71 | public Result findPage1(@RequestParam Integer pageNum, 72 | @RequestParam Integer pageSize 73 | 74 | ) { 75 | return Result.success( 76 | buyService.findPage1(new Page<>(pageNum,pageSize))); 77 | } 78 | 79 | //分页查询——mybatis-plus的方式查询 80 | @GetMapping("/page") 81 | public Result findPage(@RequestParam(defaultValue = "") String buyid, 82 | @RequestParam(defaultValue = "") String buyApply, 83 | @RequestParam(defaultValue = "") String buyer, 84 | @RequestParam(defaultValue = "") String buyName, 85 | @RequestParam(defaultValue = "") String buyStatus, 86 | @RequestParam String startTime, 87 | @RequestParam String endTime, 88 | @RequestParam Integer pageNum, 89 | @RequestParam Integer pageSize 90 | ) { 91 | 92 | Page page=buyService.findPage(new Page<>(pageNum,pageSize), buyid,buyApply,buyer,buyName,buyStatus,startTime,endTime); 93 | 94 | return Result.success(page); 95 | } 96 | /** 97 | * 导出接口 98 | */ 99 | @GetMapping("/export") 100 | public void export(HttpServletResponse response)throws Exception{ 101 | //从数据库查询出所有的数据 102 | List list = buyService.list(); 103 | //通过工具类创建writer写出到磁盘路径 104 | //ExcelWriter writer = ExcelUtil.getWriter(filesUploadPath+ "/用户信息.xlsx"); 105 | //在内存操作,写出到浏览器 106 | ExcelWriter writer = ExcelUtil.getWriter(true); 107 | //自定义标题别名 108 | writer.addHeaderAlias("id","编号"); 109 | writer.addHeaderAlias("buyid","采购单号"); 110 | writer.addHeaderAlias("buyDate","采购日期"); 111 | writer.addHeaderAlias("buyApply","申请人"); 112 | writer.addHeaderAlias("buyer","采购人"); 113 | writer.addHeaderAlias("buyName","供应商"); 114 | writer.addHeaderAlias("buySupplier","采购数量"); 115 | writer.addHeaderAlias("buyCount","数量单位"); 116 | writer.addHeaderAlias("buyUnit","单价"); 117 | writer.addHeaderAlias("buyPrice","类别"); 118 | writer.addHeaderAlias("buyStatus","审核状态"); 119 | writer.addHeaderAlias("reviewer","审核人"); 120 | writer.addHeaderAlias("reviewdate","审核日期"); 121 | writer.addHeaderAlias("remarks","审核备注"); 122 | 123 | 124 | 125 | //一次性写出list内的对象到Excel,使用默认样式,强制输出标题 126 | writer.write(list,true); 127 | //设置浏览器响应格式 128 | response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8"); 129 | String fileName = URLEncoder.encode("采购申请单信息","UTF-8"); 130 | response.setHeader("Content-Disposition", "attachment;filename=" + fileName + ".xlsx"); 131 | 132 | ServletOutputStream out = response.getOutputStream(); 133 | writer.flush(out,true); 134 | out.close(); 135 | writer.close(); 136 | }} 137 | 138 | 139 | -------------------------------------------------------------------------------- /flower/src/views/Home.vue: -------------------------------------------------------------------------------- 1 | 52 | 53 | 203 | 204 | -------------------------------------------------------------------------------- /src/main/java/com/lm/flowershop/controller/SaleController.java: -------------------------------------------------------------------------------- 1 | package com.lm.flowershop.controller; 2 | 3 | import cn.hutool.poi.excel.ExcelUtil; 4 | import cn.hutool.poi.excel.ExcelWriter; 5 | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 6 | import com.baomidou.mybatisplus.core.metadata.IPage; 7 | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 8 | import com.lm.flowershop.common.Result; 9 | import com.lm.flowershop.entity.Buy; 10 | import com.lm.flowershop.entity.Product; 11 | import com.lm.flowershop.entity.Putstorage; 12 | import com.lm.flowershop.entity.Sale; 13 | import com.lm.flowershop.mapper.SaleMapper; 14 | import com.lm.flowershop.service.IBuyService; 15 | import com.lm.flowershop.service.ISaleService; 16 | import org.springframework.web.bind.annotation.*; 17 | 18 | import javax.annotation.Resource; 19 | import javax.servlet.ServletOutputStream; 20 | import javax.servlet.http.HttpServletResponse; 21 | import java.net.URLEncoder; 22 | import java.util.Date; 23 | import java.util.List; 24 | 25 | /** 26 | * @author lm 27 | * @create 2022-03-17 16:29 28 | */ 29 | @RestController 30 | @RequestMapping("/sale") 31 | public class SaleController { 32 | 33 | @Resource 34 | private ISaleService saleService; 35 | 36 | 37 | //新增和修改 38 | @PostMapping 39 | public Result save(@RequestBody Sale sale){ 40 | //新增或者更新 41 | return Result.success(saleService.saveOrUpdate(sale)); 42 | 43 | } 44 | @PostMapping("/") 45 | public Result update(@RequestBody Sale sale){ 46 | //新增或者更新 47 | return Result.success(saleService.updateById(sale)); 48 | 49 | } 50 | //查询所有数据 51 | @GetMapping("/") 52 | public Result findAll() { 53 | return Result.success(saleService.list()); 54 | } 55 | //删除数据 56 | @DeleteMapping("/{id}") 57 | public Result delete(@PathVariable Integer id){ 58 | return Result.success( saleService.removeById(id)); 59 | } 60 | 61 | //批量删除 62 | @PostMapping("/del/batch") 63 | public Result deleteBatch(@RequestBody List ids){ 64 | 65 | return Result.success(saleService.removeByIds(ids)); 66 | } 67 | 68 | //查询身份为销售员的用户 69 | @GetMapping("/passsale") 70 | public Result findPage2(@RequestParam Integer pageNum, 71 | @RequestParam Integer pageSize 72 | 73 | ) { 74 | return Result.success( 75 | saleService.findPage2(new Page<>(pageNum,pageSize))); 76 | } 77 | //分页查询——mybatis-plus的方式查询 78 | @GetMapping("/page") 79 | public Result findPage(@RequestParam(defaultValue = "") String saleId, 80 | @RequestParam Integer pageNum, 81 | @RequestParam Integer pageSize 82 | 83 | ) { 84 | 85 | Page page=saleService.findPage(new Page<>(pageNum,pageSize), saleId); 86 | 87 | return Result.success(page); 88 | 89 | } 90 | //分页查询——mybatis-plus的方式查询 91 | @GetMapping("/page1") 92 | public Result findPage1(@RequestParam(defaultValue = "") String saleId, 93 | @RequestParam(defaultValue = "") String saler, 94 | @RequestParam(defaultValue = "") String reviewer, 95 | @RequestParam(defaultValue = "") String results, 96 | @RequestParam String startTime, 97 | @RequestParam String endTime, 98 | @RequestParam Integer pageNum, 99 | @RequestParam Integer pageSize 100 | 101 | ) { 102 | 103 | Page page=saleService.findPage1(new Page<>(pageNum,pageSize), saleId,saler,reviewer,results,startTime,endTime); 104 | 105 | return Result.success(page); 106 | 107 | } 108 | /** 109 | * 导出接口 110 | */ 111 | @GetMapping("/export") 112 | public void export(HttpServletResponse response)throws Exception{ 113 | //从数据库查询出所有的数据 114 | List list = saleService.list(); 115 | //通过工具类创建writer写出到磁盘路径 116 | //ExcelWriter writer = ExcelUtil.getWriter(filesUploadPath+ "/用户信息.xlsx"); 117 | //在内存操作,写出到浏览器 118 | ExcelWriter writer = ExcelUtil.getWriter(true); 119 | //自定义标题别名 120 | writer.addHeaderAlias("id","编号"); 121 | writer.addHeaderAlias("saleId","出库通知单编号"); 122 | writer.addHeaderAlias("saler","申请人"); 123 | writer.addHeaderAlias("saleDate","出库申请日期"); 124 | writer.addHeaderAlias("saleName","出库产品名称"); 125 | writer.addHeaderAlias("saleSupplier","供应商"); 126 | writer.addHeaderAlias("saleNum","出库数量"); 127 | writer.addHeaderAlias("saleUnit","数量单位"); 128 | writer.addHeaderAlias("salePrice","单价"); 129 | writer.addHeaderAlias("saleTotal","总价"); 130 | writer.addHeaderAlias("salePaid","已付款"); 131 | writer.addHeaderAlias("remarks","审核人备注"); 132 | writer.addHeaderAlias("reviewer","审核人"); 133 | writer.addHeaderAlias("results","审核结果"); 134 | writer.addHeaderAlias("reviewdate","审核日期"); 135 | writer.addHeaderAlias("applynote","申请人备注"); 136 | 137 | 138 | 139 | //一次性写出list内的对象到Excel,使用默认样式,强制输出标题 140 | writer.write(list,true); 141 | //设置浏览器响应格式 142 | response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8"); 143 | String fileName = URLEncoder.encode("出库通知单信息","UTF-8"); 144 | response.setHeader("Content-Disposition", "attachment;filename=" + fileName + ".xlsx"); 145 | 146 | ServletOutputStream out = response.getOutputStream(); 147 | writer.flush(out,true); 148 | out.close(); 149 | writer.close(); 150 | } 151 | 152 | } 153 | 154 | 155 | 156 | 157 | 158 | -------------------------------------------------------------------------------- /src/main/java/com/lm/flowershop/controller/ManagerController.java: -------------------------------------------------------------------------------- 1 | package com.lm.flowershop.controller; 2 | 3 | import cn.hutool.core.collection.CollUtil; 4 | import cn.hutool.core.util.StrUtil; 5 | import cn.hutool.poi.excel.ExcelReader; 6 | import cn.hutool.poi.excel.ExcelUtil; 7 | import cn.hutool.poi.excel.ExcelWriter; 8 | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 9 | import com.baomidou.mybatisplus.core.metadata.IPage; 10 | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 11 | import com.lm.flowershop.common.Constants; 12 | import com.lm.flowershop.common.Result; 13 | import com.lm.flowershop.controller.dto.ManagerDTO; 14 | import com.lm.flowershop.controller.dto.UserPasswordDTO; 15 | import com.lm.flowershop.entity.Files; 16 | import com.lm.flowershop.entity.Manager; 17 | import com.lm.flowershop.mapper.FileMapper; 18 | import com.lm.flowershop.mapper.ManagerMapper; 19 | import com.lm.flowershop.service.IManagerService; 20 | import org.springframework.web.bind.annotation.*; 21 | import org.springframework.web.multipart.MultipartFile; 22 | 23 | import javax.annotation.Resource; 24 | import javax.servlet.ServletOutputStream; 25 | import javax.servlet.http.HttpServletResponse; 26 | import java.io.InputStream; 27 | import java.net.URLEncoder; 28 | import java.util.List; 29 | 30 | /** 31 | * @author lm 32 | * @create 2022-03-17 16:29 33 | */ 34 | @RestController 35 | @RequestMapping("/manager") 36 | public class ManagerController { 37 | 38 | @Resource 39 | private IManagerService managerService; 40 | @Resource 41 | private ManagerMapper managerMapper; 42 | 43 | @PostMapping("/login") 44 | public Result login(@RequestBody ManagerDTO managerDTO){ 45 | String adname=managerDTO.getAdname(); 46 | String adpwd=managerDTO.getAdpwd(); 47 | if (StrUtil.isBlank(adname) || StrUtil.isBlank(adpwd)){ 48 | return Result.error(Constants.CODE_400,"参数错误"); 49 | } 50 | ManagerDTO dto = managerService.login(managerDTO); 51 | return Result.success(dto); 52 | 53 | } 54 | //修改密码 55 | @PostMapping("/password") 56 | public Result password(@RequestBody UserPasswordDTO userPasswordDTO) { 57 | managerService.updatePassword(userPasswordDTO); 58 | return Result.success(); 59 | } 60 | //新增和修改 61 | @PostMapping 62 | public Result save(@RequestBody Manager manager){ 63 | //新增或者更新 64 | return Result.success(managerService.saveOrUpdate(manager)); 65 | 66 | } 67 | @GetMapping("/adname/{adname}") 68 | public Result findOne(@PathVariable String adname){ 69 | QueryWrapper queryWrapper=new QueryWrapper<>(); 70 | queryWrapper.eq("adname",adname); 71 | return Result.success(managerService.getOne(queryWrapper)); 72 | } 73 | 74 | //查询所有数据 75 | @GetMapping("/") 76 | public Result findAll() { 77 | return Result.success(managerService.list()); 78 | } 79 | 80 | 81 | 82 | //查询身份为采购员的用户 83 | @GetMapping("/flagisbuy") 84 | public Result findPage(@RequestParam Integer pageNum, 85 | @RequestParam Integer pageSize 86 | 87 | ) { 88 | return Result.success( 89 | managerService.findPage(new Page<>(pageNum,pageSize))); 90 | } 91 | 92 | //查询身份为管理员的用户 93 | @GetMapping("/flagisadmin") 94 | public Result findPage1(@RequestParam Integer pageNum, 95 | @RequestParam Integer pageSize 96 | 97 | ) { 98 | return Result.success( 99 | managerService.findPage1(new Page<>(pageNum,pageSize))); 100 | } 101 | //查询身份为销售员的用户 102 | @GetMapping("/flagissale") 103 | public Result findPage2(@RequestParam Integer pageNum, 104 | @RequestParam Integer pageSize 105 | 106 | ) { 107 | return Result.success( 108 | managerService.findPage2(new Page<>(pageNum,pageSize))); 109 | } 110 | //新增和修改 111 | @PostMapping("/update") 112 | public Result update(@RequestBody Manager manager){ 113 | //新增或者更新 114 | return Result.success(managerMapper.updateById(manager)); 115 | 116 | } 117 | //删除数据 118 | @DeleteMapping("/{adid}") 119 | public Result delete(@PathVariable Integer adid){ 120 | Manager manager= managerMapper.selectById(adid); 121 | manager.setIsDelete(true); 122 | managerMapper.updateById(manager); 123 | return Result.success(); 124 | } 125 | 126 | 127 | //分页查询——mybatis-plus的方式查询 128 | @GetMapping("/page") 129 | public Result findPage(@RequestParam Integer pageNum, 130 | @RequestParam Integer pageSize, 131 | @RequestParam(defaultValue = "") String adname 132 | 133 | 134 | ) { 135 | QueryWrapper queryWrapper=new QueryWrapper<>(); 136 | //查询未删除的记录 137 | queryWrapper.eq("is_delete",false); 138 | queryWrapper.orderByDesc("adid"); 139 | 140 | if (!"".equals(adname)){ 141 | queryWrapper.like("adname",adname); 142 | } 143 | return Result.success(managerMapper.selectPage(new Page<>(pageNum,pageSize),queryWrapper)); 144 | } 145 | //分页查询 146 | //接口路径:/user/page?pageNum=1&pageSize=10 147 | //@RequestParam接收 148 | // @GetMapping("/page") 149 | // public Map findPage(@RequestParam Integer pageNum, 150 | // @RequestParam Integer pageSize, 151 | // @RequestParam String adName) { 152 | // pageNum = (pageNum - 1) * pageSize; 153 | // List data=managerMapper.selectpage(pageNum,pageSize,adName); 154 | // Integer total=managerMapper.selectTotal(adName); 155 | // Map res=new HashMap<>(); 156 | // res.put("data",data); 157 | // res.put("total",total); 158 | // return res; 159 | // } 160 | 161 | 162 | } 163 | -------------------------------------------------------------------------------- /src/main/java/com/lm/flowershop/controller/FileController.java: -------------------------------------------------------------------------------- 1 | package com.lm.flowershop.controller; 2 | 3 | /** 4 | * @author lm 5 | * @create 2022-03-23 17:17 6 | */ 7 | 8 | import cn.hutool.core.io.FileUtil; 9 | import cn.hutool.core.util.IdUtil; 10 | import cn.hutool.core.util.StrUtil; 11 | import cn.hutool.crypto.SecureUtil; 12 | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 13 | import com.baomidou.mybatisplus.core.metadata.IPage; 14 | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 15 | import com.lm.flowershop.common.Result; 16 | import com.lm.flowershop.entity.Files; 17 | import com.lm.flowershop.entity.Manager; 18 | import com.lm.flowershop.mapper.FileMapper; 19 | import org.springframework.beans.factory.annotation.Value; 20 | import org.springframework.web.bind.annotation.*; 21 | import org.springframework.web.multipart.MultipartFile; 22 | 23 | import javax.annotation.Resource; 24 | import javax.servlet.ServletOutputStream; 25 | import javax.servlet.http.HttpServletResponse; 26 | import java.io.File; 27 | import java.io.IOException; 28 | import java.net.URLEncoder; 29 | import java.util.List; 30 | 31 | /** 32 | * 文件上传相关接口 33 | */ 34 | @RestController 35 | @RequestMapping("/file") 36 | public class FileController { 37 | @Value("${files.upload.path}") 38 | private String fileUploadPath; 39 | @Resource 40 | private FileMapper fileMapper; 41 | @PostMapping("/upload") 42 | public String upload(@RequestParam MultipartFile file) throws IOException { 43 | String originalFilename=file.getOriginalFilename(); 44 | String type= FileUtil.extName(originalFilename); 45 | long size= file.getSize(); 46 | 47 | //定义一个文件唯一的标识码 48 | String uuid= IdUtil.fastSimpleUUID(); 49 | String fileUUID=uuid + StrUtil.DOT + type; 50 | File uploadFile=new File(fileUploadPath + fileUUID); 51 | //判断配置的文件目录是否存在,若不存在则创建一个新的文件目录 52 | File parentFile=uploadFile.getParentFile(); 53 | if(!parentFile.exists()){ 54 | parentFile.mkdirs(); 55 | } 56 | 57 | String url; 58 | //上传文件到磁盘 59 | file.transferTo(uploadFile); 60 | //获取文件的md5 61 | String md5=SecureUtil.md5(uploadFile); 62 | //从数据库查询是否存在相同的记录 63 | Files dbFiles= getFileByMd5(md5); 64 | if (dbFiles != null){ 65 | url=dbFiles.getUrl(); 66 | //由于文件已存在,所以删除刚才上传的重复文件 67 | uploadFile.delete(); 68 | }else { 69 | //数据库若不存在重复文件,则不删除刚才上传的文件 70 | url="http://localhost:9090/file/" + fileUUID; 71 | } 72 | 73 | //存储数据库 74 | Files saveFile = new Files(); 75 | saveFile.setName(originalFilename); 76 | saveFile.setType(type); 77 | saveFile.setSize(size/1024); 78 | saveFile.setUrl(url); 79 | saveFile.setMd5(md5); 80 | fileMapper.insert(saveFile); 81 | return url; 82 | } 83 | 84 | /** 85 | * 文件下载接口 http://localhost:9090/file/{fileUUID}; 86 | * @param fileUUID 87 | * @param response 88 | * @throws IOException 89 | */ 90 | @GetMapping("/{fileUUID}") 91 | public void download(@PathVariable String fileUUID,HttpServletResponse response) throws IOException { 92 | //根据文件的唯一标识码获取文件 93 | File uploadFile=new File(fileUploadPath + fileUUID); 94 | //设置输出流的格式 95 | ServletOutputStream os=response.getOutputStream(); 96 | response.addHeader("Content-Disposition","attachment;filename=" + URLEncoder.encode(fileUUID,"UTF-8")); 97 | response.setContentType("application/octet-stream"); 98 | 99 | //读取文件的字节流 100 | os.write(FileUtil.readBytes(uploadFile)); 101 | os.flush(); 102 | os.close(); 103 | 104 | } 105 | 106 | /** 107 | * 通过文件的md5查询文件 108 | * @param md5 109 | * @return 110 | */ 111 | private Files getFileByMd5(String md5){ 112 | //查询文件的md5是否存在 113 | QueryWrapper queryWrapper= new QueryWrapper<>(); 114 | queryWrapper.eq("md5",md5); 115 | List filesList=fileMapper.selectList(queryWrapper); 116 | return filesList.size() == 0 ? null : filesList.get(0); 117 | 118 | } 119 | 120 | //新增和修改 121 | @PostMapping("/update") 122 | public Result update(@RequestBody Files files){ 123 | //新增或者更新 124 | return Result.success(fileMapper.updateById(files)); 125 | 126 | } 127 | //删除数据 128 | @DeleteMapping("/{id}") 129 | public Result delete(@PathVariable Integer id){ 130 | Files files=fileMapper.selectById(id); 131 | files.setIsDelete(true); 132 | fileMapper.updateById(files); 133 | return Result.success(); 134 | } 135 | 136 | //批量删除 137 | @PostMapping("/del/batch") 138 | public Result deleteBatch(@RequestBody List ids){ 139 | //select * from sys_file where id in (id,id,id...) 140 | QueryWrapper queryWrapper=new QueryWrapper<>(); 141 | queryWrapper.in("id",ids); 142 | List files=fileMapper.selectList(queryWrapper); 143 | for (Files file : files){ 144 | file.setIsDelete(true); 145 | fileMapper.updateById(file); 146 | } 147 | return Result.success(); 148 | } 149 | //分页查询——mybatis-plus的方式查询 150 | @GetMapping("/page") 151 | public Result findPage(@RequestParam Integer pageNum, 152 | @RequestParam Integer pageSize, 153 | @RequestParam(defaultValue = "") String name 154 | 155 | 156 | ) { 157 | QueryWrapper queryWrapper=new QueryWrapper<>(); 158 | //查询未删除的记录 159 | queryWrapper.eq("is_delete",false); 160 | queryWrapper.orderByDesc("id"); 161 | 162 | if (!"".equals(name)){ 163 | queryWrapper.like("name",name); 164 | } 165 | return Result.success(fileMapper.selectPage(new Page<>(pageNum,pageSize),queryWrapper)); 166 | } 167 | 168 | } 169 | -------------------------------------------------------------------------------- /flower/src/views/File.vue: -------------------------------------------------------------------------------- 1 | 84 | 85 | 179 | 180 | -------------------------------------------------------------------------------- /src/main/java/com/lm/flowershop/controller/CustomerController.java: -------------------------------------------------------------------------------- 1 | package com.lm.flowershop.controller; 2 | 3 | import cn.hutool.core.collection.CollUtil; 4 | import cn.hutool.core.date.DateUtil; 5 | import cn.hutool.core.date.Quarter; 6 | import cn.hutool.poi.excel.ExcelReader; 7 | import cn.hutool.poi.excel.ExcelUtil; 8 | import cn.hutool.poi.excel.ExcelWriter; 9 | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 10 | import com.baomidou.mybatisplus.core.metadata.IPage; 11 | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 12 | import com.lm.flowershop.common.Result; 13 | import com.lm.flowershop.entity.Customer; 14 | import com.lm.flowershop.entity.Manager; 15 | import com.lm.flowershop.entity.Product; 16 | import com.lm.flowershop.entity.Supplier; 17 | import com.lm.flowershop.service.ICustomerService; 18 | import com.lm.flowershop.service.IProductService; 19 | import org.springframework.web.bind.annotation.*; 20 | import org.springframework.web.multipart.MultipartFile; 21 | 22 | import javax.annotation.Resource; 23 | import javax.servlet.ServletOutputStream; 24 | import javax.servlet.http.HttpServletResponse; 25 | import java.io.InputStream; 26 | import java.net.URLEncoder; 27 | import java.util.Date; 28 | import java.util.List; 29 | 30 | /** 31 | * @author lm 32 | * @create 2022-03-30 15:38 33 | */ 34 | @RestController 35 | @RequestMapping("/customer") 36 | public class CustomerController { 37 | @Resource 38 | private ICustomerService customerService; 39 | 40 | // 新增或者更新 41 | @PostMapping 42 | public Result save(@RequestBody Customer customer) { 43 | customerService.saveOrUpdate(customer); 44 | return Result.success(); 45 | } 46 | 47 | @DeleteMapping("/{id}") 48 | public Result delete(@PathVariable Integer id) { 49 | customerService.removeById(id); 50 | return Result.success(); 51 | } 52 | 53 | @PostMapping("/del/batch") 54 | public Result deleteBatch(@RequestBody List ids) { 55 | customerService.removeByIds(ids); 56 | return Result.success(); 57 | } 58 | 59 | @GetMapping 60 | public Result findAll() { 61 | 62 | return Result.success(customerService.list()); 63 | } 64 | @GetMapping("/findsale") 65 | public Result findsale() { 66 | 67 | return Result.success(customerService.nameValidate()); 68 | } 69 | @GetMapping("/findwholesale") 70 | public Result findwholesale() { 71 | 72 | return Result.success(customerService.saleValidate()); 73 | } 74 | @GetMapping("/{id}") 75 | public Result findOne(@PathVariable Integer id) { 76 | return Result.success(customerService.getById(id)); 77 | } 78 | //分页查询——mybatis-plus的方式查询 79 | @GetMapping("/page") 80 | public Result findPage(@RequestParam Integer pageNum, 81 | @RequestParam Integer pageSize, 82 | @RequestParam(defaultValue = "") String cusName, 83 | @RequestParam(defaultValue = "") String cusPhone, 84 | @RequestParam(defaultValue = "") String cusSort 85 | 86 | 87 | 88 | ) { 89 | IPage page=new Page<>(pageNum,pageSize); 90 | QueryWrapper queryWrapper=new QueryWrapper<>(); 91 | if (!"".equals(cusName)){ 92 | queryWrapper.like("cus_name",cusName); 93 | } 94 | if (!"".equals(cusPhone)){ 95 | queryWrapper.like("cus_phone",cusPhone); 96 | } 97 | if (!"".equals(cusSort)){ 98 | queryWrapper.like("cus_sort",cusSort); 99 | } 100 | queryWrapper.orderByDesc("id"); 101 | return Result.success(customerService.page(page,queryWrapper)); 102 | } 103 | /** 104 | * 导出接口 105 | */ 106 | @GetMapping("/export") 107 | public void export(HttpServletResponse response)throws Exception{ 108 | //从数据库查询出所有的数据 109 | List list = customerService.list(); 110 | //通过工具类创建writer写出到磁盘路径 111 | //ExcelWriter writer = ExcelUtil.getWriter(filesUploadPath+ "/用户信息.xlsx"); 112 | //在内存操作,写出到浏览器 113 | ExcelWriter writer = ExcelUtil.getWriter(true); 114 | //自定义标题别名 115 | writer.addHeaderAlias("id","客户编号"); 116 | writer.addHeaderAlias("cusName","名称"); 117 | writer.addHeaderAlias("cusSort","类别"); 118 | writer.addHeaderAlias("cusPhone","联系方式"); 119 | writer.addHeaderAlias("cusAddress","地址"); 120 | writer.addHeaderAlias("cusCost","总花费"); 121 | writer.addHeaderAlias("cusPay","总支付"); 122 | 123 | 124 | //一次性写出list内的对象到Excel,使用默认样式,强制输出标题 125 | writer.write(list,true); 126 | //设置浏览器响应格式 127 | response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8"); 128 | String fileName = URLEncoder.encode("客户信息","UTF-8"); 129 | response.setHeader("Content-Disposition", "attachment;filename=" + fileName + ".xlsx"); 130 | 131 | ServletOutputStream out = response.getOutputStream(); 132 | writer.flush(out,true); 133 | out.close(); 134 | writer.close(); 135 | } 136 | /** 137 | * excel 导入 138 | * @param file 139 | * @throws Exception 140 | */ 141 | @PostMapping("/import") 142 | public Result imp(MultipartFile file) throws Exception{ 143 | InputStream inputStream = file.getInputStream(); 144 | ExcelReader reader = ExcelUtil.getReader(inputStream); 145 | //方式一:通过javabean的方式读取Excel内的对象,但是要求表头必须是英文,跟Javabean的属性要对应起来。 146 | //List list = reader.readAll(Manager.class); 147 | 148 | //方式二:忽略表头的中文,直接读取表的内容 149 | List> list = reader.read(1); 150 | List customers = CollUtil.newArrayList(); 151 | for (List row : list){ 152 | Customer customer=new Customer(); 153 | customer.setCusName(row.get(0).toString()); 154 | customer.setCusSort(row.get(1).toString()); 155 | customer.setCusPhone(row.get(2).toString()); 156 | customer.setCusAddress(row.get(3).toString()); 157 | customer.setCusCost(row.get(4).toString()); 158 | customer.setCusPay(row.get(5).toString()); 159 | customers.add(customer); 160 | } 161 | customerService.saveBatch(customers);//插入数据库 162 | return Result.success(true); 163 | 164 | } 165 | } 166 | 167 | -------------------------------------------------------------------------------- /src/main/java/com/lm/flowershop/controller/SupplierController.java: -------------------------------------------------------------------------------- 1 | package com.lm.flowershop.controller; 2 | 3 | import cn.hutool.core.collection.CollUtil; 4 | import cn.hutool.core.util.StrUtil; 5 | import cn.hutool.poi.excel.ExcelReader; 6 | import cn.hutool.poi.excel.ExcelUtil; 7 | import cn.hutool.poi.excel.ExcelWriter; 8 | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 9 | import com.baomidou.mybatisplus.core.metadata.IPage; 10 | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 11 | import com.lm.flowershop.common.Constants; 12 | import com.lm.flowershop.common.Result; 13 | import com.lm.flowershop.controller.dto.ManagerDTO; 14 | import com.lm.flowershop.entity.Manager; 15 | import com.lm.flowershop.entity.Supplier; 16 | import com.lm.flowershop.service.IManagerService; 17 | import com.lm.flowershop.service.ISupplierService; 18 | import org.springframework.web.bind.annotation.*; 19 | import org.springframework.web.multipart.MultipartFile; 20 | 21 | import javax.annotation.Resource; 22 | import javax.servlet.ServletOutputStream; 23 | import javax.servlet.http.HttpServletResponse; 24 | import java.io.InputStream; 25 | import java.net.URLEncoder; 26 | import java.util.List; 27 | 28 | /** 29 | * @author lm 30 | * @create 2022-03-17 16:29 31 | */ 32 | @RestController 33 | @RequestMapping("/supplier") 34 | public class SupplierController { 35 | 36 | @Resource 37 | private ISupplierService supplierService; 38 | 39 | 40 | //新增和修改 41 | @PostMapping 42 | public Result save(@RequestBody Supplier supplier){ 43 | //新增或者更新 44 | return Result.success(supplierService.saveOrUpdate(supplier)); 45 | 46 | } 47 | @GetMapping("/supName/{supName}") 48 | public Result findOne(@PathVariable String supName){ 49 | QueryWrapper queryWrapper=new QueryWrapper<>(); 50 | queryWrapper.eq("supName",supName); 51 | return Result.success(supplierService.getOne(queryWrapper)); 52 | } 53 | 54 | //查询所有数据 55 | @GetMapping("/") 56 | public Result findAll() { 57 | return Result.success(supplierService.list()); 58 | } 59 | //删除数据 60 | @DeleteMapping("/{id}") 61 | public Result delete(@PathVariable Integer id){ 62 | return Result.success( supplierService.removeById(id)); 63 | } 64 | 65 | //批量删除 66 | @PostMapping("/del/batch") 67 | public Result deleteBatch(@RequestBody List ids){ 68 | 69 | return Result.success(supplierService.removeByIds(ids)); 70 | } 71 | 72 | 73 | //分页查询——mybatis-plus的方式查询 74 | @GetMapping("/page") 75 | public Result findPage(@RequestParam(defaultValue = "") String name, 76 | @RequestParam(defaultValue = "") String smanager, 77 | @RequestParam Integer pageNum, 78 | @RequestParam Integer pageSize 79 | 80 | ) { 81 | 82 | IPage page=new Page<>(pageNum,pageSize); 83 | QueryWrapper queryWrapper=new QueryWrapper<>(); 84 | if (!"".equals(name)){ 85 | queryWrapper.like("name",name); 86 | } 87 | if (!"".equals(smanager)){ 88 | queryWrapper.like("smanager",smanager); 89 | } 90 | queryWrapper.orderByDesc("id"); 91 | return Result.success(supplierService.page(page,queryWrapper)); 92 | } 93 | 94 | //分页查询 95 | //接口路径:/user/page?pageNum=1&pageSize=10 96 | //@RequestParam接收 97 | // @GetMapping("/page") 98 | // public Map findPage(@RequestParam Integer pageNum, 99 | // @RequestParam Integer pageSize, 100 | // @RequestParam String adName) { 101 | // pageNum = (pageNum - 1) * pageSize; 102 | // List data=managerMapper.selectpage(pageNum,pageSize,adName); 103 | // Integer total=managerMapper.selectTotal(adName); 104 | // Map res=new HashMap<>(); 105 | // res.put("data",data); 106 | // res.put("total",total); 107 | // return res; 108 | // } 109 | 110 | /** 111 | * 导出接口 112 | */ 113 | @GetMapping("/export") 114 | public void export(HttpServletResponse response)throws Exception{ 115 | //从数据库查询出所有的数据 116 | List list = supplierService.list(); 117 | //通过工具类创建writer写出到磁盘路径 118 | //ExcelWriter writer = ExcelUtil.getWriter(filesUploadPath+ "/用户信息.xlsx"); 119 | //在内存操作,写出到浏览器 120 | ExcelWriter writer = ExcelUtil.getWriter(true); 121 | //自定义标题别名 122 | writer.addHeaderAlias("id","供应商编号"); 123 | writer.addHeaderAlias("name","供应商名称"); 124 | writer.addHeaderAlias("smanager","负责人"); 125 | writer.addHeaderAlias("supPhone","联系方式"); 126 | writer.addHeaderAlias("supAddress","地址"); 127 | 128 | //一次性写出list内的对象到Excel,使用默认样式,强制输出标题 129 | writer.write(list,true); 130 | //设置浏览器响应格式 131 | response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8"); 132 | String fileName = URLEncoder.encode("供应商信息","UTF-8"); 133 | response.setHeader("Content-Disposition", "attachment;filename=" + fileName + ".xlsx"); 134 | 135 | ServletOutputStream out = response.getOutputStream(); 136 | writer.flush(out,true); 137 | out.close(); 138 | writer.close(); 139 | } 140 | /** 141 | * excel 导入 142 | * @param file 143 | * @throws Exception 144 | */ 145 | @PostMapping("/import") 146 | public Result imp(MultipartFile file) throws Exception{ 147 | InputStream inputStream = file.getInputStream(); 148 | ExcelReader reader = ExcelUtil.getReader(inputStream); 149 | //方式一:通过javabean的方式读取Excel内的对象,但是要求表头必须是英文,跟Javabean的属性要对应起来。 150 | //List list = reader.readAll(Manager.class); 151 | 152 | //方式二:忽略表头的中文,直接读取表的内容 153 | List> list = reader.read(1); 154 | List suppliers = CollUtil.newArrayList(); 155 | for (List row : list){ 156 | Supplier supplier=new Supplier(); 157 | supplier.setName(row.get(0).toString()); 158 | supplier.setSmanager(row.get(1).toString()); 159 | supplier.setSupPhone(row.get(2).toString()); 160 | supplier.setSupAddress(row.get(3).toString()); 161 | suppliers.add(supplier); 162 | 163 | } 164 | supplierService.saveBatch(suppliers);//插入数据库 165 | return Result.success(true); 166 | 167 | } 168 | } 169 | --------------------------------------------------------------------------------