Merge pull request '王佳龙1' (#9) from 王佳龙 into main

main
pcygfhfke 4 months ago
commit 6e4aac4952

@ -0,0 +1,37 @@
HELP.md
target/
!.mvn/wrapper/maven-wrapper.jar
!**/src/main/**/target/
!**/src/test/**/target
/.mvn/
### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache
### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr
*.log
*.jar
### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/
build/
!**/src/main/**/build/
!**/src/test/**/build/
### VS Code ###
.vscode/

@ -0,0 +1,554 @@
/*
Navicat Premium Data Transfer
Source Server : local
Source Server Type : MySQL
Source Server Version : 80029 (8.0.29)
Source Host : localhost:3306
Source Schema : db_market
Target Server Type : MySQL
Target Server Version : 80029 (8.0.29)
File Encoding : 65001
Date: 09/09/2024 08:11:51
*/
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for department
-- ----------------------------
DROP TABLE IF EXISTS `department`;
CREATE TABLE `department` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
`name` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8_bin DEFAULT NULL COMMENT '部门名称',
`info` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8_bin DEFAULT NULL COMMENT '描述',
`state` char(2) CHARACTER SET utf8mb3 COLLATE utf8_bin DEFAULT NULL COMMENT '状态',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8mb3 COLLATE=utf8_bin ROW_FORMAT=COMPACT;
-- ----------------------------
-- Records of department
-- ----------------------------
BEGIN;
INSERT INTO `department` (`id`, `name`, `info`, `state`) VALUES (8, '销售部', '销售部门', '0');
COMMIT;
-- ----------------------------
-- Table structure for detail_sale_records
-- ----------------------------
DROP TABLE IF EXISTS `detail_sale_records`;
CREATE TABLE `detail_sale_records` (
`sell_cn` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8_bin NOT NULL COMMENT '销售订单号',
`goods_id` bigint NOT NULL COMMENT '商品编号',
`goods_num` bigint NOT NULL COMMENT '商品数量',
`goods_price` double(10,2) NOT NULL COMMENT '销售单价',
`goods_name` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8_bin DEFAULT NULL COMMENT '商品名'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8_bin ROW_FORMAT=COMPACT;
-- ----------------------------
-- Records of detail_sale_records
-- ----------------------------
BEGIN;
INSERT INTO `detail_sale_records` (`sell_cn`, `goods_id`, `goods_num`, `goods_price`, `goods_name`) VALUES ('1701213155180429314', 7, 1, 120.00, '运动鞋');
INSERT INTO `detail_sale_records` (`sell_cn`, `goods_id`, `goods_num`, `goods_price`, `goods_name`) VALUES ('1701220094014722049', 9, 1, 350.00, '桌椅套装');
COMMIT;
-- ----------------------------
-- Table structure for employee
-- ----------------------------
DROP TABLE IF EXISTS `employee`;
CREATE TABLE `employee` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
`phone` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8_bin DEFAULT NULL COMMENT '用户名',
`email` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8_bin DEFAULT NULL COMMENT '邮箱',
`address` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8_bin DEFAULT NULL COMMENT '住址',
`sex` char(1) CHARACTER SET utf8mb3 COLLATE utf8_bin DEFAULT NULL COMMENT '性别',
`password` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8_bin DEFAULT NULL COMMENT '密码',
`nick_name` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8_bin DEFAULT NULL COMMENT '昵称',
`head_img` longtext CHARACTER SET utf8mb3 COLLATE utf8_bin COMMENT '头像',
`state` varchar(1) CHARACTER SET utf8mb3 COLLATE utf8_bin DEFAULT NULL COMMENT '状态 0在职 1离职',
`isAdmin` bit(1) DEFAULT NULL COMMENT '是否是超管 1:是 0不是',
`info` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8_bin DEFAULT NULL COMMENT '描述',
`createby` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8_bin DEFAULT NULL COMMENT '创建者',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`age` int DEFAULT NULL COMMENT '年龄',
`deptId` bigint DEFAULT NULL COMMENT '部门主键',
`id_card` varchar(18) CHARACTER SET utf8mb3 COLLATE utf8_bin DEFAULT NULL COMMENT '身份证号',
`leave_time` datetime DEFAULT NULL COMMENT '离职时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=utf8mb3 COLLATE=utf8_bin ROW_FORMAT=COMPACT;
-- ----------------------------
-- Records of employee
-- ----------------------------
BEGIN;
INSERT INTO `employee` (`id`, `phone`, `email`, `address`, `sex`, `password`, `nick_name`, `head_img`, `state`, `isAdmin`, `info`, `createby`, `create_time`, `age`, `deptId`, `id_card`, `leave_time`) VALUES (1, '13333333333', '123@qq.com', '杭州市余杭区水果摊', '1', '123456', '杭州水果捞', '/files/1725801956845_1.jpg', '0', b'1', '系统管理员', '张三', '2024-09-08 13:26:31', 29, NULL, '411111199905089999', NULL);
INSERT INTO `employee` (`id`, `phone`, `email`, `address`, `sex`, `password`, `nick_name`, `head_img`, `state`, `isAdmin`, `info`, `createby`, `create_time`, `age`, `deptId`, `id_card`, `leave_time`) VALUES (15, '14788888888', NULL, '北京市海淀区', '1', '123456', '李四', '/files/1694434162457_07.jpg', '0', b'0', '销售人员', '杭州水果捞', '2024-09-09 00:06:51', 18, 8, '411111199501019999', NULL);
INSERT INTO `employee` (`id`, `phone`, `email`, `address`, `sex`, `password`, `nick_name`, `head_img`, `state`, `isAdmin`, `info`, `createby`, `create_time`, `age`, `deptId`, `id_card`, `leave_time`) VALUES (16, '15455555555', NULL, NULL, '1', '123456', '叶子', '/files/1694434162457_07.jpg', '0', b'0', '仓库管理员', '张三', '2023-09-11 13:06:52', 18, 8, '511111199501015555', NULL);
COMMIT;
-- ----------------------------
-- Table structure for exchange_point_products_records
-- ----------------------------
DROP TABLE IF EXISTS `exchange_point_products_records`;
CREATE TABLE `exchange_point_products_records` (
`cn` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8_bin NOT NULL COMMENT '订单号',
`goods_id` bigint DEFAULT NULL COMMENT '商品编号',
`member_id` bigint DEFAULT NULL COMMENT '会员编号',
`integral` bigint DEFAULT NULL COMMENT '积分',
`update_time` datetime DEFAULT NULL COMMENT '最近操作时间',
`updateby` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8_bin DEFAULT NULL COMMENT '操作者',
`update_id` bigint DEFAULT NULL COMMENT '操作者编号',
`state` char(2) CHARACTER SET utf8mb3 COLLATE utf8_bin DEFAULT NULL COMMENT '状态',
PRIMARY KEY (`cn`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8_bin ROW_FORMAT=COMPACT;
-- ----------------------------
-- Records of exchange_point_products_records
-- ----------------------------
BEGIN;
INSERT INTO `exchange_point_products_records` (`cn`, `goods_id`, `member_id`, `integral`, `update_time`, `updateby`, `update_id`, `state`) VALUES ('1701220420541288450', 10, 5, 60, '2023-09-11 13:05:30', '张三', 1, '0');
COMMIT;
-- ----------------------------
-- Table structure for goods
-- ----------------------------
DROP TABLE IF EXISTS `goods`;
CREATE TABLE `goods` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
`name` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8_bin DEFAULT NULL COMMENT '商品名',
`createby` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8_bin DEFAULT NULL COMMENT '创建者',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`category_id` bigint DEFAULT NULL COMMENT '商品分类id',
`sell_price` double(10,2) DEFAULT NULL COMMENT '销售价格',
`purchash_price` double(10,2) DEFAULT NULL COMMENT '进货价格',
`update_time` datetime DEFAULT NULL COMMENT '更改时间',
`updateby` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8_bin DEFAULT NULL COMMENT '更改者',
`category_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_czech_ci DEFAULT NULL COMMENT '分类名',
`cover_url` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8_bin DEFAULT NULL COMMENT '商品封面',
`state` char(2) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '状态',
`residue_num` bigint DEFAULT NULL COMMENT '剩余数量',
`info` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8_bin DEFAULT NULL COMMENT '备注',
`sales_volume` bigint DEFAULT NULL COMMENT '销量',
`inventory` bigint DEFAULT NULL COMMENT '需库存量',
`shelves` bigint DEFAULT NULL COMMENT '货架上需摆放的数量',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8mb3 COLLATE=utf8_bin ROW_FORMAT=COMPACT;
-- ----------------------------
-- Records of goods
-- ----------------------------
BEGIN;
INSERT INTO `goods` (`id`, `name`, `createby`, `create_time`, `category_id`, `sell_price`, `purchash_price`, `update_time`, `updateby`, `category_name`, `cover_url`, `state`, `residue_num`, `info`, `sales_volume`, `inventory`, `shelves`) VALUES (7, '运动鞋', '张三', '2023-09-11 12:20:02', 9, 150.00, 120.00, '2023-09-11 12:20:02', '张三', '服装', '/files/1694434783850_04.jpg', '0', 19, '适合打球跑步的运动鞋', 1, 100, 10);
INSERT INTO `goods` (`id`, `name`, `createby`, `create_time`, `category_id`, `sell_price`, `purchash_price`, `update_time`, `updateby`, `category_name`, `cover_url`, `state`, `residue_num`, `info`, `sales_volume`, `inventory`, `shelves`) VALUES (8, '《PASLMS》英文版', '张三', '2023-09-11 12:21:11', 11, 55.00, 50.00, '2023-09-11 12:21:11', '张三', '书籍', '/files/1694434840737_05.jpg', '0', 60, '著名书籍《PASLMS》英文版', NULL, 200, 50);
INSERT INTO `goods` (`id`, `name`, `createby`, `create_time`, `category_id`, `sell_price`, `purchash_price`, `update_time`, `updateby`, `category_name`, `cover_url`, `state`, `residue_num`, `info`, `sales_volume`, `inventory`, `shelves`) VALUES (9, '桌椅套装', '张三', '2023-09-11 12:21:43', 13, 400.00, 350.00, '2023-09-11 12:22:00', '张三', '办公用具', '/files/1694434883855_03.jpg', '0', 9, '桌子加椅子', 1, 300, 20);
INSERT INTO `goods` (`id`, `name`, `createby`, `create_time`, `category_id`, `sell_price`, `purchash_price`, `update_time`, `updateby`, `category_name`, `cover_url`, `state`, `residue_num`, `info`, `sales_volume`, `inventory`, `shelves`) VALUES (10, '短袖', '张三', '2023-09-11 12:22:50', 9, 60.00, 40.00, '2023-09-11 12:22:50', '张三', '服装', '/files/1694434945440_02.jpg', '0', 60, '夏季短袖', NULL, NULL, NULL);
INSERT INTO `goods` (`id`, `name`, `createby`, `create_time`, `category_id`, `sell_price`, `purchash_price`, `update_time`, `updateby`, `category_name`, `cover_url`, `state`, `residue_num`, `info`, `sales_volume`, `inventory`, `shelves`) VALUES (11, '变形金刚玩具套装', '张三', '2023-09-11 12:30:45', 13, 165.00, 140.00, '2023-09-11 12:30:45', '张三', '办公用具', '/files/1694435421618_e04f06dc02b84d38bc4d1ba2b39add0d.jpg', '0', 20, '变形金刚玩具套装', NULL, NULL, NULL);
COMMIT;
-- ----------------------------
-- Table structure for goods_category
-- ----------------------------
DROP TABLE IF EXISTS `goods_category`;
CREATE TABLE `goods_category` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
`name` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8_bin DEFAULT NULL COMMENT '分类名',
`info` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8_bin DEFAULT NULL COMMENT '备注',
`state` char(2) CHARACTER SET utf8mb3 COLLATE utf8_bin DEFAULT NULL COMMENT '状态',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=utf8mb3 COLLATE=utf8_bin ROW_FORMAT=COMPACT;
-- ----------------------------
-- Records of goods_category
-- ----------------------------
BEGIN;
INSERT INTO `goods_category` (`id`, `name`, `info`, `state`) VALUES (9, '服装', '衣服鞋袜', '0');
INSERT INTO `goods_category` (`id`, `name`, `info`, `state`) VALUES (10, '零食', '饭后零食', '0');
INSERT INTO `goods_category` (`id`, `name`, `info`, `state`) VALUES (11, '书籍', NULL, '0');
INSERT INTO `goods_category` (`id`, `name`, `info`, `state`) VALUES (12, '饮料酒水', '饮料酒水类别', '0');
INSERT INTO `goods_category` (`id`, `name`, `info`, `state`) VALUES (13, '办公用具', '办公用具', '0');
COMMIT;
-- ----------------------------
-- Table structure for point_products
-- ----------------------------
DROP TABLE IF EXISTS `point_products`;
CREATE TABLE `point_products` (
`goods_id` bigint DEFAULT NULL,
`goods_name` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8_bin DEFAULT NULL,
`integral` bigint DEFAULT NULL,
`updateby` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8_bin DEFAULT NULL,
`update_time` datetime DEFAULT NULL,
`update_id` bigint DEFAULT NULL,
`cover_url` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8_bin DEFAULT NULL,
`state` char(2) CHARACTER SET utf8mb3 COLLATE utf8_bin NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8_bin ROW_FORMAT=COMPACT;
-- ----------------------------
-- Records of point_products
-- ----------------------------
BEGIN;
INSERT INTO `point_products` (`goods_id`, `goods_name`, `integral`, `updateby`, `update_time`, `update_id`, `cover_url`, `state`) VALUES (11, '变形金刚玩具套装', 50, '张三', '2023-09-11 12:59:48', 1, '/files/1694435421618_e04f06dc02b84d38bc4d1ba2b39add0d.jpg', '0');
INSERT INTO `point_products` (`goods_id`, `goods_name`, `integral`, `updateby`, `update_time`, `update_id`, `cover_url`, `state`) VALUES (10, '短袖', 60, '张三', '2023-09-11 12:59:57', 1, '/files/1694434945440_02.jpg', '0');
COMMIT;
-- ----------------------------
-- Table structure for store
-- ----------------------------
DROP TABLE IF EXISTS `store`;
CREATE TABLE `store` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
`name` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8_bin NOT NULL COMMENT '仓库名称',
`address` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8_bin DEFAULT NULL COMMENT '仓库地址',
`state` char(2) CHARACTER SET utf8mb3 COLLATE utf8_bin NOT NULL COMMENT '状态',
`info` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8_bin DEFAULT NULL COMMENT '描述',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb3 COLLATE=utf8_bin ROW_FORMAT=COMPACT;
-- ----------------------------
-- Records of store
-- ----------------------------
BEGIN;
INSERT INTO `store` (`id`, `name`, `address`, `state`, `info`) VALUES (5, '一号仓库', '北京市海淀区', '0', '超市一号仓库');
COMMIT;
-- ----------------------------
-- Table structure for supplier
-- ----------------------------
DROP TABLE IF EXISTS `supplier`;
CREATE TABLE `supplier` (
`cn` bigint NOT NULL AUTO_INCREMENT COMMENT '编号',
`name` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8_bin DEFAULT NULL COMMENT '名称',
`address` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8_bin DEFAULT NULL COMMENT '地址',
`tel` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8_bin DEFAULT NULL COMMENT '联系电话',
`info` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8_bin DEFAULT NULL COMMENT '备注',
`state` char(2) CHARACTER SET utf8mb3 COLLATE utf8_bin DEFAULT NULL,
PRIMARY KEY (`cn`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb3 COLLATE=utf8_bin ROW_FORMAT=COMPACT;
-- ----------------------------
-- Records of supplier
-- ----------------------------
BEGIN;
INSERT INTO `supplier` (`cn`, `name`, `address`, `tel`, `info`, `state`) VALUES (7, '阿里巴巴', '浙江省杭州市', '19955555555', '1688商家供货商', '0');
COMMIT;
-- ----------------------------
-- Table structure for t_detail_store_goods
-- ----------------------------
DROP TABLE IF EXISTS `t_detail_store_goods`;
CREATE TABLE `t_detail_store_goods` (
`cn` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8_bin NOT NULL,
`goods_id` bigint NOT NULL,
`goods_num` int DEFAULT NULL,
`goods_name` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8_bin NOT NULL,
`goods_price` double DEFAULT NULL COMMENT '0入库 1出库',
`type` char(2) CHARACTER SET utf8mb3 COLLATE utf8_bin NOT NULL,
`createid` bigint NOT NULL,
`create_time` datetime NOT NULL,
`state` char(2) CHARACTER SET utf8mb3 COLLATE utf8_bin NOT NULL COMMENT '0正常 1过期 2下架',
`info` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8_bin DEFAULT NULL,
`expiry_time` datetime DEFAULT NULL COMMENT '过期时间',
`createby` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8_bin DEFAULT NULL,
`birth_time` datetime DEFAULT NULL COMMENT '生产时间',
`state1` char(2) CHARACTER SET utf8mb3 COLLATE utf8_bin DEFAULT NULL COMMENT '0:正常 1删除 2待处理',
`store_id` bigint DEFAULT NULL,
`supplier_id` bigint DEFAULT NULL COMMENT '供货商编号',
`supplier_name` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8_bin DEFAULT NULL COMMENT '供货商名称',
`untreated_num` bigint DEFAULT NULL COMMENT '待处理数量',
PRIMARY KEY (`cn`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8_bin ROW_FORMAT=COMPACT;
-- ----------------------------
-- Records of t_detail_store_goods
-- ----------------------------
BEGIN;
INSERT INTO `t_detail_store_goods` (`cn`, `goods_id`, `goods_num`, `goods_name`, `goods_price`, `type`, `createid`, `create_time`, `state`, `info`, `expiry_time`, `createby`, `birth_time`, `state1`, `store_id`, `supplier_id`, `supplier_name`, `untreated_num`) VALUES ('1701212006578667522', 7, 200, '运动鞋', 120, '0', 1, '2023-09-11 12:32:04', '0', '运动鞋入库', '2029-06-25 16:00:00', '张三', '2023-09-10 16:00:00', '0', 5, 7, '阿里巴巴', NULL);
INSERT INTO `t_detail_store_goods` (`cn`, `goods_id`, `goods_num`, `goods_name`, `goods_price`, `type`, `createid`, `create_time`, `state`, `info`, `expiry_time`, `createby`, `birth_time`, `state1`, `store_id`, `supplier_id`, `supplier_name`, `untreated_num`) VALUES ('1701212043736006658', 8, 200, '《PASLMS》英文版', 50, '0', 1, '2023-09-11 12:32:13', '0', '', '2029-06-25 16:00:00', '张三', '2023-09-10 16:00:00', '0', 5, 7, '阿里巴巴', NULL);
INSERT INTO `t_detail_store_goods` (`cn`, `goods_id`, `goods_num`, `goods_name`, `goods_price`, `type`, `createid`, `create_time`, `state`, `info`, `expiry_time`, `createby`, `birth_time`, `state1`, `store_id`, `supplier_id`, `supplier_name`, `untreated_num`) VALUES ('1701212067161194498', 9, 200, '桌椅套装', 350, '0', 1, '2023-09-11 12:32:18', '0', '', '2029-06-25 16:00:00', '张三', '2023-09-10 16:00:00', '0', 5, 7, '阿里巴巴', NULL);
INSERT INTO `t_detail_store_goods` (`cn`, `goods_id`, `goods_num`, `goods_name`, `goods_price`, `type`, `createid`, `create_time`, `state`, `info`, `expiry_time`, `createby`, `birth_time`, `state1`, `store_id`, `supplier_id`, `supplier_name`, `untreated_num`) VALUES ('1701212086803120129', 10, 200, '短袖', 40, '0', 1, '2023-09-11 12:32:23', '0', '', '2029-06-25 16:00:00', '张三', '2023-09-10 16:00:00', '0', 5, 7, '阿里巴巴', NULL);
INSERT INTO `t_detail_store_goods` (`cn`, `goods_id`, `goods_num`, `goods_name`, `goods_price`, `type`, `createid`, `create_time`, `state`, `info`, `expiry_time`, `createby`, `birth_time`, `state1`, `store_id`, `supplier_id`, `supplier_name`, `untreated_num`) VALUES ('1701212102829555713', 11, 200, '变形金刚玩具套装', 140, '0', 1, '2023-09-11 12:32:27', '0', '', '2029-06-25 16:00:00', '张三', '2023-09-10 16:00:00', '0', 5, 7, '阿里巴巴', NULL);
INSERT INTO `t_detail_store_goods` (`cn`, `goods_id`, `goods_num`, `goods_name`, `goods_price`, `type`, `createid`, `create_time`, `state`, `info`, `expiry_time`, `createby`, `birth_time`, `state1`, `store_id`, `supplier_id`, `supplier_name`, `untreated_num`) VALUES ('1701212176804495361', 7, 20, '运动鞋', NULL, '1', 1, '2023-09-11 12:32:45', '0', '', NULL, '张三', NULL, '0', 5, NULL, NULL, NULL);
INSERT INTO `t_detail_store_goods` (`cn`, `goods_id`, `goods_num`, `goods_name`, `goods_price`, `type`, `createid`, `create_time`, `state`, `info`, `expiry_time`, `createby`, `birth_time`, `state1`, `store_id`, `supplier_id`, `supplier_name`, `untreated_num`) VALUES ('1701218295690104833', 8, 50, '《PASLMS》英文版', NULL, '1', 1, '2023-09-11 12:57:03', '0', '', NULL, '张三', NULL, '0', 5, NULL, NULL, NULL);
INSERT INTO `t_detail_store_goods` (`cn`, `goods_id`, `goods_num`, `goods_name`, `goods_price`, `type`, `createid`, `create_time`, `state`, `info`, `expiry_time`, `createby`, `birth_time`, `state1`, `store_id`, `supplier_id`, `supplier_name`, `untreated_num`) VALUES ('1701218352346763266', 9, 10, '桌椅套装', NULL, '1', 1, '2023-09-11 12:57:17', '0', '', NULL, '张三', NULL, '0', 5, NULL, NULL, NULL);
INSERT INTO `t_detail_store_goods` (`cn`, `goods_id`, `goods_num`, `goods_name`, `goods_price`, `type`, `createid`, `create_time`, `state`, `info`, `expiry_time`, `createby`, `birth_time`, `state1`, `store_id`, `supplier_id`, `supplier_name`, `untreated_num`) VALUES ('1701218386224156674', 10, 60, '短袖', NULL, '1', 1, '2023-09-11 12:57:25', '0', '', NULL, '张三', NULL, '0', 5, NULL, NULL, NULL);
INSERT INTO `t_detail_store_goods` (`cn`, `goods_id`, `goods_num`, `goods_name`, `goods_price`, `type`, `createid`, `create_time`, `state`, `info`, `expiry_time`, `createby`, `birth_time`, `state1`, `store_id`, `supplier_id`, `supplier_name`, `untreated_num`) VALUES ('1701218444214603778', 11, 20, '变形金刚玩具套装', NULL, '1', 1, '2023-09-11 12:57:39', '0', '', NULL, '张三', NULL, '0', 5, NULL, NULL, NULL);
INSERT INTO `t_detail_store_goods` (`cn`, `goods_id`, `goods_num`, `goods_name`, `goods_price`, `type`, `createid`, `create_time`, `state`, `info`, `expiry_time`, `createby`, `birth_time`, `state1`, `store_id`, `supplier_id`, `supplier_name`, `untreated_num`) VALUES ('1701219991275245570', 8, 10, '《PASLMS》英文版', NULL, '1', 1, '2023-09-11 13:03:48', '0', '', NULL, '张三', NULL, '0', 5, NULL, NULL, NULL);
COMMIT;
-- ----------------------------
-- Table structure for t_emp_role
-- ----------------------------
DROP TABLE IF EXISTS `t_emp_role`;
CREATE TABLE `t_emp_role` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
`eid` bigint NOT NULL COMMENT '用户id',
`rid` bigint NOT NULL COMMENT '角色id',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=23 DEFAULT CHARSET=utf8mb3 COLLATE=utf8_bin ROW_FORMAT=COMPACT;
-- ----------------------------
-- Records of t_emp_role
-- ----------------------------
BEGIN;
INSERT INTO `t_emp_role` (`id`, `eid`, `rid`) VALUES (1, 1, 2);
INSERT INTO `t_emp_role` (`id`, `eid`, `rid`) VALUES (20, 15, 3);
INSERT INTO `t_emp_role` (`id`, `eid`, `rid`) VALUES (21, 16, 4);
INSERT INTO `t_emp_role` (`id`, `eid`, `rid`) VALUES (22, 16, 5);
COMMIT;
-- ----------------------------
-- Table structure for t_goods_store
-- ----------------------------
DROP TABLE IF EXISTS `t_goods_store`;
CREATE TABLE `t_goods_store` (
`goods_id` bigint NOT NULL COMMENT '商品编号',
`store_id` bigint NOT NULL COMMENT '仓库编号',
`in_num` bigint NOT NULL COMMENT '入库数数量',
`residue_num` bigint NOT NULL COMMENT '剩余数量',
`store_name` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8_bin NOT NULL COMMENT '仓库名'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8_bin ROW_FORMAT=COMPACT;
-- ----------------------------
-- Records of t_goods_store
-- ----------------------------
BEGIN;
INSERT INTO `t_goods_store` (`goods_id`, `store_id`, `in_num`, `residue_num`, `store_name`) VALUES (7, 5, 200, 180, '一号仓库');
INSERT INTO `t_goods_store` (`goods_id`, `store_id`, `in_num`, `residue_num`, `store_name`) VALUES (8, 5, 200, 140, '一号仓库');
INSERT INTO `t_goods_store` (`goods_id`, `store_id`, `in_num`, `residue_num`, `store_name`) VALUES (9, 5, 200, 190, '一号仓库');
INSERT INTO `t_goods_store` (`goods_id`, `store_id`, `in_num`, `residue_num`, `store_name`) VALUES (10, 5, 200, 140, '一号仓库');
INSERT INTO `t_goods_store` (`goods_id`, `store_id`, `in_num`, `residue_num`, `store_name`) VALUES (11, 5, 200, 180, '一号仓库');
COMMIT;
-- ----------------------------
-- Table structure for t_member
-- ----------------------------
DROP TABLE IF EXISTS `t_member`;
CREATE TABLE `t_member` (
`id` bigint NOT NULL AUTO_INCREMENT,
`name` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8_bin DEFAULT NULL COMMENT '姓名',
`phone` varchar(11) CHARACTER SET utf8mb3 COLLATE utf8_bin NOT NULL COMMENT '手机号',
`password` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8_bin NOT NULL COMMENT '密码',
`email` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8_bin DEFAULT NULL COMMENT '邮箱',
`state` char(2) CHARACTER SET utf8mb3 COLLATE utf8_bin NOT NULL COMMENT '状态',
`info` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8_bin DEFAULT NULL COMMENT '描述',
`integral` bigint DEFAULT NULL COMMENT '会员积分',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb3 COLLATE=utf8_bin ROW_FORMAT=COMPACT;
-- ----------------------------
-- Records of t_member
-- ----------------------------
BEGIN;
INSERT INTO `t_member` (`id`, `name`, `phone`, `password`, `email`, `state`, `info`, `integral`) VALUES (5, '陈小明', '19955555555', '123456', '123@qq.com', '0', '新会员', 2622);
COMMIT;
-- ----------------------------
-- Table structure for t_menu
-- ----------------------------
DROP TABLE IF EXISTS `t_menu`;
CREATE TABLE `t_menu` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
`label` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8_bin NOT NULL COMMENT '名称',
`purl` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8_bin DEFAULT NULL COMMENT '地址',
`type` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8_bin NOT NULL COMMENT '类型 0:目录 1 菜单 2 按钮',
`parent_id` bigint DEFAULT NULL COMMENT '父id',
`parent_label` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8_bin DEFAULT NULL COMMENT '父名称',
`info` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8_bin DEFAULT NULL COMMENT '描述',
`state` varchar(2) CHARACTER SET utf8mb3 COLLATE utf8_bin NOT NULL COMMENT '状态',
`flag` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8_bin NOT NULL COMMENT '权限的唯一标识',
`icon` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8_bin DEFAULT NULL COMMENT '图标',
`component` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8_bin DEFAULT NULL COMMENT '组件路径',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=63 DEFAULT CHARSET=utf8mb3 COLLATE=utf8_bin ROW_FORMAT=COMPACT;
-- ----------------------------
-- Records of t_menu
-- ----------------------------
BEGIN;
INSERT INTO `t_menu` (`id`, `label`, `purl`, `type`, `parent_id`, `parent_label`, `info`, `state`, `flag`, `icon`, `component`) VALUES (1, '销售管理', NULL, '0', NULL, NULL, NULL, '0', 'sale_management', 'iconfont icon-r-shield', NULL);
INSERT INTO `t_menu` (`id`, `label`, `purl`, `type`, `parent_id`, `parent_label`, `info`, `state`, `flag`, `icon`, `component`) VALUES (2, '人事管理', NULL, '0', NULL, NULL, NULL, '0', 'personnel_management', 'iconfont icon-r-team', NULL);
INSERT INTO `t_menu` (`id`, `label`, `purl`, `type`, `parent_id`, `parent_label`, `info`, `state`, `flag`, `icon`, `component`) VALUES (3, '个人中心', NULL, '0', NULL, NULL, NULL, '0', 'personal', 'iconfont icon-r-user2', NULL);
INSERT INTO `t_menu` (`id`, `label`, `purl`, `type`, `parent_id`, `parent_label`, `info`, `state`, `flag`, `icon`, `component`) VALUES (4, '库存管理', NULL, '0', NULL, NULL, NULL, '0', 'inventory_management', 'iconfont icon-r-building', NULL);
INSERT INTO `t_menu` (`id`, `label`, `purl`, `type`, `parent_id`, `parent_label`, `info`, `state`, `flag`, `icon`, `component`) VALUES (5, '会员管理', NULL, '0', NULL, NULL, NULL, '0', 'member_management', 'iconfont icon-r-mark1', NULL);
INSERT INTO `t_menu` (`id`, `label`, `purl`, `type`, `parent_id`, `parent_label`, `info`, `state`, `flag`, `icon`, `component`) VALUES (6, '系统管理', NULL, '0', NULL, NULL, NULL, '0', 'system', 'iconfont icon-r-setting', NULL);
INSERT INTO `t_menu` (`id`, `label`, `purl`, `type`, `parent_id`, `parent_label`, `info`, `state`, `flag`, `icon`, `component`) VALUES (7, '密码修改', '/personal/edit_pwd', '1', 3, '个人中心', NULL, '0', 'personal:edit_pwd', 'iconfont icon-r-lock', 'views/personal/Edit_pwd');
INSERT INTO `t_menu` (`id`, `label`, `purl`, `type`, `parent_id`, `parent_label`, `info`, `state`, `flag`, `icon`, `component`) VALUES (8, '角色管理', '/system/role/list', '1', 6, '系统管理', NULL, '0', 'system:role:list', 'iconfont icon-r-user3', 'views/system/role/List');
INSERT INTO `t_menu` (`id`, `label`, `purl`, `type`, `parent_id`, `parent_label`, `info`, `state`, `flag`, `icon`, `component`) VALUES (9, '创建角色', NULL, '2', 8, '角色管理', NULL, '0', 'system:role:save', NULL, NULL);
INSERT INTO `t_menu` (`id`, `label`, `purl`, `type`, `parent_id`, `parent_label`, `info`, `state`, `flag`, `icon`, `component`) VALUES (10, '修改角色', NULL, '2', 8, '角色管理', NULL, '0', 'system:role:edit_role', NULL, NULL);
INSERT INTO `t_menu` (`id`, `label`, `purl`, `type`, `parent_id`, `parent_label`, `info`, `state`, `flag`, `icon`, `component`) VALUES (11, '停用角色', NULL, '2', 8, '角色管理', NULL, '0', 'system:role:forbiddenRole', NULL, NULL);
INSERT INTO `t_menu` (`id`, `label`, `purl`, `type`, `parent_id`, `parent_label`, `info`, `state`, `flag`, `icon`, `component`) VALUES (12, '角色授权', NULL, '2', 8, '角色管理', NULL, '0', 'system:role:saveRolePermissons', NULL, NULL);
INSERT INTO `t_menu` (`id`, `label`, `purl`, `type`, `parent_id`, `parent_label`, `info`, `state`, `flag`, `icon`, `component`) VALUES (14, '菜单管理', '/system/menu/list', '1', 6, '系统管理', NULL, '0', 'system:menu:list', 'iconfont icon-r-list', 'views/system/menu/List');
INSERT INTO `t_menu` (`id`, `label`, `purl`, `type`, `parent_id`, `parent_label`, `info`, `state`, `flag`, `icon`, `component`) VALUES (15, '仓库管理', '/inventory_management/store/list', '1', 4, '库存管理', NULL, '0', 'inventory_management:store:list', 'iconfont icon-r-building', 'views/inventory_management/store/List');
INSERT INTO `t_menu` (`id`, `label`, `purl`, `type`, `parent_id`, `parent_label`, `info`, `state`, `flag`, `icon`, `component`) VALUES (16, '新创仓库', '', '2', 15, '仓库管理', NULL, '0', 'inventory_management:store:save', NULL, '');
INSERT INTO `t_menu` (`id`, `label`, `purl`, `type`, `parent_id`, `parent_label`, `info`, `state`, `flag`, `icon`, `component`) VALUES (17, '修改仓库', '', '2', 15, '仓库管理', NULL, '0', 'inventory_management:store:update', NULL, '');
INSERT INTO `t_menu` (`id`, `label`, `purl`, `type`, `parent_id`, `parent_label`, `info`, `state`, `flag`, `icon`, `component`) VALUES (18, '停用仓库', '', '2', 15, '仓库管理', NULL, '0', 'inventory_management:store:deactivate', NULL, '');
INSERT INTO `t_menu` (`id`, `label`, `purl`, `type`, `parent_id`, `parent_label`, `info`, `state`, `flag`, `icon`, `component`) VALUES (19, '商品管理', NULL, '0', NULL, NULL, NULL, '0', 'goods_management:goods_category', 'iconfont icon-r-mark2', NULL);
INSERT INTO `t_menu` (`id`, `label`, `purl`, `type`, `parent_id`, `parent_label`, `info`, `state`, `flag`, `icon`, `component`) VALUES (20, '分类管理', '/goods_management/goods_category/list', '1', 19, '商品管理', NULL, '0', 'goods_management:goods_category:list', 'iconfont icon-r-list', 'views/goods_management/goods_category/List');
INSERT INTO `t_menu` (`id`, `label`, `purl`, `type`, `parent_id`, `parent_label`, `info`, `state`, `flag`, `icon`, `component`) VALUES (21, '创建商品分类', '', '2', 20, '商品分类管理', NULL, '0', 'goods_management:goods_category:save', NULL, NULL);
INSERT INTO `t_menu` (`id`, `label`, `purl`, `type`, `parent_id`, `parent_label`, `info`, `state`, `flag`, `icon`, `component`) VALUES (22, '修改商品分类', '', '2', 20, '商品分类管理', NULL, '0', 'goods_management:goods_category:update', NULL, NULL);
INSERT INTO `t_menu` (`id`, `label`, `purl`, `type`, `parent_id`, `parent_label`, `info`, `state`, `flag`, `icon`, `component`) VALUES (23, '停用商品分类', '', '2', 20, '商品分类管理', NULL, '0', 'goods_management:goods_category:deactivate', NULL, NULL);
INSERT INTO `t_menu` (`id`, `label`, `purl`, `type`, `parent_id`, `parent_label`, `info`, `state`, `flag`, `icon`, `component`) VALUES (24, '部门管理', '/personnel_management/dept/list', '1', 2, '人事管理', NULL, '0', 'personnel_management:dept:list', 'iconfont icon-r-team', 'views/personnel_management/dept/List');
INSERT INTO `t_menu` (`id`, `label`, `purl`, `type`, `parent_id`, `parent_label`, `info`, `state`, `flag`, `icon`, `component`) VALUES (25, '创建部门', NULL, '2', 24, '部门管理', NULL, '0', 'personnel_management:dept:save', NULL, NULL);
INSERT INTO `t_menu` (`id`, `label`, `purl`, `type`, `parent_id`, `parent_label`, `info`, `state`, `flag`, `icon`, `component`) VALUES (26, '修改部门', NULL, '2', 24, '部门管理', NULL, '0', 'personnel_management:dept:update', NULL, NULL);
INSERT INTO `t_menu` (`id`, `label`, `purl`, `type`, `parent_id`, `parent_label`, `info`, `state`, `flag`, `icon`, `component`) VALUES (27, '停用部门', NULL, '2', 24, '部门管理', NULL, '0', 'personnel_management:dept:deactivate', NULL, NULL);
INSERT INTO `t_menu` (`id`, `label`, `purl`, `type`, `parent_id`, `parent_label`, `info`, `state`, `flag`, `icon`, `component`) VALUES (28, '员工管理', '/personnel_management/employee/list', '1', 2, '人事管理', NULL, '0', 'personnel_management:employee:list', 'iconfont icon-r-user2', 'views/personnel_management/employee/List');
INSERT INTO `t_menu` (`id`, `label`, `purl`, `type`, `parent_id`, `parent_label`, `info`, `state`, `flag`, `icon`, `component`) VALUES (29, '商品信息', '/goods_management/goods/list', '1', 19, '商品管理', NULL, '0', 'goods_management:goods:list', 'iconfont icon-r-shield', 'views/goods_management/goods/List');
INSERT INTO `t_menu` (`id`, `label`, `purl`, `type`, `parent_id`, `parent_label`, `info`, `state`, `flag`, `icon`, `component`) VALUES (31, '会员信息', '/member_management/member/list', '1', 5, '会员管理', NULL, '0', 'member_management:member:list', 'iconfont icon-r-mark1', 'views/member_management/member/List');
INSERT INTO `t_menu` (`id`, `label`, `purl`, `type`, `parent_id`, `parent_label`, `info`, `state`, `flag`, `icon`, `component`) VALUES (32, '个人资料', '/personal/information', '1', 3, '个人中心', NULL, '0', 'personnel_management:employee:update', 'iconfont icon-r-paper', 'views/personal/Information');
INSERT INTO `t_menu` (`id`, `label`, `purl`, `type`, `parent_id`, `parent_label`, `info`, `state`, `flag`, `icon`, `component`) VALUES (33, '出库明细', '/inventory_management/detail_store_goods_out/list', '1', 4, '库存管理', NULL, '0', 'inventory_management:detail_store_goods_out:list', 'iconfont icon-r-left', 'views/inventory_management/detail_store_goods_out/List');
INSERT INTO `t_menu` (`id`, `label`, `purl`, `type`, `parent_id`, `parent_label`, `info`, `state`, `flag`, `icon`, `component`) VALUES (34, '入库明细', '/inventory_management/detail_store_goods_in/list', '1', 4, '库存管理', NULL, '0', 'inventory_management:detail_store_goods_in:list', 'iconfont icon-r-right', 'views/inventory_management/detail_store_goods_in/List');
INSERT INTO `t_menu` (`id`, `label`, `purl`, `type`, `parent_id`, `parent_label`, `info`, `state`, `flag`, `icon`, `component`) VALUES (35, '销售主页', '/sale_management/sale_cmd/list', '1', 1, '销售管理', NULL, '0', 'sale_management:sale_cmd:list', 'iconfont icon-r-home', 'views/sale_management/sale_cmd/List');
INSERT INTO `t_menu` (`id`, `label`, `purl`, `type`, `parent_id`, `parent_label`, `info`, `state`, `flag`, `icon`, `component`) VALUES (36, '销售记录', '/sale_management/sale_records/list', '1', 1, '销售管理', NULL, '0', 'sale_management:sale_records:list', 'iconfont icon-r-paper', 'views/sale_management/sale_records/List');
INSERT INTO `t_menu` (`id`, `label`, `purl`, `type`, `parent_id`, `parent_label`, `info`, `state`, `flag`, `icon`, `component`) VALUES (37, '供货商信息', '/inventory_management/supplier/list', '1', 4, '库存管理', NULL, '0', 'inventory_management:supplier:list', 'iconfont icon-r-mark3', 'views/inventory_management/supplier/List');
INSERT INTO `t_menu` (`id`, `label`, `purl`, `type`, `parent_id`, `parent_label`, `info`, `state`, `flag`, `icon`, `component`) VALUES (41, '积分商品', '/goods_management/point_products/list', '1', 19, '商品管理', NULL, '0', 'goods_management:point_products:list', 'iconfont icon-r-mark1', 'views/goods_management/point_products/List');
INSERT INTO `t_menu` (`id`, `label`, `purl`, `type`, `parent_id`, `parent_label`, `info`, `state`, `flag`, `icon`, `component`) VALUES (42, '销售统计', '/goods_management/statistic_sale/list', '1', 19, '商品管理', NULL, '0', 'goods_management:statistic_sale:list', 'iconfont icon-r-add', 'views/goods_management/statistic_sale/List');
INSERT INTO `t_menu` (`id`, `label`, `purl`, `type`, `parent_id`, `parent_label`, `info`, `state`, `flag`, `icon`, `component`) VALUES (43, '库存统计', '/inventory_management/store/storage_situation', '1', 4, '库存管理', NULL, '0', 'inventory_management:store:storage_situation', 'iconfont icon-r-add', 'views/inventory_management/store/StorageSituation');
INSERT INTO `t_menu` (`id`, `label`, `purl`, `type`, `parent_id`, `parent_label`, `info`, `state`, `flag`, `icon`, `component`) VALUES (44, '积分兑换记录', '/sale_management/exchange_point_products_records/list', '1', 1, '销售管理', NULL, '0', 'sale_management:exchange_point_products_records:list', 'iconfont icon-r-paper', 'views//sale_management/exchange_point_products_records/List');
INSERT INTO `t_menu` (`id`, `label`, `purl`, `type`, `parent_id`, `parent_label`, `info`, `state`, `flag`, `icon`, `component`) VALUES (45, '员工创建', NULL, '2', 28, '员工管理', NULL, '0', 'personnel_management:employee:save', NULL, NULL);
INSERT INTO `t_menu` (`id`, `label`, `purl`, `type`, `parent_id`, `parent_label`, `info`, `state`, `flag`, `icon`, `component`) VALUES (46, '员工修改', NULL, '2', 28, '员工管理', NULL, '0', 'personnel_management:employee:update', NULL, NULL);
INSERT INTO `t_menu` (`id`, `label`, `purl`, `type`, `parent_id`, `parent_label`, `info`, `state`, `flag`, `icon`, `component`) VALUES (47, '员工分配职务', NULL, '2', 28, '员工管理', NULL, '0', 'personnel_management:employee:queryRoleIdsByEid', NULL, NULL);
INSERT INTO `t_menu` (`id`, `label`, `purl`, `type`, `parent_id`, `parent_label`, `info`, `state`, `flag`, `icon`, `component`) VALUES (48, '重置员工密码', NULL, '2', 28, '员工管理', NULL, '0', 'personnel_management:employee:resetPwd', NULL, NULL);
INSERT INTO `t_menu` (`id`, `label`, `purl`, `type`, `parent_id`, `parent_label`, `info`, `state`, `flag`, `icon`, `component`) VALUES (49, '商品入库', NULL, '2', 34, '入库明细', NULL, '0', 'inventory_management:detail_store_goods_in:save', NULL, NULL);
INSERT INTO `t_menu` (`id`, `label`, `purl`, `type`, `parent_id`, `parent_label`, `info`, `state`, `flag`, `icon`, `component`) VALUES (50, '入库记录删除', NULL, '2', 34, '入库明细', NULL, '0', 'inventory_management:detail_store_goods_in:delIn', NULL, NULL);
INSERT INTO `t_menu` (`id`, `label`, `purl`, `type`, `parent_id`, `parent_label`, `info`, `state`, `flag`, `icon`, `component`) VALUES (51, '商品出库', NULL, '2', 33, '出库明细', NULL, '0', 'inventory_management:detail_store_goods_out:save', NULL, NULL);
INSERT INTO `t_menu` (`id`, `label`, `purl`, `type`, `parent_id`, `parent_label`, `info`, `state`, `flag`, `icon`, `component`) VALUES (52, '出库记录删除', NULL, '2', 33, '出库明细', NULL, '0', 'inventory_management:detail_store_goods_out:delOut', NULL, NULL);
INSERT INTO `t_menu` (`id`, `label`, `purl`, `type`, `parent_id`, `parent_label`, `info`, `state`, `flag`, `icon`, `component`) VALUES (53, '创建', NULL, '2', 37, '供货商信息', NULL, '0', 'inventory_management:supplier:save', NULL, NULL);
INSERT INTO `t_menu` (`id`, `label`, `purl`, `type`, `parent_id`, `parent_label`, `info`, `state`, `flag`, `icon`, `component`) VALUES (54, '修改', NULL, '2', 37, '供货商信息', NULL, '0', 'inventory_management:supplier:update', NULL, NULL);
INSERT INTO `t_menu` (`id`, `label`, `purl`, `type`, `parent_id`, `parent_label`, `info`, `state`, `flag`, `icon`, `component`) VALUES (55, '删除', NULL, '2', 37, '供货商信息', NULL, '0', 'inventory_management:supplier:deactivate', NULL, NULL);
INSERT INTO `t_menu` (`id`, `label`, `purl`, `type`, `parent_id`, `parent_label`, `info`, `state`, `flag`, `icon`, `component`) VALUES (56, '商品上架处理', NULL, '2', 40, '出库通知', NULL, '0', 'inventory_management:detail_store_goods_out:notice:saveOut_shelves', NULL, NULL);
INSERT INTO `t_menu` (`id`, `label`, `purl`, `type`, `parent_id`, `parent_label`, `info`, `state`, `flag`, `icon`, `component`) VALUES (57, '商品过期/下架处理', NULL, '2', 40, '出库通知', NULL, '0', 'inventory_management:detail_store_goods_out:notice:resolveOutUntreatedForm', NULL, NULL);
INSERT INTO `t_menu` (`id`, `label`, `purl`, `type`, `parent_id`, `parent_label`, `info`, `state`, `flag`, `icon`, `component`) VALUES (58, '创建', NULL, '2', 31, '会员信息管理', NULL, '0', 'member_management:member:save', NULL, NULL);
INSERT INTO `t_menu` (`id`, `label`, `purl`, `type`, `parent_id`, `parent_label`, `info`, `state`, `flag`, `icon`, `component`) VALUES (59, '兑换商品', NULL, '2', 31, '会员信息管理', NULL, '0', 'sale_management:exchange_point_products_records:saveExchangePointProductRecords', NULL, NULL);
INSERT INTO `t_menu` (`id`, `label`, `purl`, `type`, `parent_id`, `parent_label`, `info`, `state`, `flag`, `icon`, `component`) VALUES (60, '修改', NULL, '2', 31, '会员信息管理', NULL, '0', 'member_management:member:update', NULL, NULL);
INSERT INTO `t_menu` (`id`, `label`, `purl`, `type`, `parent_id`, `parent_label`, `info`, `state`, `flag`, `icon`, `component`) VALUES (61, '删除', NULL, '2', 31, '会员信息管理', NULL, '0', 'member_management:member:delMember', NULL, NULL);
COMMIT;
-- ----------------------------
-- Table structure for t_role
-- ----------------------------
DROP TABLE IF EXISTS `t_role`;
CREATE TABLE `t_role` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
`name` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8_bin DEFAULT NULL COMMENT '角色名',
`info` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8_bin DEFAULT NULL COMMENT '描述',
`state` char(2) CHARACTER SET utf8mb3 COLLATE utf8_bin DEFAULT NULL COMMENT '状态 0 正常 -1停用',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb3 COLLATE=utf8_bin ROW_FORMAT=COMPACT;
-- ----------------------------
-- Records of t_role
-- ----------------------------
BEGIN;
INSERT INTO `t_role` (`id`, `name`, `info`, `state`) VALUES (1, '系统管理员', '系统拥有者', '0');
INSERT INTO `t_role` (`id`, `name`, `info`, `state`) VALUES (2, '超级系统拥有者', '超级系统拥有者', '0');
INSERT INTO `t_role` (`id`, `name`, `info`, `state`) VALUES (3, '收银员', '负责销售收钱', '0');
INSERT INTO `t_role` (`id`, `name`, `info`, `state`) VALUES (4, '仓库管理员', '负责管理库存', '0');
INSERT INTO `t_role` (`id`, `name`, `info`, `state`) VALUES (5, '商品管理员', '负责商品货架的商品数量、通知仓库管理员入库和出库', '0');
INSERT INTO `t_role` (`id`, `name`, `info`, `state`) VALUES (6, '人事主管', '负责管理部门信息和员工信息', '0');
INSERT INTO `t_role` (`id`, `name`, `info`, `state`) VALUES (7, '员工', '超市工作人员', '0');
COMMIT;
-- ----------------------------
-- Table structure for t_role_menu
-- ----------------------------
DROP TABLE IF EXISTS `t_role_menu`;
CREATE TABLE `t_role_menu` (
`id` int NOT NULL AUTO_INCREMENT,
`rid` bigint NOT NULL COMMENT '角色id',
`mid` bigint NOT NULL COMMENT '菜单id',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=134 DEFAULT CHARSET=utf8mb3 COLLATE=utf8_bin ROW_FORMAT=COMPACT;
-- ----------------------------
-- Records of t_role_menu
-- ----------------------------
BEGIN;
INSERT INTO `t_role_menu` (`id`, `rid`, `mid`) VALUES (64, 4, 32);
INSERT INTO `t_role_menu` (`id`, `rid`, `mid`) VALUES (65, 4, 33);
INSERT INTO `t_role_menu` (`id`, `rid`, `mid`) VALUES (66, 4, 34);
INSERT INTO `t_role_menu` (`id`, `rid`, `mid`) VALUES (67, 4, 3);
INSERT INTO `t_role_menu` (`id`, `rid`, `mid`) VALUES (68, 4, 4);
INSERT INTO `t_role_menu` (`id`, `rid`, `mid`) VALUES (69, 4, 37);
INSERT INTO `t_role_menu` (`id`, `rid`, `mid`) VALUES (70, 4, 7);
INSERT INTO `t_role_menu` (`id`, `rid`, `mid`) VALUES (73, 4, 43);
INSERT INTO `t_role_menu` (`id`, `rid`, `mid`) VALUES (74, 4, 15);
INSERT INTO `t_role_menu` (`id`, `rid`, `mid`) VALUES (75, 4, 16);
INSERT INTO `t_role_menu` (`id`, `rid`, `mid`) VALUES (76, 4, 17);
INSERT INTO `t_role_menu` (`id`, `rid`, `mid`) VALUES (77, 4, 49);
INSERT INTO `t_role_menu` (`id`, `rid`, `mid`) VALUES (78, 4, 18);
INSERT INTO `t_role_menu` (`id`, `rid`, `mid`) VALUES (79, 4, 50);
INSERT INTO `t_role_menu` (`id`, `rid`, `mid`) VALUES (80, 4, 51);
INSERT INTO `t_role_menu` (`id`, `rid`, `mid`) VALUES (81, 4, 52);
INSERT INTO `t_role_menu` (`id`, `rid`, `mid`) VALUES (82, 4, 53);
INSERT INTO `t_role_menu` (`id`, `rid`, `mid`) VALUES (83, 4, 54);
INSERT INTO `t_role_menu` (`id`, `rid`, `mid`) VALUES (84, 4, 55);
INSERT INTO `t_role_menu` (`id`, `rid`, `mid`) VALUES (85, 4, 56);
INSERT INTO `t_role_menu` (`id`, `rid`, `mid`) VALUES (86, 4, 57);
INSERT INTO `t_role_menu` (`id`, `rid`, `mid`) VALUES (87, 5, 19);
INSERT INTO `t_role_menu` (`id`, `rid`, `mid`) VALUES (88, 5, 20);
INSERT INTO `t_role_menu` (`id`, `rid`, `mid`) VALUES (89, 5, 21);
INSERT INTO `t_role_menu` (`id`, `rid`, `mid`) VALUES (90, 5, 22);
INSERT INTO `t_role_menu` (`id`, `rid`, `mid`) VALUES (92, 5, 23);
INSERT INTO `t_role_menu` (`id`, `rid`, `mid`) VALUES (93, 5, 41);
INSERT INTO `t_role_menu` (`id`, `rid`, `mid`) VALUES (94, 5, 42);
INSERT INTO `t_role_menu` (`id`, `rid`, `mid`) VALUES (95, 5, 29);
INSERT INTO `t_role_menu` (`id`, `rid`, `mid`) VALUES (96, 6, 48);
INSERT INTO `t_role_menu` (`id`, `rid`, `mid`) VALUES (97, 6, 2);
INSERT INTO `t_role_menu` (`id`, `rid`, `mid`) VALUES (98, 6, 24);
INSERT INTO `t_role_menu` (`id`, `rid`, `mid`) VALUES (99, 6, 25);
INSERT INTO `t_role_menu` (`id`, `rid`, `mid`) VALUES (100, 6, 26);
INSERT INTO `t_role_menu` (`id`, `rid`, `mid`) VALUES (101, 6, 27);
INSERT INTO `t_role_menu` (`id`, `rid`, `mid`) VALUES (102, 6, 28);
INSERT INTO `t_role_menu` (`id`, `rid`, `mid`) VALUES (103, 6, 45);
INSERT INTO `t_role_menu` (`id`, `rid`, `mid`) VALUES (104, 6, 46);
INSERT INTO `t_role_menu` (`id`, `rid`, `mid`) VALUES (105, 6, 47);
INSERT INTO `t_role_menu` (`id`, `rid`, `mid`) VALUES (109, 7, 32);
INSERT INTO `t_role_menu` (`id`, `rid`, `mid`) VALUES (110, 7, 3);
INSERT INTO `t_role_menu` (`id`, `rid`, `mid`) VALUES (111, 7, 7);
INSERT INTO `t_role_menu` (`id`, `rid`, `mid`) VALUES (121, 3, 32);
INSERT INTO `t_role_menu` (`id`, `rid`, `mid`) VALUES (122, 3, 1);
INSERT INTO `t_role_menu` (`id`, `rid`, `mid`) VALUES (123, 3, 3);
INSERT INTO `t_role_menu` (`id`, `rid`, `mid`) VALUES (124, 3, 35);
INSERT INTO `t_role_menu` (`id`, `rid`, `mid`) VALUES (125, 3, 36);
INSERT INTO `t_role_menu` (`id`, `rid`, `mid`) VALUES (126, 3, 5);
INSERT INTO `t_role_menu` (`id`, `rid`, `mid`) VALUES (127, 3, 7);
INSERT INTO `t_role_menu` (`id`, `rid`, `mid`) VALUES (128, 3, 44);
INSERT INTO `t_role_menu` (`id`, `rid`, `mid`) VALUES (129, 3, 58);
INSERT INTO `t_role_menu` (`id`, `rid`, `mid`) VALUES (130, 3, 59);
INSERT INTO `t_role_menu` (`id`, `rid`, `mid`) VALUES (131, 3, 60);
INSERT INTO `t_role_menu` (`id`, `rid`, `mid`) VALUES (132, 3, 61);
INSERT INTO `t_role_menu` (`id`, `rid`, `mid`) VALUES (133, 3, 31);
COMMIT;
-- ----------------------------
-- Table structure for t_sale_records
-- ----------------------------
DROP TABLE IF EXISTS `t_sale_records`;
CREATE TABLE `t_sale_records` (
`cn` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8_bin NOT NULL,
`eid` bigint NOT NULL,
`sellway` char(2) CHARACTER SET utf8mb3 COLLATE utf8_bin NOT NULL,
`sell_time` datetime NOT NULL,
`state` char(2) CHARACTER SET utf8mb3 COLLATE utf8_bin NOT NULL COMMENT '0:正常 1删除',
`info` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8_bin DEFAULT NULL COMMENT '备注',
`sellby` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8_bin DEFAULT NULL,
`sell_total` bigint NOT NULL COMMENT '销售总数量',
`sell_totalmoney` double NOT NULL COMMENT '销售总金额',
`type` char(1) CHARACTER SET utf8mb3 COLLATE utf8_bin NOT NULL COMMENT '0:非会员消费 1会员消费',
`member_phone` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8_bin DEFAULT NULL COMMENT '顾客会员号码',
PRIMARY KEY (`cn`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8_bin ROW_FORMAT=COMPACT;
-- ----------------------------
-- Records of t_sale_records
-- ----------------------------
BEGIN;
INSERT INTO `t_sale_records` (`cn`, `eid`, `sellway`, `sell_time`, `state`, `info`, `sellby`, `sell_total`, `sell_totalmoney`, `type`, `member_phone`) VALUES ('1701213155180429314', 15, '0', '2023-09-11 12:37:16', '0', '', '李四', 1, 120, '0', NULL);
INSERT INTO `t_sale_records` (`cn`, `eid`, `sellway`, `sell_time`, `state`, `info`, `sellby`, `sell_total`, `sell_totalmoney`, `type`, `member_phone`) VALUES ('1701220094014722049', 1, '1', '2023-09-11 13:04:45', '0', '', '张三', 1, 315, '1', '19955555555');
COMMIT;
SET FOREIGN_KEY_CHECKS = 1;

@ -0,0 +1,76 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.shasnzhu</groupId>
<artifactId>superMarket-backend</artifactId>
<version>1.0.0</version>
<!--父工程-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.2.RELEASE</version>
</parent>
<dependencies>
<!--mysql驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!--druid启动依赖-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.11</version>
</dependency>
<!--mybatis plus启动依赖-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.2</version>
</dependency>
<!--web启动依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--fastjson-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.71</version>
</dependency>
<!--参数校验-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
<!--redis启动依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!--密码加密工具类-->
<dependency>
<groupId>org.mindrot</groupId>
<artifactId>jbcrypt</artifactId>
<version>0.4</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.6</version>
</dependency>
<!-- lombok-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.10</version>
<scope>provided</scope>
</dependency>
</dependencies>
</project>

@ -0,0 +1,28 @@
package com.shanzhu.market;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
* SpringBoot
* "run BackendApplication"
*
* SpringBoothttps://www.php.cn/faq/498384.html
*
* @author: ShanZhu
* @date: 2024-08-16
*/
@Slf4j
@SpringBootApplication
public class BackendApplication {
public static void main(String[] args) {
//SpringBoot 执行启动
SpringApplication.run(BackendApplication.class, args);
log.info("=====================项目后端启动成功============================");
}
}

@ -0,0 +1,35 @@
package com.shanzhu.market.common.advice;
import com.shanzhu.market.common.constants.HttpStatus; // 导入HTTP状态码常量类
import com.shanzhu.market.common.exception.BusinessException; // 导入业务异常类
import com.shanzhu.market.common.web.response.JsonResult; // 导入JSON结果封装类
import org.springframework.web.bind.annotation.ExceptionHandler; // 导入异常处理器注解
import org.springframework.web.bind.annotation.RestControllerAdvice; // 导入REST控制器增强注解
/**
*
*/
@RestControllerAdvice // 标记该类为REST控制器的全局异常处理器
public class ExceptionControllerAdvice {
/**
*
* @param ex
* @return JSON
*/
@ExceptionHandler(RuntimeException.class) // 指定处理的异常类型为RuntimeException
public JsonResult<?> commonExceptionHandler(RuntimeException ex){
ex.printStackTrace(); // 打印异常堆栈信息到控制台
return JsonResult.error(HttpStatus.CODE_BUSINESS_ERROR, ex.getMessage()); // 返回错误的JSON结果
}
/**
*
* @param ex
* @return JSON
*/
@ExceptionHandler(BusinessException.class) // 指定处理的异常类型为BusinessException
public JsonResult<?> businessHanler(BusinessException ex){
return JsonResult.error(HttpStatus.CODE_BUSINESS_ERROR, ex.getMessage()); // 返回错误的JSON结果
}
}

@ -0,0 +1,80 @@
package com.shanzhu.market.common.config;
import com.shanzhu.market.common.sercurity.interceptor.EmpLoginInterceptor; // 导入员工登录拦截器类
import com.shanzhu.market.common.util.PathUtils; // 导入路径工具类
import org.springframework.context.annotation.Bean; // 导入Bean注解
import org.springframework.context.annotation.Configuration; // 导入配置注解
import org.springframework.web.servlet.config.annotation.CorsRegistry; // 导入跨域注册类
import org.springframework.web.servlet.config.annotation.InterceptorRegistry; // 导入拦截器注册类
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; // 导入资源处理器注册类
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; // 导入Web MVC配置接口
/**
* 1.
*/
@Configuration // 标记该类为Spring配置类
public class BaseWebConfig implements WebMvcConfigurer {
/**
* EmpLoginInterceptor
* @return EmpLoginInterceptor
*/
@Bean // 标记该方法返回的对象为Spring管理的Bean
public EmpLoginInterceptor empLoginInterceptor(){
return new EmpLoginInterceptor(); // 创建并返回EmpLoginInterceptor实例
}
/**
*
* @param registry
*/
@Override
public void addInterceptors(InterceptorRegistry registry) {
// 注册EmpLoginInterceptor拦截器并设置拦截路径和排除路径
// registry.addInterceptor(empLoginInterceptor())
// .addPathPatterns("/**") // 拦截所有路径
// .excludePathPatterns("/","/login") // 排除根路径和登录路径
// .excludePathPatterns("/files/**") // 排除文件路径
// .excludePathPatterns("/static/**"); // 排除静态资源路径
}
/**
* 访
* @return WebMvcConfigurer
*/
@Bean // 标记该方法返回的对象为Spring管理的Bean
public WebMvcConfigurer corsConfigurer() {
return new WebMvcConfigurer() { // 创建并返回WebMvcConfigurer实例
@Override
// 重写父类提供的跨域请求处理的接口
public void addCorsMappings(CorsRegistry registry) {
// 添加映射路径
registry.addMapping("/**")
// 放行哪些原始域
.allowedOrigins("*")
// 是否发送Cookie信息
.allowCredentials(true)
// 放行哪些原始域(请求方式)
.allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS")
// 放行哪些原始域(头部信息)
.allowedHeaders("*")
// 暴露哪些头部信息(因为跨域访问默认不能获取全部头部信息)
.exposedHeaders("Header1", "Header2");
}
};
}
/**
*
* @param registry
*/
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
String winPath = PathUtils.getClassLoadRootPath() + "/src/main/resources/static/files/"; // 获取静态文件路径
// 第一个方法设置访问路径前缀,第二个方法设置资源路径
registry.addResourceHandler("/files/**") // 设置访问路径前缀为/files/**
.addResourceLocations("file:" + winPath); // 设置资源路径为静态文件路径
WebMvcConfigurer.super.addResourceHandlers(registry); // 调用父类的addResourceHandlers方法
}
}

@ -0,0 +1,27 @@
package com.shanzhu.market.common.config;
import com.baomidou.mybatisplus.annotation.DbType; // 导入数据库类型枚举类
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; // 导入MyBatis Plus拦截器类
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; // 导入分页拦截器类
import org.springframework.context.annotation.Bean; // 导入Bean注解
import org.springframework.context.annotation.Configuration; // 导入配置注解
/**
* MyBatis Plus
*/
@Configuration // 标记该类为Spring配置类
public class MpConfig {
/**
* MyBatis Plus
* @return MybatisPlusInterceptor
*/
@Bean // 标记该方法返回的对象为Spring管理的Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); // 创建MybatisPlusInterceptor实例
PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor(DbType.MYSQL); // 创建分页拦截器实例并指定数据库类型为MySQL
paginationInnerInterceptor.setOverflow(true); // 启用合理化分页,避免页码超出范围
interceptor.addInnerInterceptor(paginationInnerInterceptor); // 将分页拦截器添加到MybatisPlusInterceptor中
return interceptor; // 返回配置好的MybatisPlusInterceptor实例
}
}

@ -0,0 +1,24 @@
package com.shanzhu.market.common.constants;
public interface HttpStatus {
/**
*
*/
Integer CODE_SUCCESS = 200;
/**
*
*/
Integer CODE_NOLOGIN = 401;
/**
*
*/
Integer CODE_ERROR = 500;
/**
*
*/
Integer CODE_ERROR_PARAM = 400;
/**业务异常*/
Integer CODE_BUSINESS_ERROR=50000;
}

@ -0,0 +1,26 @@
package com.shanzhu.market.common.exception;
import com.shanzhu.market.common.constants.HttpStatus; // 导入HTTP状态码常量类
/**
*
*/
public class BusinessException extends SysException {
/**
* 使
* @param message
* @param code
*/
public BusinessException(String message, Integer code) {
super(message, code); // 调用父类构造函数,传递消息和状态码
}
/**
* 使
* @param msg
*/
public BusinessException(String msg) {
super(msg, HttpStatus.CODE_BUSINESS_ERROR); // 调用父类构造函数,传递消息和默认业务错误状态码
}
}

@ -0,0 +1,46 @@
package com.shanzhu.market.common.exception;
import com.shanzhu.market.common.constants.HttpStatus; // 导入HTTP状态码常量类
/**
*
*/
public class SysException extends RuntimeException {
private Integer code; // 定义状态码字段
/**
* 使
* @param message
* @param code
*/
public SysException(String message, Integer code) {
super(message); // 调用父类构造函数,传递消息
this.code = code; // 设置状态码
}
/**
* 使
* @param msg
*/
public SysException(String msg) {
super(msg); // 调用父类构造函数,传递消息
this.code = HttpStatus.CODE_ERROR; // 设置默认系统错误状态码
}
/**
*
* @return
*/
public Integer getCode() {
return code; // 返回状态码
}
/**
*
* @param code
*/
public void setCode(Integer code) {
this.code = code; // 设置状态码
}
}

@ -0,0 +1,31 @@
package com.shanzhu.market.common.redis.config;
import org.springframework.context.annotation.Bean; // 导入Bean注解
import org.springframework.context.annotation.Configuration; // 导入配置注解
import org.springframework.data.redis.connection.RedisConnectionFactory; // 导入Redis连接工厂接口
import org.springframework.data.redis.core.RedisTemplate; // 导入Redis模板类
import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer; // 导入Jackson序列化器
import org.springframework.data.redis.serializer.StringRedisSerializer; // 导入字符串序列化器
/**
* Redis
*/
@Configuration // 标记该类为Spring配置类
public class RedisConfig {
/**
* RedisTemplate
* @param connectionFactory Redis
* @return RedisTemplate
*/
@Bean // 标记该方法返回的对象为Spring管理的Bean
public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory connectionFactory) {
RedisTemplate<Object, Object> template = new RedisTemplate<>(); // 创建RedisTemplate实例
template.setConnectionFactory(connectionFactory); // 设置Redis连接工厂
template.setKeySerializer(new StringRedisSerializer()); // 设置Redis键的序列化方式为String
template.setValueSerializer(new GenericJackson2JsonRedisSerializer()); // 设置值的序列化方式为Jackson方式默认的序列化方式是JDK的序列化
template.setHashKeySerializer(new StringRedisSerializer()); // 设置哈希键的序列化方式为String
template.setHashValueSerializer(new GenericJackson2JsonRedisSerializer()); // 设置哈希值的序列化方式为Jackson方式
return template; // 返回配置好的RedisTemplate实例
}
}

@ -0,0 +1,123 @@
package com.shanzhu.market.common.redis.constants;
import java.util.concurrent.TimeUnit; // 导入时间单位类
/**
* Redis
*/
public enum RedisKeys {
// 用户注册
LOGIN_USER("LOGIN_USER", 1440L, TimeUnit.MINUTES), // 用户登录信息有效期1440分钟24小时
// 登录密码错误次数
LOGIN_ERRO_PWDNUM("LOGIN_ERRO_PWDNUM", 1L, TimeUnit.DAYS), // 登录密码错误次数有效期1天
// 商品分类信息的缓存
GOODS_CATEGORY("GOODS_CATEGORY", 24L, TimeUnit.HOURS), // 商品分类信息有效期24小时
// 账户冻结6小时
DISABLEUSER("DISABLEUSER", 6L, TimeUnit.HOURS); // 账户冻结状态有效期6小时
private String prefix; // 键前缀
private Long timeout; // 失效时间
private TimeUnit timeUnit; // 时间单位
private final String SEP = ":"; // key分隔符
/**
*
* @param prefix
* @param timeout
* @param timeUnit
*/
RedisKeys(String prefix, Long timeout, TimeUnit timeUnit) {
this.prefix = prefix; // 设置键前缀
this.timeout = timeout; // 设置失效时间
this.timeUnit = timeUnit; // 设置时间单位
}
/**
*
* @param prefix
* @param timeout
*/
RedisKeys(String prefix, Long timeout) {
this(prefix, timeout, TimeUnit.MINUTES); // 调用另一个构造函数,设置默认时间单位为分钟
}
/**
* 30
* @param prefix
*/
RedisKeys(String prefix) {
this(prefix, 30L, TimeUnit.MINUTES); // 调用另一个构造函数,设置默认失效时间和时间单位
}
/**
* Redis
* @param suffix
* @return Redis
*/
public String join(String... suffix) {
StringBuilder sb = new StringBuilder(80); // 创建StringBuilder实例初始容量为80
sb.append(this.prefix); // 添加键前缀
for (String s : suffix) {
sb.append(getSEP()).append(s); // 添加分隔符和后缀
}
return sb.toString(); // 返回完整的Redis键
}
/**
*
* @return
*/
public String getPrefix() {
return prefix; // 返回键前缀
}
/**
*
* @param prefix
*/
public void setPrefix(String prefix) {
this.prefix = prefix; // 设置键前缀
}
/**
*
* @return
*/
public Long getTimeout() {
return timeout; // 返回失效时间
}
/**
*
* @param timeout
*/
public void setTimeout(Long timeout) {
this.timeout = timeout; // 设置失效时间
}
/**
*
* @return
*/
public TimeUnit getTimeUnit() {
return timeUnit; // 返回时间单位
}
/**
*
* @param timeUnit
*/
public void setTimeUnit(TimeUnit timeUnit) {
this.timeUnit = timeUnit; // 设置时间单位
}
/**
*
* @return
*/
public String getSEP() {
return SEP; // 返回键分隔符
}
}

@ -0,0 +1,343 @@
package com.shanzhu.market.common.redis.service;
import org.springframework.beans.factory.annotation.Autowired; // 导入自动装配注解
import org.springframework.data.redis.core.BoundSetOperations; // 导入绑定Set操作类
import org.springframework.data.redis.core.HashOperations; // 导入Hash操作类
import org.springframework.data.redis.core.RedisTemplate; // 导入Redis模板类
import org.springframework.data.redis.core.ValueOperations; // 导入值操作类
import org.springframework.stereotype.Service; // 导入服务注解
import java.util.*; // 导入集合类
import java.util.concurrent.TimeUnit; // 导入时间单位类
/**
* RedisTemplate
*/
@Service // 标记该类为Spring服务类
public class RedisTemplateService {
@Autowired // 自动装配RedisTemplate实例
public RedisTemplate redisTemplate;
/**
* IntegerString
*
* @param key
* @param value
*/
public <T> void setCacheObject(final String key, final T value) {
redisTemplate.opsForValue().set(key, value); // 设置键值对
}
/**
* IntegerString
* key
*
* @param key
* @param value
*/
public <T> void setnxCacheObject(final String key, final T value) {
redisTemplate.opsForValue().setIfAbsent(key, value); // 设置键值对,如果键不存在
}
/**
* IntegerString
* key
*
* @param key
* @param value
* @param timeout
* @param timeUnit
*/
public <T> void setCacheObject(final String key, final T value, final Long timeout, final TimeUnit timeUnit) {
redisTemplate.opsForValue().set(key, value, timeout, timeUnit); // 设置键值对并设置过期时间
}
/**
* IntegerString
*
* @param key
* @param value
* @param timeout
* @param timeUnit
*/
public <T> void setnxCacheObject(final String key, final T value, final Long timeout, final TimeUnit timeUnit) {
redisTemplate.opsForValue().setIfAbsent(key, value, timeout, timeUnit); // 设置键值对并设置过期时间,如果键不存在
}
/**
* keydelta
*
* @param key
* @param delta
* @return
*/
public Long decrementCacheObjectValue(final String key, final long delta) {
return redisTemplate.opsForValue().decrement(key, delta); // 减少指定键的值
}
/**
* key
*
* @param key
* @return
*/
public Long decrementCacheObjectValue(final String key) {
return redisTemplate.opsForValue().decrement(key); // 减少指定键的值
}
/**
*
*
* @param key Redis
* @param timeout
* @return true=false=
*/
public boolean expire(final String key, final long timeout) {
return expire(key, timeout, TimeUnit.SECONDS); // 设置键的过期时间为秒
}
/**
*
*
* @param key Redis
* @param timeout
* @param unit
* @return true=false=
*/
public boolean expire(final String key, final long timeout, final TimeUnit unit) {
return redisTemplate.expire(key, timeout, unit); // 设置键的过期时间
}
/**
*
*
* @param key Redis
* @return
*/
public long getExpire(final String key) {
return redisTemplate.getExpire(key); // 获取键的剩余过期时间
}
/**
* key
*
* @param key
* @return true false
*/
public Boolean hasKey(String key) {
return redisTemplate.hasKey(key); // 判断键是否存在
}
/**
*
*
* @param key
* @return
*/
public <T> T getCacheObject(final String key) {
ValueOperations<String, T> operation = redisTemplate.opsForValue(); // 获取值操作对象
return operation.get(key); // 获取键对应的值
}
/**
*
*
* @param key
* @return
*/
public boolean deleteObject(final String key) {
return redisTemplate.delete(key); // 删除指定键
}
/**
*
*
* @param collection
* @return
*/
public boolean deleteObject(final Collection collection) {
return redisTemplate.delete(collection) > 0; // 删除指定集合中的键
}
/**
* List
*
* @param key
* @param dataList List
* @return
*/
public <T> long setCacheList(final String key, final List<T> dataList) {
Long count = redisTemplate.opsForList().rightPushAll(key, dataList); // 将列表数据添加到键中
return count == null ? 0 : count; // 返回添加的数据数量
}
/**
* list
*
* @param key
* @return
*/
public <T> List<T> getCacheList(final String key) {
return redisTemplate.opsForList().range(key, 0, -1); // 获取键对应的列表数据
}
/**
* Set
*
* @param key
* @param dataSet
* @return
*/
public <T> BoundSetOperations<String, T> setCacheSet(final String key, final Set<T> dataSet) {
BoundSetOperations<String, T> setOperation = redisTemplate.boundSetOps(key); // 获取绑定的Set操作对象
Iterator<T> it = dataSet.iterator();
while (it.hasNext()) {
setOperation.add(it.next()); // 将数据添加到Set中
}
return setOperation; // 返回绑定的Set操作对象
}
/**
* set
*
* @param key
* @return Set
*/
public <T> Set<T> getCacheSet(final String key) {
return redisTemplate.opsForSet().members(key); // 获取键对应的Set数据
}
/**
* valueset
*
* @param key
* @param value
* @param <T>
* @return
*/
/**
* valueset
*
* @param key
* @param value
* @param <T>
* @return settruefalse
*/
public <T> boolean isCacheSetContains(final String key, final T value) {
return redisTemplate.opsForSet().isMember(key, value); // 检查指定的值是否存在于set中
}
/**
* set value
*
* @param key
* @param value
* @param <T>
* @return
*/
public <T> Long deleteCacheSetValue(final String key, final T value) {
return redisTemplate.opsForSet().remove(key, value); // 从set中删除指定的值
}
/**
* setvalue
*
* @param key
* @param value
* @param <T>
* @return
*/
public <T> Long addCacheSetValue(final String key, final T value) {
return redisTemplate.opsForSet().add(key, value); // 向set中添加指定的值
}
/**
* Map
*
* @param key
* @param dataMap Map
*/
public <T> void setCacheMap(final String key, final Map<String, T> dataMap) {
if (dataMap != null) {
redisTemplate.opsForHash().putAll(key, dataMap); // 将Map数据存入缓存
}
}
/**
* Map
*
* @param key
* @return Map
*/
public <T> Map<String, T> getCacheMap(final String key) {
return redisTemplate.opsForHash().entries(key); // 获取缓存中的Map数据
}
/**
* Hash
*
* @param key Redis
* @param hKey Hash
* @param value
*/
public <T> void setCacheMapValue(final String key, final String hKey, final T value) {
redisTemplate.opsForHash().put(key, hKey, value); // 向Hash中存入数据
}
/**
* Hash
*
* @param key Redis
* @param hKey Hash
* @return Hash
*/
public <T> T getCacheMapValue(final String key, final String hKey) {
HashOperations<String, String, T> opsForHash = redisTemplate.opsForHash(); // 获取Hash操作对象
return opsForHash.get(key, hKey); // 获取Hash中的数据
}
/**
* Hash
*
* @param key Redis
* @param hKeys Hash
* @return Hash
*/
public <T> List<T> getMultiCacheMapValue(final String key, final Collection<Object> hKeys) {
return redisTemplate.opsForHash().multiGet(key, hKeys); // 获取多个Hash中的数据
}
/**
* Hash
*
* @param key Redis
* @param hKey Hash
* @return
*/
public boolean deleteCacheMapValue(final String key, final String hKey) {
return redisTemplate.opsForHash().delete(key, hKey) > 0; // 删除Hash中的某条数据
}
/**
* hashhk + increment
*
* @param key Redis
* @param hk Hash
* @param increment
* @return
*/
public Long incrementCacheMapValue(final String key, final Object hk, final long increment) {
return redisTemplate.opsForHash().increment(key, hk, increment); // 增加Hash中hk的值
}
/**
*
*
* @param pattern
* @return
*/
public Collection<String> keys(final String pattern) {
return redisTemplate.keys(pattern); // 获取匹配指定模式的所有键
}
}

@ -0,0 +1,19 @@
package com.shanzhu.market.common.sercurity.annotation;
import java.lang.annotation.ElementType; // 导入元素类型注解
import java.lang.annotation.Retention; // 导入保留策略注解
import java.lang.annotation.RetentionPolicy; // 导入保留策略枚举类
import java.lang.annotation.Target; // 导入目标注解
/**
*
*/
@Target({ElementType.METHOD}) // 指定该注解可以应用于方法
@Retention(RetentionPolicy.RUNTIME) // 指定该注解在运行时保留
public @interface HasPermisson {
/**
*
* @return
*/
String value(); // 定义权限值属性
}

@ -0,0 +1,16 @@
package com.shanzhu.market.common.sercurity.annotation;
import java.lang.annotation.ElementType; // 导入元素类型注解
import java.lang.annotation.Retention; // 导入保留策略注解
import java.lang.annotation.RetentionPolicy; // 导入保留策略枚举类
import java.lang.annotation.Target; // 导入目标注解
/**
*
*
*/
@Target({ElementType.METHOD}) // 指定该注解可以应用于方法
@Retention(RetentionPolicy.RUNTIME) // 指定该注解在运行时保留
public @interface NoRequireLogin {
// 该注解不包含任何属性
}

@ -0,0 +1,117 @@
package com.shanzhu.market.common.sercurity.interceptor;
import com.alibaba.fastjson.JSONObject; // 导入FastJSON库
import com.shanzhu.market.common.constants.HttpStatus; // 导入HTTP状态码常量类
import com.shanzhu.market.common.redis.constants.RedisKeys; // 导入Redis键常量类
import com.shanzhu.market.common.redis.service.RedisTemplateService; // 导入Redis模板服务类
import com.shanzhu.market.common.sercurity.annotation.HasPermisson; // 导入权限注解类
import com.shanzhu.market.common.sercurity.annotation.NoRequireLogin; // 导入不需要登录注解类
import com.shanzhu.market.common.web.response.JsonResult; // 导入JSON结果封装类
import com.shanzhu.market.entity.domain.Employee; // 导入员工实体类
import org.springframework.beans.factory.annotation.Autowired; // 导入自动装配注解
import org.springframework.util.StringUtils; // 导入字符串工具类
import org.springframework.web.method.HandlerMethod; // 导入处理器方法类
import org.springframework.web.servlet.HandlerInterceptor; // 导入处理器拦截器接口
import javax.servlet.http.HttpServletRequest; // 导入HTTP请求类
import javax.servlet.http.HttpServletResponse; // 导入HTTP响应类
/**
*
*/
public class EmpLoginInterceptor implements HandlerInterceptor {
@Autowired
private RedisTemplateService redisTemplateService; // 自动装配Redis模板服务
/**
*
*
* @param request HTTP
* @param response HTTP
* @param handler
* @return
* @throws Exception
*/
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
if (!(handler instanceof HandlerMethod)) {
// 如果处理器不是HandlerMethod类型直接返回true继续处理
return true;
}
response.setHeader("Access-Control-Allow-Origin", "*"); // 设置跨域允许的源
response.setHeader("Cache-Control", "no-cache"); // 设置缓存控制
response.setCharacterEncoding("UTF-8"); // 设置字符编码
response.setContentType("application/json"); // 设置内容类型为JSON
// 获取请求头中的token
String token = request.getHeader("token");
// 获取处理器方法
HandlerMethod handler1 = (HandlerMethod) handler;
// 检查方法是否贴有NoRequireLogin注解
NoRequireLogin noRequireLogin = handler1.getMethodAnnotation(NoRequireLogin.class);
if (noRequireLogin != null) {
// 如果贴有注解直接返回true继续处理
return true;
} else {
if (StringUtils.hasText(token)) {
// 如果token不为空从Redis中获取缓存值
String value2 = redisTemplateService.getCacheObject(token);
if (!StringUtils.hasText(value2)) {
// 如果缓存值为空,返回未登录错误信息
JsonResult res = JsonResult.error(HttpStatus.CODE_BUSINESS_ERROR, "请先登录");
String result = JSONObject.toJSONString(res);
response.getWriter().println(result);
response.getWriter().flush();
return false;
} else {
// 如果缓存有值,延长存储时间
redisTemplateService.expire(token, RedisKeys.LOGIN_USER.getTimeout(), RedisKeys.LOGIN_USER.getTimeUnit());
}
} else {
// 如果没有token返回未登录错误信息
JsonResult res = JsonResult.error(HttpStatus.CODE_BUSINESS_ERROR, "请先登录");
String result = JSONObject.toJSONString(res);
response.getWriter().println(result);
response.getWriter().flush();
return false;
}
}
// 检查方法是否贴有HasPermisson注解
HasPermisson hasPermisson = handler1.getMethodAnnotation(HasPermisson.class);
if (hasPermisson != null) {
if (!StringUtils.hasText(token)) {
// 如果没有token返回未登录错误信息
JsonResult res = JsonResult.error(HttpStatus.CODE_BUSINESS_ERROR, "请先登录");
String result = JSONObject.toJSONString(res);
response.getWriter().println(result);
response.getWriter().flush();
return false;
}
// 从Redis中获取员工信息
Employee employee = JSONObject.parseObject(redisTemplateService.getCacheObject(token), Employee.class);
// 判断是否是系统管理员
if (employee.getIsAdmin()) {
return true;
}
// 获取权限值
String value = hasPermisson.value();
// 检查员工权限是否包含指定权限
boolean contains = employee.getFlags().contains(value);
if (!contains) {
// 如果不包含权限,返回权限不足错误信息
JsonResult res = JsonResult.error(HttpStatus.CODE_BUSINESS_ERROR, "您没有权限操作");
String result = JSONObject.toJSONString(res);
response.getWriter().println(result);
response.getWriter().flush();
return false;
}
}
return true; // 继续处理请求
}
}

@ -0,0 +1,66 @@
package com.shanzhu.market.common.sercurity.resolver;
import com.alibaba.fastjson.JSON; // 导入FastJSON库
import com.shanzhu.market.common.redis.service.RedisTemplateService; // 导入Redis模板服务类
import com.shanzhu.market.entity.domain.Employee; // 导入员工实体类
import org.springframework.beans.factory.annotation.Autowired; // 导入自动装配注解
import org.springframework.core.MethodParameter; // 导入方法参数类
import org.springframework.util.StringUtils; // 导入字符串工具类
import org.springframework.web.bind.support.WebDataBinderFactory; // 导入Web数据绑定工厂类
import org.springframework.web.context.request.NativeWebRequest; // 导入本地Web请求类
import org.springframework.web.method.support.HandlerMethodArgumentResolver; // 导入处理器方法参数解析器接口
import org.springframework.web.method.support.ModelAndViewContainer; // 导入模型和视图容器类
import javax.servlet.http.HttpServletRequest; // 导入HTTP请求类
/**
*
* ()Employee
*/
public class UserInfoArgumentResolver implements HandlerMethodArgumentResolver {
@Autowired
private RedisTemplateService redisService; // 自动装配Redis模板服务
/**
*
*
* @param methodParameter
* @return truefalse
*/
@Override
public boolean supportsParameter(MethodParameter methodParameter) {
// 检查参数类型是否为Employee类并且参数上有UserParam注解
return methodParameter.getParameterType() == Employee.class
&& methodParameter.hasParameterAnnotation(UserParam.class);
}
/**
*
*
* @param methodParameter
* @param modelAndViewContainer
* @param nativeWebRequest Web
* @param webDataBinderFactory Web
* @return
* @throws Exception
*/
@Override
public Object resolveArgument(MethodParameter methodParameter,
ModelAndViewContainer modelAndViewContainer,
NativeWebRequest nativeWebRequest,
WebDataBinderFactory webDataBinderFactory) throws Exception {
// 获取HTTP请求对象
HttpServletRequest request = nativeWebRequest.getNativeRequest(HttpServletRequest.class);
// 从请求头中获取token
String token = request.getHeader("token");
// 从Redis中获取用户信息字符串
String userStr = redisService.getCacheObject(token);
if (!StringUtils.hasText(userStr)) {
// 如果用户信息字符串为空返回null
return null;
}
// 将用户信息字符串解析为Employee对象并返回
return JSON.parseObject(userStr, Employee.class);
}
}

@ -0,0 +1,16 @@
package com.shanzhu.market.common.sercurity.resolver;
import java.lang.annotation.ElementType; // 导入元素类型注解
import java.lang.annotation.Retention; // 导入保留策略注解
import java.lang.annotation.RetentionPolicy; // 导入保留策略枚举类
import java.lang.annotation.Target; // 导入目标注解
/**
* userInfo
* Employee使
*/
@Target({ElementType.PARAMETER}) // 指定该注解可以应用于方法参数
@Retention(RetentionPolicy.RUNTIME) // 指定该注解在运行时保留
public @interface UserParam {
// 该注解不包含任何属性
}

@ -0,0 +1,16 @@
package com.shanzhu.market.common.sercurity.resolver;
import java.lang.annotation.ElementType; // 导入元素类型注解
import java.lang.annotation.Retention; // 导入保留策略注解
import java.lang.annotation.RetentionPolicy; // 导入保留策略枚举类
import java.lang.annotation.Target; // 导入目标注解
/**
* userInfo
* Employee使
*/
@Target({ElementType.PARAMETER}) // 指定该注解可以应用于方法参数
@Retention(RetentionPolicy.RUNTIME) // 指定该注解在运行时保留
public @interface UserParam {
// 该注解不包含任何属性
}

@ -0,0 +1,80 @@
package com.shanzhu.market.common.util;
import org.springframework.web.multipart.MultipartFile; // 导入MultipartFile类
import java.io.File; // 导入File类
import java.io.FileOutputStream; // 导入FileOutputStream类
import java.io.UnsupportedEncodingException; // 导入UnsupportedEncodingException类
import java.net.URLDecoder; // 导入URLDecoder类
/**
*
*/
public class PathUtils {
/**
*
*
* @return
*/
public static String getClassLoadRootPath() {
String path = ""; // 初始化路径字符串
try {
// 获取类加载器的资源路径并解码
String prePath = URLDecoder.decode(PathUtils.class.getClassLoader().getResource("").getPath(), "utf-8").replace("/target/classes", "");
String osName = System.getProperty("os.name"); // 获取操作系统名称
if (osName.toLowerCase().startsWith("mac")) {
// 如果是苹果系统
path = prePath.substring(0, prePath.length() - 1); // 去掉末尾斜杠
} else if (osName.toLowerCase().startsWith("windows")) {
// 如果是Windows系统
path = prePath.substring(1, prePath.length() - 1); // 去掉开头的斜杠和末尾斜杠
} else if (osName.toLowerCase().startsWith("linux") || osName.toLowerCase().startsWith("unix")) {
// 如果是Linux或Unix系统
path = prePath.substring(0, prePath.length() - 1); // 去掉末尾斜杠
} else {
path = prePath.substring(1, prePath.length() - 1); // 默认处理,去掉开头的斜杠和末尾斜杠
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace(); // 打印异常堆栈信息
}
return path; // 返回处理后的路径
}
/**
*
*
* @param multipartFile
* @return
*/
public static String upload(MultipartFile multipartFile) {
String res = null; // 初始化返回的网络路径
try {
// 获取静态文件目录路径
String staticDir = PathUtils.getClassLoadRootPath() + "/src/main/resources/static/files/";
// 如果结果目录不存在,则创建目录
File resDirFile = new File(staticDir);
if (!resDirFile.exists()) {
boolean flag = resDirFile.mkdirs(); // 创建目录
if (!flag) throw new RuntimeException("创建结果目录失败"); // 如果创建失败,抛出异常
}
// 获取MultipartFile的字节数组
byte[] fileBytes = multipartFile.getBytes();
// 加个时间戳防止重名
String newFileName = System.currentTimeMillis() + "_" + multipartFile.getOriginalFilename();
res = "/files/" + newFileName; // 构建文件的网络路径
// 写文件
File file = new File(staticDir + newFileName);
// 将字节数组写入文件
FileOutputStream fos = new FileOutputStream(file);
fos.write(fileBytes); // 写入文件
fos.close(); // 关闭文件输出流
} catch (Exception e) {
e.printStackTrace(); // 打印异常堆栈信息
}
return res; // 返回文件的网络路径
}
}

@ -0,0 +1,36 @@
package com.shanzhu.market.common.util;
/**
*
*/
public class UploadUtil {
// 阿里云OSS域名
private static final String ALI_DOMAIN = "https://zyl-9.oss-cn-chengdu.aliyuncs.com/";
// 阿里云OSS端点
private static final String ENDPOINT = "http://oss-cn-chengdu.aliyuncs.com";
// 阿里云OSS存储桶名称
private static final String BUCKET_NAME = "zyl-9";
// 阿里云OSS访问密钥ID
private static final String ACCESS_KEY_ID = "LTAI5tGxrbz4oXKzQ63LZzQn";
// 阿里云OSS访问密钥密钥
private static final String ACCESS_KEY_SECRET = "Do4mpXNQ4bOTzpNqrUhTeQSSwrXfHe";
// 文件存储路径前缀
private static final String path = "wolf2w-70";
// MultipartFile 对象
// public static String uploadAli(MultipartFile file, String path_suffix) throws Exception {
// // 生成文件名称
// String uuid = UUID.randomUUID().toString();
// String orgFileName = file.getOriginalFilename(); // 获取真实文件名称 xxx.jpg
// String ext = "." + FilenameUtils.getExtension(orgFileName); // 获取扩展名 .jpg
// String fileName = path + path_suffix + "/" + uuid + ext; // 生成文件名 xxxxsfsasa.jpg
// // 创建OSSClient实例。
// OSS ossClient = new OSSClientBuilder().build(ENDPOINT, ACCESS_KEY_ID, ACCESS_KEY_SECRET);
// // 上传文件流。
// ossClient.putObject(BUCKET_NAME, fileName, file.getInputStream());
// // 关闭OSSClient。
// ossClient.shutdown();
// return ALI_DOMAIN + fileName;
// }
}

@ -0,0 +1,172 @@
package com.shanzhu.market.common.web.response;
import com.shanzhu.market.common.constants.HttpStatus; // 导入HTTP状态码常量类
/**
* JSON
*/
public class JsonResult<T> {
// 成功状态码
public static final int CODE_SUCCESS = HttpStatus.CODE_SUCCESS;
// 成功消息
public static final String MSG_SUCCESS = "操作成功";
// 未登录状态码
public static final int CODE_NOLOGIN = HttpStatus.CODE_NOLOGIN;
// 未登录消息
public static final String MSG_NOLOGIN = "请先登录";
// 系统错误状态码
public static final int CODE_ERROR = HttpStatus.CODE_ERROR;
// 系统错误消息
public static final String MSG_ERROR = "系统异常,请联系管理员";
// 参数异常状态码
public static final int CODE_ERROR_PARAM = HttpStatus.CODE_ERROR_PARAM; // 参数异常
private int code; // 区分不同结果, 而不再是true或者false
private String msg; // 消息
private T data; // 除了操作结果之外, 还可以携带数据返回
/**
* codemsgdata
*
* @param code
* @param msg
* @param data
*/
public JsonResult(int code, String msg, T data) {
this.code = code; // 设置状态码
this.msg = msg; // 设置消息
this.data = data; // 设置数据
}
/**
*
*/
public JsonResult() {
}
/**
*
*
* @return
*/
public int getCode() {
return code; // 返回状态码
}
/**
*
*
* @param code
*/
public void setCode(int code) {
this.code = code; // 设置状态码
}
/**
*
*
* @return
*/
public String getMsg() {
return msg; // 返回消息
}
/**
*
*
* @param msg
*/
public void setMsg(String msg) {
this.msg = msg; // 设置消息
}
/**
*
*
* @return
*/
public T getData() {
return data; // 返回数据
}
/**
*
*
* @param data
*/
public void setData(T data) {
this.data = data; // 设置数据
}
/**
* JSON
*
* @param data
* @param <T>
* @return JSON
*/
public static <T> JsonResult success(T data) {
return new JsonResult(CODE_SUCCESS, MSG_SUCCESS, data); // 返回成功的JSON结果
}
/**
* JSON
*
* @return JSON
*/
public static JsonResult success() {
return new JsonResult(CODE_SUCCESS, MSG_SUCCESS, null); // 返回成功的JSON结果
}
/**
* JSON
*
* @param code
* @param msg
* @param data
* @param <T>
* @return JSON
*/
public static <T> JsonResult error(int code, String msg, T data) {
return new JsonResult(code, msg, data); // 返回错误的JSON结果
}
/**
* JSON
*
* @param code
* @param msg
* @return JSON
*/
public static <T> JsonResult error(int code, String msg) {
return new JsonResult(code, msg, null); // 返回错误的JSON结果
}
/**
* JSON
*
* @return JSON
*/
public static JsonResult defaultError() {
return new JsonResult(CODE_ERROR, MSG_ERROR, null); // 返回默认的错误JSON结果
}
/**
* JSON
*
* @return JSON
*/
public static JsonResult noLogin() {
return new JsonResult(CODE_NOLOGIN, MSG_NOLOGIN, null); // 返回未登录的JSON结果
}
/**
* JSON
*
* @return JSON
*/
public static JsonResult noPermission() {
return new JsonResult(403, "非法访问", null); // 返回无权限的JSON结果
}
}

@ -0,0 +1,76 @@
package com.shanzhu.market.controller;
import com.shanzhu.market.common.sercurity.annotation.HasPermisson; // 导入权限注解类
import com.shanzhu.market.common.web.response.JsonResult; // 导入JSON结果封装类
import com.shanzhu.market.entity.domain.Dept; // 导入部门实体类
import com.shanzhu.market.entity.query.QueryDept; // 导入部门查询条件类
import com.shanzhu.market.service.IDeptService; // 导入部门服务接口
import org.springframework.validation.annotation.Validated; // 导入验证注解
import org.springframework.web.bind.annotation.GetMapping; // 导入GET请求注解
import org.springframework.web.bind.annotation.PostMapping; // 导入POST请求注解
import org.springframework.web.bind.annotation.RequestMapping; // 导入请求映射注解
import org.springframework.web.bind.annotation.RestController; // 导入REST控制器注解
import javax.annotation.Resource; // 导入资源注解
/**
*
*/
@RestController // 标记该类为REST控制器
@Validated // 启用方法参数验证
@RequestMapping("/personnel_management/dept") // 设置请求路径前缀
public class DeptController {
@Resource
private IDeptService deptService; // 自动装配部门服务
/**
*
*
* @param dept
* @return JSON
*/
@HasPermisson("personnel_management:dept:save") // 需要权限 "personnel_management:dept:save"
@PostMapping("/save") // 处理POST请求路径为/save
public JsonResult saveDept(Dept dept) {
deptService.saveDept(dept); // 调用服务保存部门信息
return JsonResult.success(); // 返回成功的JSON结果
}
/**
*
*
* @param dept
* @return JSON
*/
@HasPermisson("personnel_management:dept:update") // 需要权限 "personnel_management:dept:update"
@PostMapping("/update") // 处理POST请求路径为/update
public JsonResult updateDept(Dept dept) {
deptService.updateDept(dept); // 调用服务更新部门信息
return JsonResult.success(); // 返回成功的JSON结果
}
/**
*
*
* @param id ID
* @return JSON
*/
@HasPermisson("personnel_management:dept:deactivate") // 需要权限 "personnel_management:dept:deactivate"
@PostMapping("/deactivate") // 处理POST请求路径为/deactivate
public JsonResult deactivate(Long id) {
deptService.forbiddenRole(id); // 调用服务停用部门
return JsonResult.success(); // 返回成功的JSON结果
}
/**
*
*
* @param qo
* @return JSON
*/
@GetMapping("/list") // 处理GET请求路径为/list
public JsonResult listByQo(QueryDept qo) {
return JsonResult.success(deptService.listByQo(qo)); // 调用服务查询部门信息并返回结果
}
}

@ -0,0 +1,159 @@
package com.shanzhu.market.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; // 导入分页类
import com.shanzhu.market.common.sercurity.annotation.HasPermisson; // 导入权限注解类
import com.shanzhu.market.common.sercurity.annotation.NoRequireLogin; // 导入不需要登录注解类
import com.shanzhu.market.common.util.PathUtils; // 导入路径工具类
import com.shanzhu.market.common.web.response.JsonResult; // 导入JSON结果封装类
import com.shanzhu.market.entity.domain.Employee; // 导入员工实体类
import com.shanzhu.market.entity.query.QueryEmp; // 导入员工查询条件类
import com.shanzhu.market.entity.vo.DetailEmpVo; // 导入员工详情视图对象类
import com.shanzhu.market.entity.vo.EditEmpVo; // 导入员工编辑视图对象类
import com.shanzhu.market.service.IEmployeeService; // 导入员工服务接口
import org.springframework.validation.annotation.Validated; // 导入验证注解
import org.springframework.web.bind.annotation.*; // 导入请求映射注解
import org.springframework.web.multipart.MultipartFile; // 导入文件上传类
import javax.annotation.Resource; // 导入资源注解
import javax.servlet.http.HttpServletRequest; // 导入HTTP请求类
import java.util.HashMap; // 导入HashMap类
import java.util.Map; // 导入Map接口
/**
*
*/
@RestController // 标记该类为REST控制器
@Validated // 启用方法参数验证
@RequestMapping("/personnel_management/employee") // 设置请求路径前缀
public class EmployeeController {
@Resource
private IEmployeeService employeeService; // 自动装配员工服务
/**
*
*
* @param qo
* @return JSON
*/
@HasPermisson("personnel_management:employee:list") // 需要权限 "personnel_management:employee:list"
@PostMapping("/list") // 处理POST请求路径为/list
public JsonResult pageByQo(QueryEmp qo) {
Page<Employee> page = employeeService.pageByQo(qo); // 调用服务分页查询员工信息
return JsonResult.success(page); // 返回成功的JSON结果
}
/**
*
*
* @param uid ID
* @return JSON
*/
@HasPermisson("personnel_management:employee:list") // 需要权限 "personnel_management:employee:list"
@GetMapping("/detail") // 处理GET请求路径为/detail
public JsonResult detail(Long uid) {
DetailEmpVo vo = employeeService.detail(uid); // 调用服务查询员工详情
return JsonResult.success(vo); // 返回成功的JSON结果
}
/**
* OSS
* , uploaded: 1 0
*
* @param upload
* @return Map
*/
@NoRequireLogin // 不需要登录即可访问
@PostMapping("/uploadImg") // 处理POST请求路径为/uploadImg
public Map<String, Object> uploadImg(@RequestParam("file") MultipartFile upload) {
Map<String, Object> map = new HashMap<>(); // 创建结果Map
if (upload != null && upload.getSize() > 0) {
String path;
try {
path = PathUtils.upload(upload); // 调用工具类上传文件
map.put("uploaded", 1); // 上传成功
map.put("url", path); // 返回文件路径
} catch (Exception e) {
e.printStackTrace(); // 打印异常堆栈信息
map.put("uploaded", 0); // 上传失败
Map<String, Object> errorMap = new HashMap<>(); // 创建错误信息Map
errorMap.put("message", e.getMessage()); // 设置错误消息
map.put("error", errorMap); // 返回错误信息
}
} else {
map.put("uploaded", 0); // 上传失败
Map<String, Object> errorMap = new HashMap<>(); // 创建错误信息Map
errorMap.put("message", "上传失败,图片文件异常"); // 设置错误消息
map.put("error", errorMap); // 返回错误信息
}
return map; // 返回结果Map
}
/**
*
*
* @param employee
* @param request HTTP
* @return JSON
*/
@HasPermisson("personnel_management:employee:save") // 需要权限 "personnel_management:employee:save"
@PostMapping("/save") // 处理POST请求路径为/save
public JsonResult saveEmp(Employee employee, HttpServletRequest request) {
employeeService.saveEmp(employee, (String) request.getHeader("token")); // 调用服务保存员工信息
return JsonResult.success(); // 返回成功的JSON结果
}
/**
*
*
* @param uid ID
* @return JSON
*/
@HasPermisson("personnel_management:employee:update") // 需要权限 "personnel_management:employee:update"
@GetMapping("/editbtn") // 处理GET请求路径为/editbtn
public JsonResult editbtn(Long uid) {
EditEmpVo vo = employeeService.editbtn(uid); // 调用服务获取员工编辑信息
return JsonResult.success(vo); // 返回成功的JSON结果
}
/**
*
*
* @param employee
* @param request HTTP
* @return JSON
*/
@HasPermisson("personnel_management:employee:update") // 需要权限 "personnel_management:employee:update"
@PostMapping("/update") // 处理POST请求路径为/update
public JsonResult updateEmp(Employee employee, HttpServletRequest request) {
employeeService.updateEmp(employee, (String) request.getHeader("token")); // 调用服务更新员工信息
return JsonResult.success(); // 返回成功的JSON结果
}
/**
*
*
* @param id ID
* @return JSON
*/
@HasPermisson("personnel_management:employee:update") // 需要权限 "personnel_management:employee:update"
@PostMapping("/deactivate") // 处理POST请求路径为/deactivate
public JsonResult deactivate(Long id) {
employeeService.deactivate(id); // 调用服务处理员工离职
return JsonResult.success(); // 返回成功的JSON结果
}
/**
*
*
* @param eid ID
* @param code
* @return JSON
*/
@HasPermisson("personnel_management:employee:resetPwd") // 需要权限 "personnel_management:employee:resetPwd"
@PostMapping("/resetPwd") // 处理POST请求路径为/resetPwd
public JsonResult resetPwd(Long eid, String code) {
employeeService.resetPwd(eid, code); // 调用服务重置员工密码
return JsonResult.success(); // 返回成功的JSON结果
}
}

@ -0,0 +1,138 @@
package com.shanzhu.market.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; // 导入分页类
import com.shanzhu.market.common.sercurity.annotation.HasPermisson; // 导入权限注解类
import com.shanzhu.market.common.web.response.JsonResult; // 导入JSON结果封装类
import com.shanzhu.market.entity.domain.ExchangePointProducts; // 导入兑换积分商品记录实体类
import com.shanzhu.market.entity.domain.PointProducts; // 导入积分商品实体类
import com.shanzhu.market.entity.query.QueryExchangePointProductsRecords; // 导入兑换积分商品记录查询条件类
import com.shanzhu.market.service.IExchangePointProductsService; // 导入兑换积分商品记录服务接口
import org.springframework.validation.annotation.Validated; // 导入验证注解
import org.springframework.web.bind.annotation.GetMapping; // 导入GET请求注解
import org.springframework.web.bind.annotation.PostMapping; // 导入POST请求注解
import org.springframework.web.bind.annotation.RequestMapping; // 导入请求映射注解
import org.springframework.web.bind.annotation.RestController; // 导入REST控制器注解
import javax.annotation.Resource; // 导入资源注解
import javax.servlet.http.HttpServletRequest; // 导入HTTP请求类
import java.util.List; // 导入List接口
import java.util.Map; // 导入Map接口
/**
*
*/
@RestController // 标记该类为REST控制器
@Validated // 启用方法参数验证
@RequestMapping("/sale_management/exchange_point_products_records") // 设置请求路径前缀
public class ExchangePointProductsRecordsController {
@Resource
private IExchangePointProductsService exchangePointProductsService; // 自动装配兑换积分商品记录服务
/**
* ID
*
* @param memberId ID
* @return JSON
*/
@GetMapping("/queryPointProductBymemberId") // 处理GET请求路径为/queryPointProductBymemberId
public JsonResult queryPointProductBymemberId(Long memberId) {
List<Map<String, Object>> list = exchangePointProductsService.queryPointProductBymemberId(memberId); // 调用服务查询兑换积分商品记录
return JsonResult.success(list); // 返回成功的JSON结果
}
/**
* ID
*
* @param goodsId ID
* @return JSON
*/
@GetMapping("/queryMemberByGoodsId") // 处理GET请求路径为/queryMemberByGoodsId
public JsonResult queryMemberByGoodsId(Long goodsId) {
List<Map<String, Object>> list = exchangePointProductsService.queryMemberByGoodsId(goodsId); // 调用服务查询会员信息
return JsonResult.success(list); // 返回成功的JSON结果
}
/**
* ID
*
* @param goodsId ID
* @return JSON
*/
@GetMapping("/queryPointProductByGoodsId") // 处理GET请求路径为/queryPointProductByGoodsId
public JsonResult queryPointProductByGoodsId(Long goodsId) {
PointProducts pointProducts = exchangePointProductsService.queryPointProductByGoodsId(goodsId); // 调用服务查询积分商品信息
return JsonResult.success(pointProducts); // 返回成功的JSON结果
}
/**
*
*
* @param exchangePointProducts
* @param request HTTP
* @return JSON
*/
@PostMapping("/saveExchangePointProductRecords") // 处理POST请求路径为/saveExchangePointProductRecords
public JsonResult saveExchangePointProductRecords(ExchangePointProducts exchangePointProducts, HttpServletRequest request) {
exchangePointProductsService.saveExchangePointProductRecords(exchangePointProducts, (String) request.getHeader("token")); // 调用服务保存兑换积分商品记录
return JsonResult.success(); // 返回成功的JSON结果
}
/**
*
*
* @return JSON
*/
@GetMapping("/queryOptionsMemberPhone") // 处理GET请求路径为/queryOptionsMemberPhone
public JsonResult queryOptionsMemberPhone() {
List<Map<String, Object>> list = exchangePointProductsService.queryOptionsMemberPhone(); // 调用服务查询会员电话选项
return JsonResult.success(list); // 返回成功的JSON结果
}
/**
*
*
* @param cn
* @return JSON
*/
@GetMapping("/delExchangePointProducts") // 处理GET请求路径为/delExchangePointProducts
public JsonResult delExchangePointProducts(String cn) {
exchangePointProductsService.delExchangePointProducts(cn); // 调用服务删除兑换积分商品记录
return JsonResult.success(); // 返回成功的JSON结果
}
/**
*
*
* @param qo
* @return JSON
*/
@HasPermisson("sale_management:exchange_point_products_records:list") // 需要权限 "sale_management:exchange_point_products_records:list"
@PostMapping("/queryPageByQoExchangePointProducts") // 处理POST请求路径为/queryPageByQoExchangePointProducts
public JsonResult queryPageByQoExchangePointProducts(QueryExchangePointProductsRecords qo) {
Page<ExchangePointProducts> page = exchangePointProductsService.queryPageByQoExchangePointProducts(qo); // 调用服务分页查询兑换积分商品记录
return JsonResult.success(page); // 返回成功的JSON结果
}
/**
*
*
* @return JSON
*/
@GetMapping("/queryOptionsPointProducts") // 处理GET请求路径为/queryOptionsPointProducts
public JsonResult queryOptionsPointProducts() {
List<Map<String, Object>> list = exchangePointProductsService.queryOptionsPointProducts(); // 调用服务查询积分商品选项
return JsonResult.success(list); // 返回成功的JSON结果
}
/**
*
*
* @return JSON
*/
@GetMapping("/queryOptionsMember") // 处理GET请求路径为/queryOptionsMember
public JsonResult queryOptionsMember() {
List<Map<String, Object>> list = exchangePointProductsService.queryOptionsMember(); // 调用服务查询会员选项
return JsonResult.success(list); // 返回成功的JSON结果
}
}

@ -0,0 +1,138 @@
package com.shanzhu.market.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; // 导入分页类
import com.shanzhu.market.common.sercurity.annotation.HasPermisson; // 导入权限注解类
import com.shanzhu.market.common.web.response.JsonResult; // 导入JSON结果封装类
import com.shanzhu.market.entity.domain.ExchangePointProducts; // 导入积分兑换商品记录实体类
import com.shanzhu.market.entity.domain.PointProducts; // 导入积分商品实体类
import com.shanzhu.market.entity.query.QueryExchangePointProductsRecords; // 导入积分兑换商品记录查询条件类
import com.shanzhu.market.service.IExchangePointProductsService; // 导入积分兑换商品服务接口
import org.springframework.validation.annotation.Validated; // 导入验证注解
import org.springframework.web.bind.annotation.GetMapping; // 导入GET请求注解
import org.springframework.web.bind.annotation.PostMapping; // 导入POST请求注解
import org.springframework.web.bind.annotation.RequestMapping; // 导入请求映射注解
import org.springframework.web.bind.annotation.RestController; // 导入REST控制器注解
import javax.annotation.Resource; // 导入资源注解
import javax.servlet.http.HttpServletRequest; // 导入HTTP请求类
import java.util.List; // 导入List接口
import java.util.Map; // 导入Map接口
/**
*
*/
@RestController // 标记该类为REST控制器
@Validated // 启用方法参数验证
@RequestMapping("/sale_management/exchange_point_products_records") // 设置请求路径前缀
public class ExchangePointProductsRecordsController {
@Resource
private IExchangePointProductsService exchangePointProductsService; // 自动装配积分兑换商品服务
/**
* ID
*
* @param memberId ID
* @return JSON
*/
@GetMapping("/queryPointProductBymemberId") // 处理GET请求路径为/queryPointProductBymemberId
public JsonResult queryPointProductBymemberId(Long memberId) {
List<Map<String, Object>> list = exchangePointProductsService.queryPointProductBymemberId(memberId); // 调用服务查询积分商品
return JsonResult.success(list); // 返回成功的JSON结果
}
/**
* ID
*
* @param goodsId ID
* @return JSON
*/
@GetMapping("/queryMemberByGoodsId") // 处理GET请求路径为/queryMemberByGoodsId
public JsonResult queryMemberByGoodsId(Long goodsId) {
List<Map<String, Object>> list = exchangePointProductsService.queryMemberByGoodsId(goodsId); // 调用服务查询会员
return JsonResult.success(list); // 返回成功的JSON结果
}
/**
* ID
*
* @param goodsId ID
* @return JSON
*/
@GetMapping("/queryPointProductByGoodsId") // 处理GET请求路径为/queryPointProductByGoodsId
public JsonResult queryPointProductByGoodsId(Long goodsId) {
PointProducts pointProducts = exchangePointProductsService.queryPointProductByGoodsId(goodsId); // 调用服务查询积分商品
return JsonResult.success(pointProducts); // 返回成功的JSON结果
}
/**
*
*
* @param exchangePointProducts
* @param request HTTP
* @return JSON
*/
@PostMapping("/saveExchangePointProductRecords") // 处理POST请求路径为/saveExchangePointProductRecords
public JsonResult saveExchangePointProductRecords(ExchangePointProducts exchangePointProducts, HttpServletRequest request) {
exchangePointProductsService.saveExchangePointProductRecords(exchangePointProducts, (String) request.getHeader("token")); // 调用服务保存积分兑换商品记录
return JsonResult.success(); // 返回成功的JSON结果
}
/**
*
*
* @return JSON
*/
@GetMapping("/queryOptionsMemberPhone") // 处理GET请求路径为/queryOptionsMemberPhone
public JsonResult queryOptionsMemberPhone() {
List<Map<String, Object>> list = exchangePointProductsService.queryOptionsMemberPhone(); // 调用服务查询会员手机号选项
return JsonResult.success(list); // 返回成功的JSON结果
}
/**
*
*
* @param cn
* @return JSON
*/
@GetMapping("/delExchangePointProducts") // 处理GET请求路径为/delExchangePointProducts
public JsonResult delExchangePointProducts(String cn) {
exchangePointProductsService.delExchangePointProducts(cn); // 调用服务删除积分兑换商品记录
return JsonResult.success(); // 返回成功的JSON结果
}
/**
*
*
* @param qo
* @return JSON
*/
@HasPermisson("sale_management:exchange_point_products_records:list") // 需要权限 "sale_management:exchange_point_products_records:list"
@PostMapping("/queryPageByQoExchangePointProducts") // 处理POST请求路径为/queryPageByQoExchangePointProducts
public JsonResult queryPageByQoExchangePointProducts(QueryExchangePointProductsRecords qo) {
Page<ExchangePointProducts> page = exchangePointProductsService.queryPageByQoExchangePointProducts(qo); // 调用服务分页查询积分兑换商品记录
return JsonResult.success(page); // 返回成功的JSON结果
}
/**
*
*
* @return JSON
*/
@GetMapping("/queryOptionsPointProducts") // 处理GET请求路径为/queryOptionsPointProducts
public JsonResult queryOptionsPointProducts() {
List<Map<String, Object>> list = exchangePointProductsService.queryOptionsPointProducts(); // 调用服务查询积分商品选项
return JsonResult.success(list); // 返回成功的JSON结果
}
/**
*
*
* @return JSON
*/
@GetMapping("/queryOptionsMember") // 处理GET请求路径为/queryOptionsMember
public JsonResult queryOptionsMember() {
List<Map<String, Object>> list = exchangePointProductsService.queryOptionsMember(); // 调用服务查询会员选项
return JsonResult.success(list); // 返回成功的JSON结果
}
}

@ -0,0 +1,164 @@
package com.shanzhu.market.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; // 导入分页类
import com.shanzhu.market.common.sercurity.annotation.NoRequireLogin; // 导入不需要登录注解类
import com.shanzhu.market.common.util.PathUtils; // 导入路径工具类
import com.shanzhu.market.common.web.response.JsonResult; // 导入JSON结果封装类
import com.shanzhu.market.entity.domain.DetailStoreGoods; // 导入详细库存商品实体类
import com.shanzhu.market.entity.domain.Goods; // 导入商品实体类
import com.shanzhu.market.entity.query.QueryGoods; // 导入商品查询条件类
import com.shanzhu.market.entity.vo.GoodsListVo; // 导入商品列表视图对象类
import com.shanzhu.market.service.IGoodsService; // 导入商品服务接口
import org.springframework.validation.annotation.Validated; // 导入验证注解
import org.springframework.web.bind.annotation.*; // 导入请求映射注解
import org.springframework.web.multipart.MultipartFile; // 导入文件上传类
import javax.annotation.Resource; // 导入资源注解
import javax.servlet.http.HttpServletRequest; // 导入HTTP请求类
import javax.validation.constraints.NotNull; // 导入非空约束注解
import java.util.HashMap; // 导入HashMap类
import java.util.List; // 导入List接口
import java.util.Map; // 导入Map接口
/**
*
*/
@RestController // 标记该类为REST控制器
@Validated // 启用方法参数验证
@RequestMapping("/goods_management/goods") // 设置请求路径前缀
public class GoodsController {
@Resource
private IGoodsService goodsService; // 自动装配商品服务
/**
*
*
* @param qo
* @return JSON
*/
@PostMapping("/queryPageByQo") // 处理POST请求路径为/queryPageByQo
public JsonResult queryPageByQo(QueryGoods qo) {
Page<GoodsListVo> page = goodsService.queryPageByQo(qo); // 调用服务分页查询商品信息
return JsonResult.success(page); // 返回成功的JSON结果
}
/**
* OSS
* , uploaded: 1 0
*
* @param upload
* @return Map
*/
@NoRequireLogin // 不需要登录即可访问
@PostMapping("/uploadImg") // 处理POST请求路径为/uploadImg
public Map<String, Object> uploadImg(@RequestParam("file") MultipartFile upload) {
Map<String, Object> map = new HashMap<>(); // 创建结果Map
if (upload != null && upload.getSize() > 0) {
String path = "";
try {
path = PathUtils.upload(upload); // 调用工具类上传文件
map.put("uploaded", 1); // 上传成功
map.put("url", path); // 返回文件路径
} catch (Exception e) {
e.printStackTrace(); // 打印异常堆栈信息
map.put("uploaded", 0); // 上传失败
Map<String, Object> errorMap = new HashMap<>(); // 创建错误信息Map
errorMap.put("message", e.getMessage()); // 设置错误消息
map.put("error", errorMap); // 返回错误信息
}
} else {
map.put("uploaded", 0); // 上传失败
Map<String, Object> errorMap = new HashMap<>(); // 创建错误信息Map
errorMap.put("message", "上传失败,图片文件异常"); // 设置错误消息
map.put("error", errorMap); // 返回错误信息
}
return map; // 返回结果Map
}
/**
*
*
* @param goods
* @param request HTTP
* @return JSON
*/
@PostMapping("/save") // 处理POST请求路径为/save
public JsonResult saveGoods(Goods goods, HttpServletRequest request) {
goodsService.saveGoods(goods, (String) request.getHeader("token")); // 调用服务保存商品信息
return JsonResult.success(); // 返回成功的JSON结果
}
/**
* /
*
* @param gid
* @param state /
* @param request HTTP
* @return JSON
*/
@PostMapping("/upOrdown") // 处理POST请求路径为/upOrdown
public JsonResult upOrdown(@NotNull(message = "商品编号不能为空") Long gid, String state, HttpServletRequest request) {
goodsService.upOrdown(gid, state, (String) request.getHeader("token")); // 调用服务上/下架商品
return JsonResult.success(); // 返回成功的JSON结果
}
/**
*
*
* @param id
* @return JSON
*/
@GetMapping("/queryGoodsById") // 处理GET请求路径为/queryGoodsById
public JsonResult queryGoodsById(@NotNull(message = "商品编号不能为空") Long id) {
return JsonResult.success(goodsService.getById(id)); // 调用服务查询商品信息并返回结果
}
/**
*
*
* @param goods
* @param request HTTP
* @return JSON
*/
@PostMapping("/update") // 处理POST请求路径为/update
public JsonResult update(Goods goods, HttpServletRequest request) {
goodsService.updateGoods(goods, (String) request.getHeader("token")); // 调用服务更新商品信息
return JsonResult.success(); // 返回成功的JSON结果
}
/**
*
*
* @return JSON
*/
@GetMapping("/selected_goodsAll") // 处理GET请求路径为/selected_goodsAll
public JsonResult selected_goodsAll() {
List<Map<String, Object>> list = goodsService.selected_goodsAll(); // 调用服务查询所有商品
return JsonResult.success(list); // 返回成功的JSON结果
}
/**
*
*
* @return JSON
*/
@GetMapping("/selected_storeAll") // 处理GET请求路径为/selected_storeAll
public JsonResult selected_storeAll() {
List<Map<String, Object>> list = goodsService.selected_storeAll(); // 调用服务查询所有仓库
return JsonResult.success(list); // 返回成功的JSON结果
}
/**
* 退
*
* @param detailStoreGoods
* @param request HTTP
* @return JSON
*/
@PostMapping("/returnGoods") // 处理POST请求路径为/returnGoods
public JsonResult returnGoods(DetailStoreGoods detailStoreGoods, HttpServletRequest request) {
goodsService.returnGoods(detailStoreGoods, (String) request.getHeader("token")); // 调用服务退还商品入库
return JsonResult.success(); // 返回成功的JSON结果
}
}

@ -0,0 +1,64 @@
package com.shanzhu.market.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; // 导入分页类
import com.shanzhu.market.common.sercurity.annotation.HasPermisson; // 导入权限注解类
import com.shanzhu.market.common.web.response.JsonResult; // 导入JSON结果封装类
import com.shanzhu.market.entity.query.QueryGoodsStore; // 导入商品库存查询条件类
import com.shanzhu.market.entity.vo.GoodsStoreVo; // 导入商品库存视图对象类
import com.shanzhu.market.service.IGoodsService; // 导入商品服务接口
import org.springframework.validation.annotation.Validated; // 导入验证注解
import org.springframework.web.bind.annotation.GetMapping; // 导入GET请求注解
import org.springframework.web.bind.annotation.PostMapping; // 导入POST请求注解
import org.springframework.web.bind.annotation.RequestMapping; // 导入请求映射注解
import org.springframework.web.bind.annotation.RestController; // 导入REST控制器注解
import javax.annotation.Resource; // 导入资源注解
/**
*
*/
@RestController // 标记该类为REST控制器
@Validated // 启用方法参数验证
@RequestMapping("/goods_management/goods_store") // 设置请求路径前缀
public class GoodsStoreController {
@Resource
private IGoodsService goodsService; // 自动装配商品服务
/**
*
*
* @param qo
* @return JSON
*/
@HasPermisson("goods_management:goods_store:list") // 需要权限 "goods_management:goods_store:list"
@PostMapping("/queryPageByQo") // 处理POST请求路径为/queryPageByQo
public JsonResult queryPageByQo(QueryGoodsStore qo) {
Page<GoodsStoreVo> page = goodsService.queryPageGoodsStore(qo); // 调用服务分页查询商品库存信息
return JsonResult.success(page); // 返回成功的JSON结果
}
/**
* ID
*
* @param id ID
* @return JSON
*/
@GetMapping("/queryGoodsStoreById") // 处理GET请求路径为/queryGoodsStoreById
public JsonResult queryGoodsStoreById(Long id) {
GoodsStoreVo vo = goodsService.queryGoodsStoreById(id); // 调用服务查询商品库存信息
return JsonResult.success(vo); // 返回成功的JSON结果
}
/**
*
*
* @param vo
* @return JSON
*/
@PostMapping("/updateInventory") // 处理POST请求路径为/updateInventory
public JsonResult updateInventory(GoodsStoreVo vo) {
goodsService.updateInventory(vo); // 调用服务更新商品库存
return JsonResult.success(); // 返回成功的JSON结果
}
}

@ -0,0 +1,96 @@
package com.shanzhu.market.controller;
import com.shanzhu.market.common.sercurity.annotation.NoRequireLogin; // 导入不需要登录注解类
import com.shanzhu.market.common.web.response.JsonResult; // 导入JSON结果封装类
import com.shanzhu.market.entity.domain.Menu; // 导入菜单实体类
import com.shanzhu.market.service.ILoginService; // 导入登录服务接口
import org.springframework.util.StringUtils; // 导入字符串工具类
import org.springframework.validation.annotation.Validated; // 导入验证注解
import org.springframework.web.bind.annotation.GetMapping; // 导入GET请求注解
import org.springframework.web.bind.annotation.PostMapping; // 导入POST请求注解
import org.springframework.web.bind.annotation.RestController; // 导入REST控制器注解
import javax.annotation.Resource; // 导入资源注解
import javax.servlet.http.HttpServletRequest; // 导入HTTP请求类
import javax.validation.constraints.NotEmpty; // 导入非空约束注解
import java.util.List; // 导入List接口
import java.util.Map; // 导入Map接口
/**
*
*/
@RestController // 标记该类为REST控制器
@Validated // 启用方法参数验证
public class LoginEmpController {
@Resource
private ILoginService loginService; // 自动装配登录服务
/**
*
*
* @param username
* @param password
* @return JSON
*/
@NoRequireLogin // 不需要登录即可访问
@PostMapping("/login") // 处理POST请求路径为/login
public JsonResult login(@NotEmpty(message = "账号不能为空") String username, @NotEmpty(message = "密码不能为空") String password) {
Map<String, Object> map = loginService.login(username, password); // 调用服务进行登录
return JsonResult.success(map); // 返回成功的JSON结果
}
/**
* 退
*
* @param request HTTP
* @return JSON
*/
@NoRequireLogin // 不需要登录即可访问
@GetMapping("/exit") // 处理GET请求路径为/exit
public JsonResult exit(HttpServletRequest request) {
String token = request.getHeader("token"); // 从请求头中获取token
if (StringUtils.hasLength(token)) {
loginService.exit(token); // 调用服务进行退出操作
}
return JsonResult.success(); // 返回成功的JSON结果
}
/**
*
*
* @param content
* @param request HTTP
* @return JSON
*/
@PostMapping("/logout") // 处理POST请求路径为/logout
public JsonResult logout(@NotEmpty(message = "内容不能为空") String content, HttpServletRequest request) {
loginService.logout(request.getHeader("token"), content); // 调用服务进行注销操作
return JsonResult.success(); // 返回成功的JSON结果
}
/**
*
*
* @param request HTTP
* @return JSON
*/
@GetMapping("/empMenu") // 处理GET请求路径为/empMenu
public JsonResult empMenu(HttpServletRequest request) {
List<Menu> menus = loginService.empMenu((String) request.getHeader("token")); // 调用服务查询菜单
return JsonResult.success(menus); // 返回成功的JSON结果
}
/**
* token
*
* @param token token
* @return JSON
*/
@NoRequireLogin // 不需要登录即可访问
@GetMapping("/checkedToken") // 处理GET请求路径为/checkedToken
public JsonResult checkedToken(String token) {
Map<String, Object> map = loginService.checkedToken(token); // 调用服务检查token
return JsonResult.success(map); // 返回成功的JSON结果
}
}

@ -0,0 +1,103 @@
package com.shanzhu.market.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; // 导入分页类
import com.shanzhu.market.common.sercurity.annotation.HasPermisson; // 导入权限注解类
import com.shanzhu.market.common.web.response.JsonResult; // 导入JSON结果封装类
import com.shanzhu.market.entity.domain.Member; // 导入会员实体类
import com.shanzhu.market.entity.query.QueryMember; // 导入会员查询条件类
import com.shanzhu.market.service.IMemberService; // 导入会员服务接口
import org.springframework.validation.annotation.Validated; // 导入验证注解
import org.springframework.web.bind.annotation.GetMapping; // 导入GET请求注解
import org.springframework.web.bind.annotation.PostMapping; // 导入POST请求注解
import org.springframework.web.bind.annotation.RequestMapping; // 导入请求映射注解
import org.springframework.web.bind.annotation.RestController; // 导入REST控制器注解
import javax.annotation.Resource; // 导入资源注解
/**
*
*/
@RestController // 标记该类为REST控制器
@Validated // 启用方法参数验证
@RequestMapping("/member_management/member") // 设置请求路径前缀
public class MemberController {
@Resource
private IMemberService memberService; // 自动装配会员服务
/**
*
*
* @param qo
* @return JSON
*/
@HasPermisson("member_management:member:list") // 需要权限 "member_management:member:list"
@PostMapping("/queryPageByQo") // 处理POST请求路径为/queryPageByQo
public JsonResult queryPageByQo(QueryMember qo) {
Page<Member> page = memberService.queryPageByQo(qo); // 调用服务分页查询会员信息
return JsonResult.success(page); // 返回成功的JSON结果
}
/**
*
*
* @param id ID
* @return JSON
*/
@HasPermisson("member_management:member:delMember") // 需要权限 "member_management:member:delMember"
@PostMapping("/delMember") // 处理POST请求路径为/delMember
public JsonResult delMember(Long id) {
memberService.delMember(id); // 调用服务删除会员
return JsonResult.success(); // 返回成功的JSON结果
}
/**
*
*
* @param member
* @return JSON
*/
@HasPermisson("member_management:member:save") // 需要权限 "member_management:member:save"
@PostMapping("/save") // 处理POST请求路径为/save
public JsonResult save(Member member) {
memberService.saveMember(member); // 调用服务保存会员信息
return JsonResult.success(); // 返回成功的JSON结果
}
/**
* ID
*
* @param id ID
* @return JSON
*/
@GetMapping("/queryMemberById") // 处理GET请求路径为/queryMemberById
public JsonResult queryMemberById(Long id) {
Member member = memberService.queryMemberById(id); // 调用服务查询会员信息
return JsonResult.success(member); // 返回成功的JSON结果
}
/**
*
*
* @param member
* @return JSON
*/
@HasPermisson("member_management:member:update") // 需要权限 "member_management:member:update"
@PostMapping("/update") // 处理POST请求路径为/update
public JsonResult updateMember(Member member) {
memberService.updateMember(member); // 调用服务更新会员信息
return JsonResult.success(); // 返回成功的JSON结果
}
/**
*
*
* @param phone
* @return JSON
*/
@GetMapping("/queryMemberByPhone") // 处理GET请求路径为/queryMemberByPhone
public JsonResult queryMemberByPhone(String phone) {
Member member = memberService.queryMemberByPhone(phone); // 调用服务查询会员信息
return JsonResult.success(member); // 返回成功的JSON结果
}
}

@ -0,0 +1,37 @@
package com.shanzhu.market.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; // 导入分页类
import com.shanzhu.market.common.sercurity.annotation.HasPermisson; // 导入权限注解类
import com.shanzhu.market.common.web.response.JsonResult; // 导入JSON结果封装类
import com.shanzhu.market.entity.domain.Menu; // 导入菜单实体类
import com.shanzhu.market.entity.query.MenuQuery; // 导入菜单查询条件类
import com.shanzhu.market.service.IMenuService; // 导入菜单服务接口
import org.springframework.web.bind.annotation.PostMapping; // 导入POST请求注解
import org.springframework.web.bind.annotation.RequestMapping; // 导入请求映射注解
import org.springframework.web.bind.annotation.RestController; // 导入REST控制器注解
import javax.annotation.Resource; // 导入资源注解
/**
*
*/
@RestController // 标记该类为REST控制器
@RequestMapping("/system/menu") // 设置请求路径前缀
public class MenuController {
@Resource
private IMenuService menuService; // 自动装配菜单服务
/**
*
*
* @param qo
* @return JSON
*/
@HasPermisson("system:menu:list") // 需要权限 "system:menu:list"
@PostMapping("/queryPageByQo") // 处理POST请求路径为/queryPageByQo
public JsonResult queryPageByQo(MenuQuery qo) {
Page<Menu> page = menuService.queryPageByQo(qo); // 调用服务分页查询菜单信息
return JsonResult.success(page); // 返回成功的JSON结果
}
}

@ -0,0 +1,98 @@
package com.shanzhu.market.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; // 导入分页类
import com.shanzhu.market.common.sercurity.annotation.HasPermisson; // 导入权限注解类
import com.shanzhu.market.common.web.response.JsonResult; // 导入JSON结果封装类
import com.shanzhu.market.entity.domain.DetailStoreGoods; // 导入详细库存商品实体类
import com.shanzhu.market.entity.domain.NoticeIn; // 导入入库通知实体类
import com.shanzhu.market.entity.domain.NoticeOut; // 导出入库通知实体类
import com.shanzhu.market.entity.query.QueryNoticeIn; // 导入入库通知查询条件类
import com.shanzhu.market.entity.query.QueryNoticeOut; // 导出入库通知查询条件类
import com.shanzhu.market.entity.vo.NoticeInNotNormalVo; // 导入入库通知非正常视图对象类
import com.shanzhu.market.service.IGoodsService; // 导入商品服务接口
import org.springframework.validation.annotation.Validated; // 导入验证注解
import org.springframework.web.bind.annotation.PostMapping; // 导入POST请求注解
import org.springframework.web.bind.annotation.RequestMapping; // 导入请求映射注解
import org.springframework.web.bind.annotation.RestController; // 导入REST控制器注解
import javax.annotation.Resource; // 导入资源注解
import javax.servlet.http.HttpServletRequest; // 导入HTTP请求类
/**
*
*/
@RestController // 标记该类为REST控制器
@Validated // 启用方法参数验证
@RequestMapping("/inventory_management/detail_store_goods/notice") // 设置请求路径前缀
public class NoticeController {
@Resource
private IGoodsService goodsService; // 自动装配商品服务
/**
*
*
* @param qo
* @return JSON
*/
@HasPermisson("inventory_management:detail_store_goods_in:notice:list") // 需要权限 "inventory_management:detail_store_goods_in:notice:list"
@PostMapping("/queryPageNoticeIn") // 处理POST请求路径为/queryPageNoticeIn
public JsonResult queryPageNoticeIn(QueryNoticeIn qo) {
Page<NoticeIn> page = goodsService.queryPageNoticeIn(qo); // 调用服务分页查询入库通知信息
return JsonResult.success(page); // 返回成功的JSON结果
}
/**
*
*
* @param qo
* @return JSON
*/
@HasPermisson("inventory_management:detail_store_goods_out:notice:list") // 需要权限 "inventory_management:detail_store_goods_out:notice:list"
@PostMapping("/queryPageNoticeOut_shelves") // 处理POST请求路径为/queryPageNoticeOut_shelves
public JsonResult queryPageNoticeOut_shelves(QueryNoticeOut qo) {
Page<NoticeOut> page = goodsService.queryPageNoticeOut_shelves(qo); // 调用服务分页查询出库通知信息(已上架)
return JsonResult.success(page); // 返回成功的JSON结果
}
/**
*
*
* @param detailStoreGoods
* @param request HTTP
* @return JSON
*/
@HasPermisson("inventory_management:detail_store_goods_out:notice:saveOut_shelves") // 需要权限 "inventory_management:detail_store_goods_out:notice:saveOut_shelves"
@PostMapping("/saveOut_shelves") // 处理POST请求路径为/saveOut_shelves
public JsonResult saveOut_shelves(DetailStoreGoods detailStoreGoods, HttpServletRequest request) {
goodsService.saveOut_shelves(detailStoreGoods, (String) request.getHeader("token")); // 调用服务保存出库通知(上架)
return JsonResult.success(); // 返回成功的JSON结果
}
/**
*
*
* @param qo
* @return JSON
*/
@HasPermisson("inventory_management:detail_store_goods_out:notice:list") // 需要权限 "inventory_management:detail_store_goods_out:notice:list"
@PostMapping("/queryPageNoticeOut_untreated") // 处理POST请求路径为/queryPageNoticeOut_untreated
public JsonResult queryPageNoticeOut_untreated(QueryNoticeOut qo) {
Page<NoticeInNotNormalVo> page = goodsService.queryPageNoticeOut_untreated(qo); // 调用服务分页查询出库通知信息(未处理)
return JsonResult.success(page); // 返回成功的JSON结果
}
/**
*
*
* @param vo
* @param request HTTP
* @return JSON
*/
@HasPermisson("inventory_management:detail_store_goods_out:notice:resolveOutUntreatedForm") // 需要权限 "inventory_management:detail_store_goods_out:notice:resolveOutUntreatedForm"
@PostMapping("/resolveOutUntreatedForm") // 处理POST请求路径为/resolveOutUntreatedForm
public JsonResult resolveOutUntreatedForm(NoticeInNotNormalVo vo, HttpServletRequest request) {
goodsService.resolveOutUntreatedForm(vo, (String) request.getHeader("token")); // 调用服务处理出库通知(未处理)
return JsonResult.success(); // 返回成功的JSON结果
}
}

@ -0,0 +1,56 @@
package com.shanzhu.market.controller;
import com.shanzhu.market.common.sercurity.annotation.HasPermisson; // 导入权限注解类
import com.shanzhu.market.common.web.response.JsonResult; // 导入JSON结果封装类
import com.shanzhu.market.entity.query.QueryEditPwd; // 导入修改密码查询条件类
import com.shanzhu.market.entity.vo.InformationVo; // 导入个人信息视图对象类
import com.shanzhu.market.service.IEmployeeService; // 导入员工服务接口
import org.springframework.validation.annotation.Validated; // 导入验证注解
import org.springframework.web.bind.annotation.GetMapping; // 导入GET请求注解
import org.springframework.web.bind.annotation.PostMapping; // 导入POST请求注解
import org.springframework.web.bind.annotation.RequestMapping; // 导入请求映射注解
import org.springframework.web.bind.annotation.RestController; // 导入REST控制器注解
import javax.annotation.Resource; // 导入资源注解
import javax.servlet.http.HttpServletRequest; // 导入HTTP请求类
/**
*
*/
@RestController // 标记该类为REST控制器
@Validated // 启用方法参数验证
@RequestMapping("/personal") // 设置请求路径前缀
public class PersonalController {
@Resource
private IEmployeeService employeeService; // 自动装配员工服务
/**
*
*
* @param request HTTP
* @param editPwd
* @return JSON
*/
@HasPermisson("personal:edit_pwd") // 需要权限 "personal:edit_pwd"
@PostMapping("/edit_pwd") // 处理POST请求路径为/edit_pwd
public JsonResult edit_pwd(HttpServletRequest request, QueryEditPwd editPwd) {
String token = request.getHeader("token"); // 从请求头中获取token
employeeService.edit_pwd(editPwd, token); // 调用服务修改密码
return JsonResult.success(); // 返回成功的JSON结果
}
/**
*
*
* @param request HTTP
* @return JSON
*/
@HasPermisson("personnel_management:employee:update") // 需要权限 "personnel_management:employee:update"
@GetMapping("/information") // 处理GET请求路径为/information
public JsonResult information(HttpServletRequest request) {
String token = request.getHeader("token"); // 从请求头中获取token
InformationVo vo = employeeService.information(token); // 调用服务获取个人信息
return JsonResult.success(vo); // 返回成功的JSON结果
}
}

@ -0,0 +1,105 @@
package com.shanzhu.market.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; // 导入查询条件包装类
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; // 导入分页类
import com.shanzhu.market.common.sercurity.annotation.HasPermisson; // 导入权限注解类
import com.shanzhu.market.common.web.response.JsonResult; // 导入JSON结果封装类
import com.shanzhu.market.entity.domain.PointProducts; // 导入积分商品实体类
import com.shanzhu.market.entity.query.QueryPointProducts; // 导入积分商品查询条件类
import com.shanzhu.market.service.IPointProductsService; // 导入积分商品服务接口
import org.springframework.validation.annotation.Validated; // 导入验证注解
import org.springframework.web.bind.annotation.GetMapping; // 导入GET请求注解
import org.springframework.web.bind.annotation.PostMapping; // 导入POST请求注解
import org.springframework.web.bind.annotation.RequestMapping; // 导入请求映射注解
import org.springframework.web.bind.annotation.RestController; // 导入REST控制器注解
import javax.annotation.Resource; // 导入资源注解
import javax.servlet.http.HttpServletRequest; // 导入HTTP请求类
import java.util.List; // 导入List接口
import java.util.Map; // 导入Map接口
/**
*
*/
@RestController // 标记该类为REST控制器
@Validated // 启用方法参数验证
@RequestMapping("/goods_management/point_products") // 设置请求路径前缀
public class PointProductController {
@Resource
private IPointProductsService pointProductsService; // 自动装配积分商品服务
/**
*
*
* @param qo
* @return JSON
*/
@HasPermisson("goods_management:point_products:list") // 需要权限 "goods_management:point_products:list"
@PostMapping("/queryPageByQo") // 处理POST请求路径为/queryPageByQo
public JsonResult queryPageByQo(QueryPointProducts qo) {
Page<PointProducts> page = pointProductsService.queryPageByQo(qo); // 调用服务分页查询积分商品信息
return JsonResult.success(page); // 返回成功的JSON结果
}
/**
*
*
* @param id ID
* @return JSON
*/
@GetMapping("/del") // 处理GET请求路径为/del
public JsonResult del(Long id) {
pointProductsService.del(id); // 调用服务删除积分商品
return JsonResult.success(); // 返回成功的JSON结果
}
/**
*
*
* @return JSON
*/
@GetMapping("/queryOptionGoods") // 处理GET请求路径为/queryOptionGoods
public JsonResult queryOptionGoods() {
List<Map<String, Object>> list = pointProductsService.queryOptionGoods(); // 调用服务查询所有商品选项
return JsonResult.success(list); // 返回成功的JSON结果
}
/**
*
*
* @param pointProducts
* @param request HTTP
* @return JSON
*/
@PostMapping("/savePointGoods") // 处理POST请求路径为/savePointGoods
public JsonResult savePointGoods(PointProducts pointProducts, HttpServletRequest request) {
pointProductsService.savePointGoods(pointProducts, (String) request.getHeader("token")); // 调用服务保存积分商品
return JsonResult.success(); // 返回成功的JSON结果
}
/**
* ID
*
* @param goodsId ID
* @return JSON
*/
@GetMapping("/queryPointGoodsById") // 处理GET请求路径为/queryPointGoodsById
public JsonResult queryPointGoodsById(Long goodsId) {
PointProducts pointProducts = pointProductsService.getOne(new QueryWrapper<PointProducts>().eq("goods_id", goodsId)); // 调用服务查询积分商品信息
return JsonResult.success(pointProducts); // 返回成功的JSON结果
}
/**
*
*
* @param pointProducts
* @param request HTTP
* @return JSON
*/
@PostMapping("/updatePointGoods") // 处理POST请求路径为/updatePointGoods
public JsonResult updatePointGoods(PointProducts pointProducts, HttpServletRequest request) {
pointProductsService.updatePointGoods(pointProducts, (String) request.getHeader("token")); // 调用服务更新积分商品信息
return JsonResult.success(); // 返回成功的JSON结果
}
}

@ -0,0 +1,115 @@
package com.shanzhu.market.controller;
import com.shanzhu.market.common.exception.BusinessException; // 导入业务异常类
import com.shanzhu.market.common.sercurity.annotation.HasPermisson; // 导入权限注解类
import com.shanzhu.market.common.web.response.JsonResult; // 导入JSON结果类
import com.shanzhu.market.entity.domain.Role; // 导入角色实体类
import com.shanzhu.market.entity.query.RoleQuery; // 导入角色查询对象类
import com.shanzhu.market.entity.vo.RolePermissonVo; // 导入角色权限视图对象类
import com.shanzhu.market.service.IRoleService; // 导入角色服务接口
import org.springframework.util.StringUtils; // 导入Spring工具类
import org.springframework.validation.annotation.Validated; // 导入验证注解类
import org.springframework.web.bind.annotation.*; // 导入Spring Web注解类
import javax.annotation.Resource; // 导入资源注解类
import javax.servlet.http.HttpServletRequest; // 导入HTTP请求类
import javax.validation.constraints.NotNull; // 导入非空注解类
import java.util.List; // 导入列表类
import java.util.Map; // 导入映射类
@RestController // 标记为REST控制器
@Validated // 启用方法级别的验证
@RequestMapping("/system/role") // 设置请求路径前缀
public class RoleController {
@Resource // 注入角色服务
private IRoleService roleService;
/**
*
*
* @return JSON
*/
@HasPermisson("system:role:list") // 需要system:role:list权限
@PostMapping("/list") // 处理POST请求路径为/list
public JsonResult list(RoleQuery qo) {
List<Role> roles = roleService.listByQo(qo); // 调用服务查询角色列表
return JsonResult.success(roles); // 返回成功结果,包含角色列表
}
/**
*
*/
@HasPermisson("system:role:forbiddenRole") // 需要system:role:forbiddenRole权限
@PostMapping("/forbiddenRole") // 处理POST请求路径为/forbiddenRole
public JsonResult forbiddenRole(Long rid) {
roleService.forbiddenRole(rid); // 调用服务停用角色
return JsonResult.success(); // 返回成功结果
}
/**
*
*/
@HasPermisson("system:role:edit_role") // 需要system:role:edit_role权限
@PostMapping("/edit_role") // 处理POST请求路径为/edit_role
public JsonResult edit_role(Role role) {
if (Role.SYS_ID == role.getId() || 2L == role.getId()) { // 检查是否为系统角色
throw new BusinessException("不能停用系统拥有者"); // 抛出业务异常
}
if (role != null && StringUtils.hasText(role.getInfo())) { // 检查角色信息是否为空
roleService.updateById(role); // 调用服务更新角色信息
}
return JsonResult.success(); // 返回成功结果
}
/**
*
*/
@HasPermisson("system:role:save") // 需要system:role:save权限
@PostMapping("/save") // 处理POST请求路径为/save
public JsonResult save(Role role) {
roleService.saveRole(role); // 调用服务保存角色信息
return JsonResult.success(); // 返回成功结果
}
/**
*
*/
@HasPermisson("system:role:saveRolePermissons") // 需要system:role:saveRolePermissons权限
@GetMapping("/checkPermissons") // 处理GET请求路径为/checkPermissons
public JsonResult checkPermissons(@NotNull(message = "角色不能为空") Long rid) {
RolePermissonVo vo = roleService.checkPermissons(rid); // 调用服务查询角色权限
return JsonResult.success(vo); // 返回成功结果,包含角色权限信息
}
/**
* -
*/
@HasPermisson("system:role:saveRolePermissons") // 需要system:role:saveRolePermissons权限
@PostMapping("/saveRolePermissons") // 处理POST请求路径为/saveRolePermissons
public JsonResult saveRolePermissons(@NotNull(message = "角色不能为空") @RequestParam("rid") Long rid, @RequestParam("menuIds") Long[] menuIds) {
roleService.saveRolePermissons(rid, menuIds); // 调用服务保存角色-菜单关系
return JsonResult.success(); // 返回成功结果
}
@GetMapping("/all") // 处理GET请求路径为/all
public JsonResult getRoleAll() {
List<Map<String, Object>> list = roleService.getRoleAll(); // 调用服务获取所有角色信息
return JsonResult.success(list); // 返回成功结果,包含所有角色信息
}
@HasPermisson("personnel_management:employee:queryRoleIdsByEid") // 需要personnel_management:employee:queryRoleIdsByEid权限
@GetMapping("/queryRoleIdsByEid") // 处理GET请求路径为/queryRoleIdsByEid
public JsonResult queryRoleIdsByEid(Long eid) {
List<Long> list = roleService.queryRoleIdsByEid(eid); // 调用服务查询员工角色ID列表
return JsonResult.success(list); // 返回成功结果包含员工角色ID列表
}
@HasPermisson("personnel_management:employee:queryRoleIdsByEid") // 需要personnel_management:employee:queryRoleIdsByEid权限
@PostMapping("/saveRoleEmp") // 处理POST请求路径为/saveRoleEmp
public JsonResult saveRoleEmp(Long eid, Long[] empRoleIds, HttpServletRequest request) {
String token = request.getHeader("token"); // 从请求头获取token
roleService.saveRoleEmp(eid, empRoleIds, token); // 调用服务保存员工角色信息
return JsonResult.success(); // 返回成功结果
}
}

@ -0,0 +1,55 @@
package com.shanzhu.market.controller;
import com.baomidou.mybatisplus.core.toolkit.IdWorker; // 导入ID生成工具类
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; // 导入分页类
import com.shanzhu.market.common.sercurity.annotation.HasPermisson; // 导入权限注解类
import com.shanzhu.market.common.web.response.JsonResult; // 导入JSON结果类
import com.shanzhu.market.entity.domain.SaleRecords; // 导入销售记录实体类
import com.shanzhu.market.entity.query.QuerySaleRecords; // 导入销售记录查询对象类
import com.shanzhu.market.service.ISaleRecordsService; // 导入销售记录服务接口
import org.springframework.validation.annotation.Validated; // 导入验证注解类
import org.springframework.web.bind.annotation.*; // 导入Spring Web注解类
import javax.annotation.Resource; // 导入资源注解类
import javax.servlet.http.HttpServletRequest; // 导入HTTP请求类
import java.util.List; // 导入列表类
import java.util.Map; // 导入映射类
@RestController // 标记为REST控制器
@Validated // 启用方法级别的验证
@RequestMapping("/sale_management/sale_record") // 设置请求路径前缀
public class SaleRecordController {
@Resource // 注入销售记录服务
private ISaleRecordsService saleRecordsService;
@GetMapping("/getCn") // 处理GET请求路径为/getCn
public JsonResult getCn(){
return JsonResult.success(IdWorker.getIdStr()); // 生成并返回唯一ID
}
@GetMapping("/getOptionSaleRecordsGoods") // 处理GET请求路径为/getOptionSaleRecordsGoods
public JsonResult getOptionSaleRecordsGoods(){
List<Map<String,Object>> list=saleRecordsService.getOptionSaleRecordsGoods(); // 调用服务获取销售记录商品选项
return JsonResult.success(list); // 返回成功结果,包含商品选项列表
}
@PostMapping("/saveSaleRecords") // 处理POST请求路径为/saveSaleRecords
public JsonResult saveSaleRecords(@RequestBody SaleRecords saleRecords, HttpServletRequest request){
saleRecords=saleRecordsService.saveSaleRecords(saleRecords,(String) request.getHeader("token")); // 调用服务保存销售记录
return JsonResult.success(saleRecords); // 返回成功结果,包含保存后的销售记录
}
@HasPermisson("sale_management:sale_records:list") // 需要sale_management:sale_records:list权限
@PostMapping("/queryPageByQoSaleRecords") // 处理POST请求路径为/queryPageByQoSaleRecords
public JsonResult queryPageByQoSaleRecords(QuerySaleRecords qo){
Page<SaleRecords> page=saleRecordsService.queryPageByQoSaleRecords(qo); // 调用服务分页查询销售记录
return JsonResult.success(page); // 返回成功结果,包含分页后的销售记录
}
@GetMapping("/delSaleRecords") // 处理GET请求路径为/delSaleRecords
public JsonResult delSaleRecords(String cn){
saleRecordsService.delSaleRecords(cn); // 调用服务删除销售记录
return JsonResult.success(); // 返回成功结果
}
}

@ -0,0 +1,30 @@
package com.shanzhu.market.controller;
import com.shanzhu.market.common.sercurity.annotation.HasPermisson; // 导入权限注解类
import com.shanzhu.market.common.web.response.JsonResult; // 导入JSON结果类
import com.shanzhu.market.entity.query.QueryStatisticSale; // 导入销售统计查询对象类
import com.shanzhu.market.entity.vo.SalesStatisticsVo; // 导入销售统计视图对象类
import com.shanzhu.market.service.IGoodsService; // 导入商品服务接口
import org.springframework.validation.annotation.Validated; // 导入验证注解类
import org.springframework.web.bind.annotation.PostMapping; // 导入POST请求注解类
import org.springframework.web.bind.annotation.RequestMapping; // 导入请求路径注解类
import org.springframework.web.bind.annotation.RestController; // 导入REST控制器注解类
import javax.annotation.Resource; // 导入资源注解类
@RestController // 标记为REST控制器
@Validated // 启用方法级别的验证
@RequestMapping("/goods_management/statistic_sale") // 设置请求路径前缀
public class StatisticSaleController {
@Resource // 注入商品服务
private IGoodsService goodsService;
@HasPermisson("goods_management:statistic_sale:list") // 需要goods_management:statistic_sale:list权限
@PostMapping("/queryPageByQo") // 处理POST请求路径为/queryPageByQo
public JsonResult queryPageByQo(QueryStatisticSale qo) {
SalesStatisticsVo vo = goodsService.queryPageStatisticSaleByQo(qo); // 调用服务查询分页销售统计信息
return JsonResult.success(vo); // 返回成功结果,包含销售统计信息
}
}

@ -0,0 +1,38 @@
package com.shanzhu.market.controller;
import com.shanzhu.market.common.sercurity.annotation.HasPermisson; // 导入权限注解类
import com.shanzhu.market.common.web.response.JsonResult; // 导入JSON结果类
import com.shanzhu.market.entity.query.QueryDetailStorageSituation; // 导入详细库存情况查询对象类
import com.shanzhu.market.entity.query.QueryStorageSituation; // 导入库存情况查询对象类
import com.shanzhu.market.service.IGoodsStoreService; // 导入商品库存服务接口
import org.springframework.validation.annotation.Validated; // 导入验证注解类
import org.springframework.web.bind.annotation.PostMapping; // 导入POST请求注解类
import org.springframework.web.bind.annotation.RequestMapping; // 导入请求路径注解类
import org.springframework.web.bind.annotation.RestController; // 导入REST控制器注解类
import javax.annotation.Resource; // 导入资源注解类
import java.util.Map; // 导入映射类
@RestController // 标记为REST控制器
@Validated // 启用方法级别的验证
@RequestMapping("/inventory_management/store/storage_situation") // 设置请求路径前缀
public class StorageSituationController {
@Resource // 注入商品库存服务
private IGoodsStoreService goodsStoreService;
@HasPermisson("inventory_management:store:storage_situation") // 需要inventory_management:store:storage_situation权限
@PostMapping("/queryPageByQo") // 处理POST请求路径为/queryPageByQo
public JsonResult queryPageByQo(QueryStorageSituation qo) {
Map<String, Object> map = goodsStoreService.queryPageStorageSituationByQo(qo); // 调用服务查询分页库存情况
return JsonResult.success(map); // 返回成功结果,包含分页库存情况
}
@HasPermisson("inventory_management:store:storage_situation") // 需要inventory_management:store:storage_situation权限
@PostMapping("/queryStoreGoodsByStoreId") // 处理POST请求路径为/queryStoreGoodsByStoreId
public JsonResult queryStoreGoodsByStoreId(QueryDetailStorageSituation qo) {
Map<String, Object> map = goodsStoreService.queryStoreGoodsByStoreId(qo); // 调用服务查询指定仓库的商品库存情况
return JsonResult.success(map); // 返回成功结果,包含指定仓库的商品库存情况
}
}

@ -0,0 +1,59 @@
package com.shanzhu.market.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; // 导入MyBatis-Plus查询包装器类
import com.shanzhu.market.common.sercurity.annotation.HasPermisson; // 导入权限注解类
import com.shanzhu.market.common.web.response.JsonResult; // 导入JSON结果类
import com.shanzhu.market.entity.domain.Store; // 导入仓库实体类
import com.shanzhu.market.entity.query.QueryStore; // 导入仓库查询对象类
import com.shanzhu.market.service.IStoreService; // 导入仓库服务接口
import org.springframework.util.StringUtils; // 导入Spring工具类
import org.springframework.validation.annotation.Validated; // 导入验证注解类
import org.springframework.web.bind.annotation.PostMapping; // 导入POST请求注解类
import org.springframework.web.bind.annotation.RequestMapping; // 导入请求路径注解类
import org.springframework.web.bind.annotation.RestController; // 导入REST控制器注解类
import javax.annotation.Resource; // 导入资源注解类
@RestController // 标记为REST控制器
@Validated // 启用方法级别的验证
@RequestMapping("/inventory_management/store") // 设置请求路径前缀
public class StoreController {
@Resource // 注入仓库服务
private IStoreService storeService;
/*保存仓库信息接口*/
@HasPermisson("inventory_management:store:save") // 需要inventory_management:store:save权限
@PostMapping("/save") // 处理POST请求路径为/save
public JsonResult saveStore(Store store){
storeService.saveStore(store); // 调用服务保存仓库信息
return JsonResult.success(); // 返回成功结果
}
/*修改仓库接口*/
@HasPermisson("inventory_management:store:update") // 需要inventory_management:store:update权限
@PostMapping("/update") // 处理POST请求路径为/update
public JsonResult updateStore(Store store){
storeService.updateStore(store); // 调用服务更新仓库信息
return JsonResult.success(); // 返回成功结果
}
/*停用仓库*/
@HasPermisson("inventory_management:store:deactivate") // 需要inventory_management:store:deactivate权限
@PostMapping("/deactivate") // 处理POST请求路径为/deactivate
public JsonResult deactivate(Long sid){
storeService.deactivate(sid); // 调用服务停用仓库
return JsonResult.success(); // 返回成功结果
}
/*查询仓库信息*/
@HasPermisson("inventory_management:store:list") // 需要inventory_management:store:list权限
@PostMapping("/list") // 处理POST请求路径为/list
public JsonResult list(QueryStore qo){
return JsonResult.success(storeService.list( new QueryWrapper<Store>() // 调用服务查询仓库信息
.like(StringUtils.hasText(qo.getName()),"name",qo.getName()) // 根据名称模糊查询
.eq(StringUtils.hasText(qo.getState()),"state",qo.getState()) // 根据状态精确查询
));
}
}

@ -0,0 +1,61 @@
package com.shanzhu.market.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; // 导入分页类
import com.shanzhu.market.common.sercurity.annotation.HasPermisson; // 导入权限注解类
import com.shanzhu.market.common.web.response.JsonResult; // 导入JSON结果类
import com.shanzhu.market.entity.domain.DetailStoreGoods; // 导入仓库商品详情实体类
import com.shanzhu.market.entity.query.QueryDetailStoreGoods; // 导入仓库商品详情查询对象类
import com.shanzhu.market.entity.vo.DetailStoreGoodsVo; // 导入仓库商品详情视图对象类
import com.shanzhu.market.service.IDetailStoreGoodsService; // 导入仓库商品详情服务接口
import com.shanzhu.market.service.ISupplierService; // 导入供应商服务接口
import org.springframework.validation.annotation.Validated; // 导入验证注解类
import org.springframework.web.bind.annotation.GetMapping; // 导入GET请求注解类
import org.springframework.web.bind.annotation.PostMapping; // 导入POST请求注解类
import org.springframework.web.bind.annotation.RequestMapping; // 导入请求路径注解类
import org.springframework.web.bind.annotation.RestController; // 导入REST控制器注解类
import javax.annotation.Resource; // 导入资源注解类
import javax.servlet.http.HttpServletRequest; // 导入HTTP请求类
import javax.validation.constraints.NotEmpty; // 导入非空注解类
import java.util.List; // 导入列表类
import java.util.Map; // 导入映射类
@RestController // 标记为REST控制器
@Validated // 启用方法级别的验证
@RequestMapping("/inventory_management/detail_store_goods_in") // 设置请求路径前缀
public class StoreInController {
@Resource // 注入仓库商品详情服务
private IDetailStoreGoodsService detailStoreGoodsService;
@Resource // 注入供应商服务
private ISupplierService supplierService;
@HasPermisson("inventory_management:detail_store_goods_in:save") // 需要inventory_management:detail_store_goods_in:save权限
@PostMapping("/save") // 处理POST请求路径为/save
public JsonResult saveIn(DetailStoreGoods detailStoreGoods, HttpServletRequest request) {
detailStoreGoodsService.saveIn(detailStoreGoods, (String) request.getHeader("token")); // 调用服务保存入库信息
return JsonResult.success(); // 返回成功结果
}
@HasPermisson("inventory_management:detail_store_goods_in:list") // 需要inventory_management:detail_store_goods_in:list权限
@PostMapping("/queryPageByQo") // 处理POST请求路径为/queryPageByQo
public JsonResult queryPageByQo(QueryDetailStoreGoods qo) {
Page<DetailStoreGoodsVo> page = detailStoreGoodsService.queryPageByQoIn(qo); // 调用服务分页查询入库信息
return JsonResult.success(page); // 返回成功结果,包含分页后的入库信息
}
@HasPermisson("inventory_management:detail_store_goods_in:delIn") // 需要inventory_management:detail_store_goods_in:delIn权限
@PostMapping("/delIn") // 处理POST请求路径为/delIn
public JsonResult delIn(@NotEmpty(message = "系统编号不能为空") String cn) {
detailStoreGoodsService.delIn(cn); // 调用服务删除入库信息
return JsonResult.success(); // 返回成功结果
}
@HasPermisson("inventory_management:detail_store_goods_in:save") // 需要inventory_management:detail_store_goods_in:save权限
@GetMapping("/queryOptionsSuppliers") // 处理GET请求路径为/queryOptionsSuppliers
public JsonResult queryOptionsSuppliers() {
List<Map<String, Object>> list = supplierService.queryOptionsSuppliers(); // 调用服务查询供应商选项
return JsonResult.success(list); // 返回成功结果,包含供应商选项列表
}
}

@ -0,0 +1,73 @@
package com.shanzhu.market.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; // 导入分页类
import com.shanzhu.market.common.sercurity.annotation.HasPermisson; // 导入权限注解类
import com.shanzhu.market.common.web.response.JsonResult; // 导入JSON结果类
import com.shanzhu.market.entity.domain.DetailStoreGoods; // 导入仓库商品详情实体类
import com.shanzhu.market.entity.query.QueryDetailStoreGoodsOut; // 导入仓库商品出库查询对象类
import com.shanzhu.market.entity.vo.DetailStoreGoodsOutVo; // 导入仓库商品出库视图对象类
import com.shanzhu.market.service.IDetailStoreGoodsService; // 导入仓库商品详情服务接口
import org.springframework.validation.annotation.Validated; // 导入验证注解类
import org.springframework.web.bind.annotation.*; // 导入Spring Web注解类
import javax.annotation.Resource; // 导入资源注解类
import javax.servlet.http.HttpServletRequest; // 导入HTTP请求类
import javax.validation.constraints.NotEmpty; // 导入非空注解类
import java.util.Map; // 导入映射类
@RestController // 标记为REST控制器
@Validated // 启用方法级别的验证
@RequestMapping("/inventory_management/detail_store_goods_out") // 设置请求路径前缀
public class StoreOutController {
@Resource // 注入仓库商品详情服务
private IDetailStoreGoodsService detailStoreGoodsService;
@HasPermisson("inventory_management:detail_store_goods_out:list") // 需要inventory_management:detail_store_goods_out:list权限
@PostMapping("/queryPageByQoOut") // 处理POST请求路径为/queryPageByQoOut
public JsonResult queryPageByQoOut(QueryDetailStoreGoodsOut qo){
Page<DetailStoreGoodsOutVo> page = detailStoreGoodsService.queryPageByQoOut(qo); // 调用服务分页查询出库信息
return JsonResult.success(page); // 返回成功结果,包含分页后的出库信息
}
@HasPermisson("inventory_management:detail_store_goods_out:save") // 需要inventory_management:detail_store_goods_out:save权限
@GetMapping("/initOutOptions") // 处理GET请求路径为/initOutOptions
public JsonResult<Map<String,Object>> initOutOptions(){
return JsonResult.success(detailStoreGoodsService.initOutOptions()); // 调用服务初始化出库选项
}
@HasPermisson("inventory_management:detail_store_goods_out:save") // 需要inventory_management:detail_store_goods_out:save权限
@GetMapping("/changeOutGoods") // 处理GET请求路径为/changeOutGoods
public JsonResult changeOutGoods(Long gid){
return JsonResult.success(detailStoreGoodsService.changeOutGoods(gid)); // 调用服务更改出库商品信息
}
@HasPermisson("inventory_management:detail_store_goods_out:save") // 需要inventory_management:detail_store_goods_out:save权限
@GetMapping("/changeOutStore") // 处理GET请求路径为/changeOutStore
public JsonResult changeOutStore(Long storeId){
return JsonResult.success(detailStoreGoodsService.changeOutStore(storeId)); // 调用服务更改出库仓库信息
}
@HasPermisson("inventory_management:detail_store_goods_out:save") // 需要inventory_management:detail_store_goods_out:save权限
@PostMapping("/queryOutGoods") // 处理POST请求路径为/queryOutGoods
public JsonResult queryOutGoods(@RequestParam("goodsId") Long goodsId,
@RequestParam("storeId") Long storeId){
DetailStoreGoodsOutVo vo = detailStoreGoodsService.queryOutGoods(goodsId, storeId); // 调用服务查询出库商品信息
return JsonResult.success(vo); // 返回成功结果,包含出库商品信息
}
@HasPermisson("inventory_management:detail_store_goods_out:save") // 需要inventory_management:detail_store_goods_out:save权限
@PostMapping("/save") // 处理POST请求路径为/save
public JsonResult saveOut(DetailStoreGoods detailStoreGoods, HttpServletRequest request){
detailStoreGoodsService.saveOut(detailStoreGoods, (String) request.getHeader("token")); // 调用服务保存出库信息
return JsonResult.success(); // 返回成功结果
}
@HasPermisson("inventory_management:detail_store_goods_out:delOut") // 需要inventory_management:detail_store_goods_out:delOut权限
@PostMapping("/delOut") // 处理POST请求路径为/delOut
public JsonResult delOut(@NotEmpty(message = "系统编号不能为空") String cn) {
detailStoreGoodsService.delIn(cn); // 调用服务删除出库信息
return JsonResult.success(); // 返回成功结果
}
}

@ -0,0 +1,60 @@
package com.shanzhu.market.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; // 导入分页类
import com.shanzhu.market.common.sercurity.annotation.HasPermisson; // 导入权限注解类
import com.shanzhu.market.common.web.response.JsonResult; // 导入JSON结果类
import com.shanzhu.market.entity.domain.Supplier; // 导入供应商实体类
import com.shanzhu.market.entity.query.QuerySupplier; // 导入供应商查询对象类
import com.shanzhu.market.service.ISupplierService; // 导入供应商服务接口
import org.springframework.validation.annotation.Validated; // 导入验证注解类
import org.springframework.web.bind.annotation.GetMapping; // 导入GET请求注解类
import org.springframework.web.bind.annotation.PostMapping; // 导入POST请求注解类
import org.springframework.web.bind.annotation.RequestMapping; // 导入请求路径注解类
import org.springframework.web.bind.annotation.RestController; // 导入REST控制器注解类
import javax.annotation.Resource; // 导入资源注解类
@RestController // 标记为REST控制器
@Validated // 启用方法级别的验证
@RequestMapping("/inventory_management/supplier") // 设置请求路径前缀
public class SupplierController {
@Resource // 注入供应商服务
private ISupplierService supplierService;
@HasPermisson("inventory_management:supplier:list") // 需要inventory_management:supplier:list权限
@PostMapping("/queryPageByQo") // 处理POST请求路径为/queryPageByQo
public JsonResult queryPageByQo(QuerySupplier qo) {
Page<Supplier> page = supplierService.queryPageByQo(qo); // 调用服务分页查询供应商信息
return JsonResult.success(page); // 返回成功结果,包含分页后的供应商信息
}
@HasPermisson("inventory_management:supplier:save") // 需要inventory_management:supplier:save权限
@PostMapping("/save") // 处理POST请求路径为/save
public JsonResult saveSupplier(Supplier supplier){
supplierService.saveSupplier(supplier); // 调用服务保存供应商信息
return JsonResult.success(); // 返回成功结果
}
/*修改接口*/
@HasPermisson("inventory_management:supplier:update") // 需要inventory_management:supplier:update权限
@PostMapping("/update") // 处理POST请求路径为/update
public JsonResult updateSupplier(Supplier supplier){
supplierService.updateSupplier(supplier); // 调用服务更新供应商信息
return JsonResult.success(); // 返回成功结果
}
@HasPermisson("inventory_management:supplier:update") // 需要inventory_management:supplier:update权限
@GetMapping("/queryByCn") // 处理GET请求路径为/queryByCn
public JsonResult queryByCn(Long cn){
return JsonResult.success(supplierService.getById(cn)); // 调用服务根据系统编号查询供应商信息
}
@HasPermisson("inventory_management:supplier:deactivate") // 需要inventory_management:supplier:deactivate权限
@PostMapping("/deactivate") // 处理POST请求路径为/deactivate
public JsonResult deactivate(Long cn){
supplierService.deactivate(cn); // 调用服务停用供应商
return JsonResult.success(); // 返回成功结果
}
}

@ -0,0 +1,72 @@
package com.shanzhu.market.entity.domain;
import com.baomidou.mybatisplus.annotation.IdType; // 导入MyBatis-Plus ID类型注解类
import com.baomidou.mybatisplus.annotation.TableId; // 导入MyBatis-Plus 表ID注解类
import com.baomidou.mybatisplus.annotation.TableName; // 导入MyBatis-Plus 表名注解类
import java.io.Serializable; // 导入序列化接口
/**
*
*/
@TableName("department") // 指定数据库表名为department
public class Dept implements Serializable {
// 正常状态
public static final String STATE_NORMAL = "0"; // 定义正常状态常量
// 禁用状态
public static final String STATE_BAN = "-1"; // 定义禁用状态常量
@TableId(type = IdType.AUTO) // 指定主键自增
private Long id; // 部门ID
private String name; // 部门名称
private String info; // 部门信息
private String state; // 部门状态
public Dept() {
// 默认构造函数
}
public Dept(Long id, String name, String info, String state) {
// 带参数的构造函数
this.id = id;
this.name = name;
this.info = info;
this.state = state;
}
public Long getId() {
return id; // 获取部门ID
}
public void setId(Long id) {
this.id = id; // 设置部门ID
}
public String getName() {
return name; // 获取部门名称
}
public void setName(String name) {
this.name = name; // 设置部门名称
}
public String getInfo() {
return info; // 获取部门信息
}
public void setInfo(String info) {
this.info = info; // 设置部门信息
}
public String getState() {
return state; // 获取部门状态
}
public void setState(String state) {
this.state = state; // 设置部门状态
}
}

@ -0,0 +1,77 @@
package com.shanzhu.market.entity.domain;
import com.baomidou.mybatisplus.annotation.TableField; // 导入MyBatis-Plus 表字段注解类
import com.baomidou.mybatisplus.annotation.TableName; // 导入MyBatis-Plus 表名注解类
import java.io.Serializable; // 导入序列化接口
@TableName("detail_sale_records") // 指定数据库表名为detail_sale_records
public class DetailSaleRecords implements Serializable {
@TableField("sell_cn") // 指定数据库字段名为sell_cn
private String sellCn; // 销售编号
@TableField("goods_id") // 指定数据库字段名为goods_id
private Long goodsId; // 商品ID
@TableField("goods_num") // 指定数据库字段名为goods_num
private Long goodsNum; // 商品数量
@TableField("goods_price") // 指定数据库字段名为goods_price
private Double goodsPrice; // 商品价格
@TableField("goods_name") // 指定数据库字段名为goods_name
private String goodsName; // 商品名称
public DetailSaleRecords() {
// 默认构造函数
}
public DetailSaleRecords(String sellCn, Long goodsId, Long goodsNum, Double goodsPrice, String goodsName) {
// 带参数的构造函数
this.sellCn = sellCn;
this.goodsId = goodsId;
this.goodsNum = goodsNum;
this.goodsPrice = goodsPrice;
this.goodsName = goodsName;
}
public String getSellCn() {
return sellCn; // 获取销售编号
}
public void setSellCn(String sellCn) {
this.sellCn = sellCn; // 设置销售编号
}
public Long getGoodsId() {
return goodsId; // 获取商品ID
}
public void setGoodsId(Long goodsId) {
this.goodsId = goodsId; // 设置商品ID
}
public Long getGoodsNum() {
return goodsNum; // 获取商品数量
}
public void setGoodsNum(Long goodsNum) {
this.goodsNum = goodsNum; // 设置商品数量
}
public Double getGoodsPrice() {
return goodsPrice; // 获取商品价格
}
public void setGoodsPrice(Double goodsPrice) {
this.goodsPrice = goodsPrice; // 设置商品价格
}
public String getGoodsName() {
return goodsName; // 获取商品名称
}
public void setGoodsName(String goodsName) {
this.goodsName = goodsName; // 设置商品名称
}
}

@ -0,0 +1,244 @@
package com.shanzhu.market.entity.domain;
import com.baomidou.mybatisplus.annotation.TableField; // 导入MyBatis-Plus 表字段注解类
import com.baomidou.mybatisplus.annotation.TableName; // 导入MyBatis-Plus 表名注解类
import com.fasterxml.jackson.annotation.JsonFormat; // 导入Jackson JSON格式化注解类
import org.springframework.format.annotation.DateTimeFormat; // 导入Spring日期时间格式化注解类
import java.io.Serializable; // 导入序列化接口
import java.util.Date; // 导入日期类
@TableName("t_detail_store_goods") // 指定数据库表名为t_detail_store_goods
public class DetailStoreGoods implements Serializable {
public static final String STATE_NORMAL = "0"; // 正常状态
public static final String STATE_EXPIRY = "1"; // 过期状态
public static final String STATE_DOWN = "2"; // 下架状态
public static final String STATE1_DEL = "1"; // 删除状态
public static final String STATE1_NORMAL = "0"; // 正常状态
public static final String STATE1_UNTREATED = "2"; // 待处理状态
public static final String TYPE_IN = "0"; // 入库类型
public static final String TYPE_OUT = "1"; // 出库类型
private String cn; // 系统编号
@TableField("goods_id") // 指定数据库字段名为goods_id
private Long goodsId; // 商品ID
@TableField("goods_num") // 指定数据库字段名为goods_num
private Long goodsNum; // 商品数量
@TableField("goods_name") // 指定数据库字段名为goods_name
private String goodsName; // 商品名称
@TableField("goods_price") // 指定数据库字段名为goods_price
private Double goodsPrice; // 商品价格
private String type; // 类型(入库或出库)
private Long createid; // 创建人ID
private String createby; // 创建人名称
@JsonFormat(pattern = "yyyy-MM-dd") // 指定JSON日期格式
@DateTimeFormat(pattern = "yyyy-MM-dd") // 指定日期时间格式
@TableField("create_time") // 指定数据库字段名为create_time
private Date createTime; // 创建时间
private String state; // 状态(正常、过期、下架)
private String info; // 信息
@JsonFormat(pattern = "yyyy-MM-dd") // 指定JSON日期格式
@DateTimeFormat(pattern = "yyyy-MM-dd") // 指定日期时间格式
@TableField("expiry_time") // 指定数据库字段名为expiry_time
private Date expiryTime; // 过期时间
@JsonFormat(pattern = "yyyy-MM-dd") // 指定JSON日期格式
@DateTimeFormat(pattern = "yyyy-MM-dd") // 指定日期时间格式
@TableField("birth_time") // 指定数据库字段名为birth_time
private Date birthTime; // 生产时间
@TableField("store_id") // 指定数据库字段名为store_id
private Long storeId; // 仓库ID
private String state1; // 状态1删除、正常、待处理
@TableField("supplier_id") // 指定数据库字段名为supplier_id
private Long supplierId; // 供应商ID
@TableField("supplier_name") // 指定数据库字段名为supplier_name
private String supplierName; // 供应商名称
@TableField("untreated_num") // 指定数据库字段名为untreated_num
private Long untreatedNum; // 待处理数量
public DetailStoreGoods() {
// 默认构造函数
}
public DetailStoreGoods(String cn, Long goodsId, Long goodsNum, String goodsName, Double goodsPrice, String type, Long createid, String createby, Date createTime, String state, String info, Date expiryTime, Date birthTime, Long storeId, String state1, Long supplierId, String supplierName, Long untreatedNum) {
// 带参数的构造函数
this.cn = cn;
this.goodsId = goodsId;
this.goodsNum = goodsNum;
this.goodsName = goodsName;
this.goodsPrice = goodsPrice;
this.type = type;
this.createid = createid;
this.createby = createby;
this.createTime = createTime;
this.state = state;
this.info = info;
this.expiryTime = expiryTime;
this.birthTime = birthTime;
this.storeId = storeId;
this.state1 = state1;
this.supplierId = supplierId;
this.supplierName = supplierName;
this.untreatedNum = untreatedNum;
}
public String getCn() {
return cn; // 获取系统编号
}
public void setCn(String cn) {
this.cn = cn; // 设置系统编号
}
public Long getGoodsId() {
return goodsId; // 获取商品ID
}
public void setGoodsId(Long goodsId) {
this.goodsId = goodsId; // 设置商品ID
}
public Long getGoodsNum() {
return goodsNum; // 获取商品数量
}
public void setGoodsNum(Long goodsNum) {
this.goodsNum = goodsNum; // 设置商品数量
}
public String getGoodsName() {
return goodsName; // 获取商品名称
}
public void setGoodsName(String goodsName) {
this.goodsName = goodsName; // 设置商品名称
}
public Double getGoodsPrice() {
return goodsPrice; // 获取商品价格
}
public void setGoodsPrice(Double goodsPrice) {
this.goodsPrice = goodsPrice; // 设置商品价格
}
public String getType() {
return type; // 获取类型(入库或出库)
}
public void setType(String type) {
this.type = type; // 设置类型(入库或出库)
}
public Long getCreateid() {
return createid; // 获取创建人ID
}
public void setCreateid(Long createid) {
this.createid = createid; // 设置创建人ID
}
public String getCreateby() {
return createby; // 获取创建人名称
}
public void setCreateby(String createby) {
this.createby = createby; // 设置创建人名称
}
public Date getCreateTime() {
return createTime; // 获取创建时间
}
public void setCreateTime(Date createTime) {
this.createTime = createTime; // 设置创建时间
}
public String getState() {
return state; // 获取状态(正常、过期、下架)
}
public void setState(String state) {
this.state = state; // 设置状态(正常、过期、下架)
}
public String getInfo() {
return info; // 获取信息
}
public void setInfo(String info) {
this.info = info; // 设置信息
}
public Date getExpiryTime() {
return expiryTime; // 获取过期时间
}
public void setExpiryTime(Date expiryTime) {
this.expiryTime = expiryTime; // 设置过期时间
}
public Date getBirthTime() {
return birthTime; // 获取生产时间
}
public void setBirthTime(Date birthTime) {
this.birthTime = birthTime; // 设置生产时间
}
public Long getStoreId() {
return storeId; // 获取仓库ID
}
public void setStoreId(Long storeId) {
this.storeId = storeId; // 设置仓库ID
}
public String getState1() {
return state1; // 获取状态1删除、正常、待处理
}
public void setState1(String state1) {
this.state1 = state1; // 设置状态1删除、正常、待处理
}
public Long getSupplierId() {
return supplierId; // 获取供应商ID
}
public void setSupplierId(Long supplierId) {
this.supplierId = supplierId; // 设置供应商ID
}
public String getSupplierName() {
return supplierName; // 获取供应商名称
}
public void setSupplierName(String supplierName) {
this.supplierName = supplierName; // 设置供应商名称
}
public Long getUntreatedNum() {
return untreatedNum; // 获取待处理数量
}
public void setUntreatedNum(Long untreatedNum) {
this.untreatedNum = untreatedNum; // 设置待处理数量
}
}

@ -0,0 +1,325 @@
package com.shanzhu.market.entity.domain;
import com.baomidou.mybatisplus.annotation.IdType; // 导入MyBatis-Plus ID类型注解类
import com.baomidou.mybatisplus.annotation.TableField; // 导入MyBatis-Plus 表字段注解类
import com.baomidou.mybatisplus.annotation.TableId; // 导入MyBatis-Plus 表ID注解类
import com.baomidou.mybatisplus.annotation.TableName; // 导入MyBatis-Plus 表名注解类
import com.fasterxml.jackson.annotation.JsonFormat; // 导入Jackson JSON格式化注解类
import com.fasterxml.jackson.annotation.JsonIgnore; // 导入Jackson忽略字段注解类
import java.io.Serializable; // 导入序列化接口
import java.util.Date; // 导入日期类
import java.util.HashSet; // 导入HashSet类
import java.util.List; // 导入列表类
import java.util.Set; // 导入集合类
/**
*
*/
@TableName("employee") // 指定数据库表名为employee
public class Employee implements Serializable {
public static final String STATE_NORMAL = "0"; // 正常状态
public static final String STATE_DEL = "1"; // 删除状态
public static final String DEFAULT_PWD = "123456"; // 默认密码
public static final String SEX_MEN = "1"; // 男性性别
public static final String SEX_WOMEN = "0"; // 女性性别
public static final String DEFAULT_HEAD_IMG = "/files/1694434162457_07.jpg"; // 默认头像路径
@TableId(type = IdType.AUTO) // 指定主键自增
private Long id; // 员工ID
private String sex; // 性别
@TableField("isAdmin") // 指定数据库字段名为isAdmin
private Boolean isAdmin; // 是否管理员
@TableField("phone") // 指定数据库字段名为phone
private String username; // 用户名(手机号)
@TableField("nick_name") // 指定数据库字段名为nick_name
private String nickName; // 昵称
private String password; // 密码
@TableField("head_img") // 指定数据库字段名为head_img
private String headImg = DEFAULT_HEAD_IMG; // 头像路径,默认值为默认头像路径
private String state = STATE_NORMAL; // 状态,默认值为正常状态
private String info; // 信息
private String createby; // 创建人
@TableField("create_time") // 指定数据库字段名为create_time
@JsonFormat(pattern = "yyyy-MM-dd") // 指定JSON日期格式
private Date createTime; // 创建时间
@JsonFormat(pattern = "yyyy-MM-dd") // 指定JSON日期格式
@TableField("leave_time") // 指定数据库字段名为leave_time
private Date leaveTime; // 离职时间
private String address; // 地址
private String email; // 邮箱
private Integer age; // 年龄
@TableField("deptId") // 指定数据库字段名为deptId
private Long deptId; // 部门ID
@TableField(value = "dept_name", exist = false) // 指定数据库字段名为dept_name不映射到数据库
private String deptName; // 部门名称
// 角色集合
@TableField(exist = false) // 不映射到数据库
@JsonIgnore // 忽略序列化
private Set<Role> roles;
// 权限集合
@TableField(exist = false) // 不映射到数据库
@JsonIgnore // 忽略序列化
private List<Menu> menus;
@TableField(exist = false) // 不映射到数据库
@JsonIgnore // 忽略序列化
private Set<String> flags;
@TableField("id_card") // 指定数据库字段名为id_card
private String idCard; // 身份证号
public Employee() {
// 默认构造函数
}
public Employee(Long id, String sex, Boolean isAdmin, String username, String nickName, String password, String headImg, String state, String info, String createby, Date createTime, Date leaveTime, String address, String email, Integer age, Long deptId, String deptName, Set<Role> roles, List<Menu> menus, Set<String> flags, String idCard) {
// 带参数的构造函数
this.id = id;
this.sex = sex;
this.isAdmin = isAdmin;
this.username = username;
this.nickName = nickName;
this.password = password;
this.headImg = headImg;
this.state = state;
this.info = info;
this.createby = createby;
this.createTime = createTime;
this.leaveTime = leaveTime;
this.address = address;
this.email = email;
this.age = age;
this.deptId = deptId;
this.deptName = deptName;
this.roles = roles;
this.menus = menus;
this.flags = flags;
this.idCard = idCard;
}
public Long getId() {
return id; // 获取员工ID
}
public void setId(Long id) {
this.id = id; // 设置员工ID
}
public String getSex() {
return sex; // 获取性别
}
public void setSex(String sex) {
this.sex = sex; // 设置性别
}
public Boolean getIsAdmin() {
return isAdmin; // 获取是否管理员
}
public void setIsAdmin(Boolean admin) {
isAdmin = admin; // 设置是否管理员
}
public String getUsername() {
return username; // 获取用户名(手机号)
}
public void setUsername(String username) {
this.username = username; // 设置用户名(手机号)
}
public String getNickName() {
return nickName; // 获取昵称
}
public void setNickName(String nickName) {
this.nickName = nickName; // 设置昵称
}
public String getPassword() {
return password; // 获取密码
}
public void setPassword(String password) {
this.password = password; // 设置密码
}
public String getHeadImg() {
return headImg; // 获取头像路径
}
public void setHeadImg(String headImg) {
this.headImg = headImg; // 设置头像路径
}
public String getState() {
return state; // 获取状态
}
public void setState(String state) {
this.state = state; // 设置状态
}
public String getInfo() {
return info; // 获取信息
}
public void setInfo(String info) {
this.info = info; // 设置信息
}
public String getCreateby() {
return createby; // 获取创建人
}
public void setCreateby(String createby) {
this.createby = createby; // 设置创建人
}
public Date getCreateTime() {
return createTime; // 获取创建时间
}
public void setCreateTime(Date createTime) {
this.createTime = createTime; // 设置创建时间
}
public Date getLeaveTime() {
return leaveTime; // 获取离职时间
}
public void setLeaveTime(Date leaveTime) {
this.leaveTime = leaveTime; // 设置离职时间
}
public String getAddress() {
return address; // 获取地址
}
public void setAddress(String address) {
this.address = address; // 设置地址
}
public String getEmail() {
return email; // 获取邮箱
}
public void setEmail(String email) {
this.email = email; // 设置邮箱
}
public Integer getAge() {
return age; // 获取年龄
}
public void setAge(Integer age) {
this.age = age; // 设置年龄
}
public Long getDeptId() {
return deptId; // 获取部门ID
}
public void setDeptId(Long deptId) {
this.deptId = deptId; // 设置部门ID
}
public String getDeptName() {
return deptName; // 获取部门名称
}
public void setDeptName(String deptName) {
this.deptName = deptName; // 设置部门名称
}
public Set<Role> getRoles() {
return roles; // 获取角色集合
}
public void setRoles(Set<Role> roles) {
this.roles = roles; // 设置角色集合
}
public List<Menu> getMenus() {
return menus; // 获取权限集合
}
public Set<String> getFlags() {
return flags; // 获取权限标识符集合
}
public void setFlags(Set<String> flags) {
this.flags = flags; // 设置权限标识符集合
}
public String getIdCard() {
return idCard; // 获取身份证号
}
public void setIdCard(String idCard) {
this.idCard = idCard; // 设置身份证号
}
public void setMenus(List<Menu> menus) {
this.menus = menus; // 设置权限集合
if (menus != null) {
this.flags = getFlags(this.menus); // 更新权限标识符集合
}
}
/**
*
*
* @param menus
* @return
*/
private Set<String> getFlags(List<Menu> menus) {
Set<String> flags = new HashSet<>(); // 创建权限标识符集合
for (Menu menu : menus) {
// 目录遍历
if (menu.getFlag() != null) {
flags.add(menu.getFlag()); // 添加权限标识符
// 如果没有子集
if (menu.getChildren() == null) {
continue;
}
for (Menu child : menu.getChildren()) {
// 菜单遍历
if (child.getFlag() != null) {
flags.add(child.getFlag()); // 添加权限标识符
}
// 如果没有子集
if (child.getChildren() == null) {
continue;
}
for (Menu childChild : child.getChildren()) {
if (childChild.getFlag() != null) {
flags.add(childChild.getFlag()); // 添加权限标识符
}
}
}
}
}
return flags; // 返回权限标识符集合
}
}

@ -0,0 +1,132 @@
package com.shanzhu.market.entity.domain;
import com.baomidou.mybatisplus.annotation.TableField; // 导入MyBatis-Plus 表字段注解类
import com.baomidou.mybatisplus.annotation.TableName; // 导入MyBatis-Plus 表名注解类
import com.fasterxml.jackson.annotation.JsonFormat; // 导入Jackson JSON格式化注解类
import java.io.Serializable; // 导入序列化接口
import java.util.Date; // 导入日期类
@TableName("exchange_point_products_records") // 指定数据库表名为exchange_point_products_records
public class ExchangePointProducts implements Serializable {
public static final String STATE_NORMAL = "0"; // 正常状态
public static final String STATE_DEL = "1"; // 删除状态
private String cn; // 系统编号
@TableField("goods_id") // 指定数据库字段名为goods_id
private Long goodsId; // 商品ID
@TableField("member_id") // 指定数据库字段名为member_id
private Long memberId; // 会员ID
private Long integral; // 积分
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") // 指定JSON日期格式
@TableField("update_time") // 指定数据库字段名为update_time
private Date updateTime; // 更新时间
private String updateby; // 更新人
@TableField("update_id") // 指定数据库字段名为update_id
private Long updateId; // 更新人ID
private String state; // 状态
@TableField(exist = false) // 不映射到数据库
private String memberPhone; // 会员账号
@TableField(exist = false) // 不映射到数据库
private String goodsName; // 商品名称
@TableField(exist = false) // 不映射到数据库
private String goodsCoverUrl; // 商品封面URL
public String getCn() {
return cn; // 获取系统编号
}
public void setCn(String cn) {
this.cn = cn; // 设置系统编号
}
public Long getGoodsId() {
return goodsId; // 获取商品ID
}
public void setGoodsId(Long goodsId) {
this.goodsId = goodsId; // 设置商品ID
}
public Long getMemberId() {
return memberId; // 获取会员ID
}
public void setMemberId(Long memberId) {
this.memberId = memberId; // 设置会员ID
}
public Long getIntegral() {
return integral; // 获取积分
}
public void setIntegral(Long integral) {
this.integral = integral; // 设置积分
}
public Date getUpdateTime() {
return updateTime; // 获取更新时间
}
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime; // 设置更新时间
}
public String getUpdateby() {
return updateby; // 获取更新人
}
public void setUpdateby(String updateby) {
this.updateby = updateby; // 设置更新人
}
public Long getUpdateId() {
return updateId; // 获取更新人ID
}
public void setUpdateId(Long updateId) {
this.updateId = updateId; // 设置更新人ID
}
public String getState() {
return state; // 获取状态
}
public void setState(String state) {
this.state = state; // 设置状态
}
public String getMemberPhone() {
return memberPhone; // 获取会员账号
}
public void setMemberPhone(String memberPhone) {
this.memberPhone = memberPhone; // 设置会员账号
}
public String getGoodsName() {
return goodsName; // 获取商品名称
}
public void setGoodsName(String goodsName) {
this.goodsName = goodsName; // 设置商品名称
}
public String getGoodsCoverUrl() {
return goodsCoverUrl; // 获取商品封面URL
}
public void setGoodsCoverUrl(String goodsCoverUrl) {
this.goodsCoverUrl = goodsCoverUrl; // 设置商品封面URL
}
}

@ -0,0 +1,238 @@
package com.shanzhu.market.entity.domain;
import com.baomidou.mybatisplus.annotation.IdType; // 导入MyBatis-Plus ID类型注解类
import com.baomidou.mybatisplus.annotation.TableField; // 导入MyBatis-Plus 表字段注解类
import com.baomidou.mybatisplus.annotation.TableId; // 导入MyBatis-Plus 表ID注解类
import com.baomidou.mybatisplus.annotation.TableName; // 导入MyBatis-Plus 表名注解类
import com.fasterxml.jackson.annotation.JsonFormat; // 导入Jackson JSON格式化注解类
import java.io.Serializable; // 导入序列化接口
import java.util.Date; // 导入日期类
/**
*
*/
@TableName("goods") // 指定数据库表名为goods
public class Goods implements Serializable {
public static final String STATE_UP = "0"; // 上架状态
public static final String STATE_DOWN = "1"; // 下架状态
@TableId(type = IdType.AUTO) // 指定主键自增
private Long id; // 商品ID
private String name; // 商品名
private String info; // 商品信息
@TableField("category_name") // 指定数据库字段名为category_name
private String categoryName; // 商品分类名
@TableField("category_id") // 指定数据库字段名为category_id
private Long categoryId; // 商品分类ID
private String createby; // 创建者
@JsonFormat(pattern = "yyyy-MM-dd") // 指定JSON日期格式
@TableField("create_time") // 指定数据库字段名为create_time
private Date createTime; // 创建时间
private String updateby; // 更新者
@JsonFormat(pattern = "yyyy-MM-dd") // 指定JSON日期格式
@TableField("update_time") // 指定数据库字段名为update_time
private Date updateTime; // 更新时间
@TableField("sell_price") // 指定数据库字段名为sell_price
private Double sellPrice; // 销售价格
@TableField("purchash_price") // 指定数据库字段名为purchash_price
private Double purchashPrice; // 进货价格
@TableField("residue_num") // 指定数据库字段名为residue_num
private Long residueNum; // 剩余数量
@TableField(exist = false) // 不映射到数据库
private Long residueStoreNum; // 剩余库存数量
@TableField("cover_url") // 指定数据库字段名为cover_url
private String coverUrl; // 商品封面URL
private String state = STATE_UP; // 状态,默认为上架状态
@TableField("sales_volume") // 指定数据库字段名为sales_volume
private Long salesVolume; // 销售量
private Long inventory; // 需库存量
private Long shelves; // 货架商品数量
public Goods() {
// 默认构造函数
}
public Goods(Long id, String name, String info, String categoryName, Long categoryId, String createby, Date createTime, String updateby, Date updateTime, Double sellPrice, Double purchashPrice, Long residueNum, Long residueStoreNum, String coverUrl, String state, Long salesVolume, Long inventory, Long shelves) {
// 带参数的构造函数
this.id = id;
this.name = name;
this.info = info;
this.categoryName = categoryName;
this.categoryId = categoryId;
this.createby = createby;
this.createTime = createTime;
this.updateby = updateby;
this.updateTime = updateTime;
this.sellPrice = sellPrice;
this.purchashPrice = purchashPrice;
this.residueNum = residueNum;
this.residueStoreNum = residueStoreNum;
this.coverUrl = coverUrl;
this.state = state;
this.salesVolume = salesVolume;
this.inventory = inventory;
this.shelves = shelves;
}
public Long getId() {
return id; // 获取商品ID
}
public void setId(Long id) {
this.id = id; // 设置商品ID
}
public String getName() {
return name; // 获取商品名
}
public void setName(String name) {
this.name = name; // 设置商品名
}
public String getInfo() {
return info; // 获取商品信息
}
public void setInfo(String info) {
this.info = info; // 设置商品信息
}
public String getCategoryName() {
return categoryName; // 获取商品分类名
}
public void setCategoryName(String categoryName) {
this.categoryName = categoryName; // 设置商品分类名
}
public Long getCategoryId() {
return categoryId; // 获取商品分类ID
}
public void setCategoryId(Long categoryId) {
this.categoryId = categoryId; // 设置商品分类ID
}
public String getCreateby() {
return createby; // 获取创建者
}
public void setCreateby(String createby) {
this.createby = createby; // 设置创建者
}
public Date getCreateTime() {
return createTime; // 获取创建时间
}
public void setCreateTime(Date createTime) {
this.createTime = createTime; // 设置创建时间
}
public String getUpdateby() {
return updateby; // 获取更新者
}
public void setUpdateby(String updateby) {
this.updateby = updateby; // 设置更新者
}
public Date getUpdateTime() {
return updateTime; // 获取更新时间
}
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime; // 设置更新时间
}
public Double getSellPrice() {
return sellPrice; // 获取销售价格
}
public void setSellPrice(Double sellPrice) {
this.sellPrice = sellPrice; // 设置销售价格
}
public Double getPurchashPrice() {
return purchashPrice; // 获取进货价格
}
public void setPurchashPrice(Double purchashPrice) {
this.purchashPrice = purchashPrice; // 设置进货价格
}
public Long getResidueNum() {
return residueNum; // 获取剩余数量
}
public void setResidueNum(Long residueNum) {
this.residueNum = residueNum; // 设置剩余数量
}
public Long getResidueStoreNum() {
return residueStoreNum; // 获取剩余库存数量
}
public void setResidueStoreNum(Long residueStoreNum) {
this.residueStoreNum = residueStoreNum; // 设置剩余库存数量
}
public String getCoverUrl() {
return coverUrl; // 获取商品封面URL
}
public void setCoverUrl(String coverUrl) {
this.coverUrl = coverUrl; // 设置商品封面URL
}
public String getState() {
return state; // 获取状态
}
public void setState(String state) {
this.state = state; // 设置状态
}
public Long getSalesVolume() {
return salesVolume; // 获取销售量
}
public void setSalesVolume(Long salesVolume) {
this.salesVolume = salesVolume; // 设置销售量
}
public Long getInventory() {
return inventory; // 获取需库存量
}
public void setInventory(Long inventory) {
this.inventory = inventory; // 设置需库存量
}
public Long getShelves() {
return shelves; // 获取货架商品数量
}
public void setShelves(Long shelves) {
this.shelves = shelves; // 设置货架商品数量
}
}

@ -0,0 +1,69 @@
package com.shanzhu.market.entity.domain;
import com.baomidou.mybatisplus.annotation.IdType; // 导入MyBatis-Plus ID类型注解类
import com.baomidou.mybatisplus.annotation.TableId; // 导入MyBatis-Plus 表ID注解类
import com.baomidou.mybatisplus.annotation.TableName; // 导入MyBatis-Plus 表名注解类
import java.io.Serializable; // 导入序列化接口
/**
*
*/
@TableName("goods_category") // 指定数据库表名为goods_category
public class GoodsCategory implements Serializable {
public static final String STATE_NORMAL = "0"; // 正常状态
public static final String STATE_BAN = "-1"; // 禁用状态
@TableId(type = IdType.AUTO) // 指定主键自增
private Long id; // 商品分类ID
private String name; // 商品分类名称
private String info; // 商品分类信息
private String state; // 商品分类状态
public GoodsCategory() {
// 默认构造函数
}
public GoodsCategory(Long id, String name, String info, String state) {
// 带参数的构造函数
this.id = id;
this.name = name;
this.info = info;
this.state = state;
}
public Long getId() {
return id; // 获取商品分类ID
}
public void setId(Long id) {
this.id = id; // 设置商品分类ID
}
public String getName() {
return name; // 获取商品分类名称
}
public void setName(String name) {
this.name = name; // 设置商品分类名称
}
public String getInfo() {
return info; // 获取商品分类信息
}
public void setInfo(String info) {
this.info = info; // 设置商品分类信息
}
public String getState() {
return state; // 获取商品分类状态
}
public void setState(String state) {
this.state = state; // 设置商品分类状态
}
}

@ -0,0 +1,77 @@
package com.shanzhu.market.entity.domain;
import com.baomidou.mybatisplus.annotation.TableField; // 导入MyBatis-Plus 表字段注解类
import com.baomidou.mybatisplus.annotation.TableName; // 导入MyBatis-Plus 表名注解类
import java.io.Serializable; // 导入序列化接口
@TableName("t_goods_store") // 指定数据库表名为t_goods_store
public class GoodsStore implements Serializable {
@TableField("goods_id") // 指定数据库字段名为goods_id
private Long goodsId; // 商品ID
@TableField("store_id") // 指定数据库字段名为store_id
private Long storeId; // 仓库ID
@TableField("in_num") // 指定数据库字段名为in_num
private Long inNum; // 入库数量
@TableField("residue_num") // 指定数据库字段名为residue_num
private Long residueNum; // 剩余数量
@TableField("store_name") // 指定数据库字段名为store_name
private String storeName; // 仓库名称
public GoodsStore() {
// 默认构造函数
}
public GoodsStore(Long goodsId, Long storeId, Long inNum, Long residueNum, String storeName) {
// 带参数的构造函数
this.goodsId = goodsId;
this.storeId = storeId;
this.inNum = inNum;
this.residueNum = residueNum;
this.storeName = storeName;
}
public Long getGoodsId() {
return goodsId; // 获取商品ID
}
public void setGoodsId(Long goodsId) {
this.goodsId = goodsId; // 设置商品ID
}
public Long getStoreId() {
return storeId; // 获取仓库ID
}
public void setStoreId(Long storeId) {
this.storeId = storeId; // 设置仓库ID
}
public Long getInNum() {
return inNum; // 获取入库数量
}
public void setInNum(Long inNum) {
this.inNum = inNum; // 设置入库数量
}
public Long getResidueNum() {
return residueNum; // 获取剩余数量
}
public void setResidueNum(Long residueNum) {
this.residueNum = residueNum; // 设置剩余数量
}
public String getStoreName() {
return storeName; // 获取仓库名称
}
public void setStoreName(String storeName) {
this.storeName = storeName; // 设置仓库名称
}
}

@ -0,0 +1,113 @@
package com.shanzhu.market.entity.domain;
import com.baomidou.mybatisplus.annotation.IdType; // 导入MyBatis-Plus ID类型注解类
import com.baomidou.mybatisplus.annotation.TableId; // 导入MyBatis-Plus 表ID注解类
import com.baomidou.mybatisplus.annotation.TableName; // 导入MyBatis-Plus 表名注解类
import com.fasterxml.jackson.annotation.JsonIgnore; // 导入Jackson忽略字段注解类
import java.io.Serializable; // 导入序列化接口
@TableName("t_member") // 指定数据库表名为t_member
public class Member implements Serializable {
public static final String STATE_NORMAL = "0"; // 正常状态
public static final String STATE_BAN = "1"; // 禁用状态
public static final String DEFAULT_PWD = "123456"; // 默认密码
@TableId(type = IdType.AUTO) // 指定主键自增
private Long id; // 会员ID
private String name; // 会员姓名
private String phone; // 会员手机号
@JsonIgnore // 忽略序列化
private String password; // 会员密码
private String email; // 会员邮箱
private Long integral; // 会员积分
private String state; // 会员状态
private String info; // 会员信息
public Member() {
// 默认构造函数
}
public Member(Long id, String name, String phone, String password, String email, Long integral, String state, String info) {
// 带参数的构造函数
this.id = id;
this.name = name;
this.phone = phone;
this.password = password;
this.email = email;
this.integral = integral;
this.state = state;
this.info = info;
}
public Long getId() {
return id; // 获取会员ID
}
public void setId(Long id) {
this.id = id; // 设置会员ID
}
public String getName() {
return name; // 获取会员姓名
}
public void setName(String name) {
this.name = name; // 设置会员姓名
}
public String getPhone() {
return phone; // 获取会员手机号
}
public void setPhone(String phone) {
this.phone = phone; // 设置会员手机号
}
public String getPassword() {
return password; // 获取会员密码
}
public void setPassword(String password) {
this.password = password; // 设置会员密码
}
public String getEmail() {
return email; // 获取会员邮箱
}
public void setEmail(String email) {
this.email = email; // 设置会员邮箱
}
public Long getIntegral() {
return integral; // 获取会员积分
}
public void setIntegral(Long integral) {
this.integral = integral; // 设置会员积分
}
public String getState() {
return state; // 获取会员状态
}
public void setState(String state) {
this.state = state; // 设置会员状态
}
public String getInfo() {
return info; // 获取会员信息
}
public void setInfo(String info) {
this.info = info; // 设置会员信息
}
}

@ -0,0 +1,167 @@
package com.shanzhu.market.entity.domain;
import com.baomidou.mybatisplus.annotation.IdType; // 导入MyBatis-Plus ID类型注解类
import com.baomidou.mybatisplus.annotation.TableField; // 导入MyBatis-Plus 表字段注解类
import com.baomidou.mybatisplus.annotation.TableId; // 导入MyBatis-Plus 表ID注解类
import com.baomidou.mybatisplus.annotation.TableName; // 导入MyBatis-Plus 表名注解类
import java.io.Serializable; // 导入序列化接口
import java.util.List; // 导入列表类
import java.util.Objects; // 导入Objects类
@TableName("t_menu") // 指定数据库表名为t_menu
public class Menu implements Serializable {
public static final String TYPE_CATALOGUE = "0"; // 目录类型
public static final String TYPE_MENU = "1"; // 菜单类型
public static final String TYPE_BUTTON = "2"; // 按钮类型
public static final String STATE_NORMAL = "0"; // 正常状态
public static final String STATE_DEL = "-1"; // 禁用状态
@TableId(type = IdType.AUTO) // 指定主键自增
private Long id; // 菜单ID
private String label; // 菜单标签
private String purl; // 菜单URL
private String type; // 菜单类型
@TableField("parent_id") // 指定数据库字段名为parent_id
private Long parentId; // 父菜单ID
@TableField("parent_label") // 指定数据库字段名为parent_label
private String parentLabel; // 父菜单标签
private String info; // 菜单信息
private String state; // 菜单状态
private String flag; // 权限标识符
private String icon; // 菜单图标
private String component; // 组件路径
@TableField(exist = false) // 不映射到数据库
private List<Menu> children; // 子菜单列表
@Override
public boolean equals(Object o) {
if (this == o) return true; // 比较对象是否相同
if (o == null || getClass() != o.getClass()) return false; // 比较对象是否为null或类是否相同
Menu menu = (Menu) o; // 强制转换为Menu对象
return Objects.equals(id, menu.id) && // 比较菜单ID
Objects.equals(label, menu.label) && // 比较菜单标签
Objects.equals(purl, menu.purl) && // 比较菜单URL
Objects.equals(type, menu.type) && // 比较菜单类型
Objects.equals(parentId, menu.parentId) && // 比较父菜单ID
Objects.equals(parentLabel, menu.parentLabel) && // 比较父菜单标签
Objects.equals(info, menu.info) && // 比较菜单信息
Objects.equals(state, menu.state) && // 比较菜单状态
Objects.equals(flag, menu.flag) && // 比较权限标识符
Objects.equals(icon, menu.icon) && // 比较菜单图标
Objects.equals(component, menu.component) && // 比较组件路径
Objects.equals(children, menu.children); // 比较子菜单列表
}
@Override
public int hashCode() {
return Objects.hash(id, label, purl, type, parentId, parentLabel, info, state, flag, component, children); // 生成哈希码
}
public Long getId() {
return id; // 获取菜单ID
}
public void setId(Long id) {
this.id = id; // 设置菜单ID
}
public String getLabel() {
return label; // 获取菜单标签
}
public void setLabel(String label) {
this.label = label; // 设置菜单标签
}
public String getPurl() {
return purl; // 获取菜单URL
}
public void setPurl(String purl) {
this.purl = purl; // 设置菜单URL
}
public String getType() {
return type; // 获取菜单类型
}
public void setType(String type) {
this.type = type; // 设置菜单类型
}
public Long getParentId() {
return parentId; // 获取父菜单ID
}
public void setParentId(Long parentId) {
this.parentId = parentId; // 设置父菜单ID
}
public String getParentLabel() {
return parentLabel; // 获取父菜单标签
}
public void setParentLabel(String parentLabel) {
this.parentLabel = parentLabel; // 设置父菜单标签
}
public String getInfo() {
return info; // 获取菜单信息
}
public void setInfo(String info) {
this.info = info; // 设置菜单信息
}
public String getState() {
return state; // 获取菜单状态
}
public void setState(String state) {
this.state = state; // 设置菜单状态
}
public String getFlag() {
return flag; // 获取权限标识符
}
public void setFlag(String flag) {
this.flag = flag; // 设置权限标识符
}
public String getIcon() {
return icon; // 获取菜单图标
}
public void setIcon(String icon) {
this.icon = icon; // 设置菜单图标
}
public String getComponent() {
return component; // 获取组件路径
}
public void setComponent(String component) {
this.component = component; // 设置组件路径
}
public List<Menu> getChildren() {
return children; // 获取子菜单列表
}
public void setChildren(List<Menu> children) {
this.children = children; // 设置子菜单列表
}
}

@ -0,0 +1,68 @@
package com.shanzhu.market.entity.domain;
import java.io.Serializable; // 导入序列化接口
public class NoticeIn implements Serializable {
private Long id; // 通知ID
private String name; // 商品名
private Double purchashPrice; // 进货价格
private Long goodsNum; // 商品数量
private String coverUrl; // 商品封面URL
public NoticeIn() {
// 默认构造函数
}
public NoticeIn(Long id, String name, Double purchashPrice, Long goodsNum, String coverUrl) {
// 带参数的构造函数
this.id = id;
this.name = name;
this.purchashPrice = purchashPrice;
this.goodsNum = goodsNum;
this.coverUrl = coverUrl;
}
public Long getId() {
return id; // 获取通知ID
}
public void setId(Long id) {
this.id = id; // 设置通知ID
}
public String getName() {
return name; // 获取商品名
}
public void setName(String name) {
this.name = name; // 设置商品名
}
public Double getPurchashPrice() {
return purchashPrice; // 获取进货价格
}
public void setPurchashPrice(Double purchashPrice) {
this.purchashPrice = purchashPrice; // 设置进货价格
}
public Long getGoodsNum() {
return goodsNum; // 获取商品数量
}
public void setGoodsNum(Long goodsNum) {
this.goodsNum = goodsNum; // 设置商品数量
}
public String getCoverUrl() {
return coverUrl; // 获取商品封面URL
}
public void setCoverUrl(String coverUrl) {
this.coverUrl = coverUrl; // 设置商品封面URL
}
}

@ -0,0 +1,68 @@
package com.shanzhu.market.entity.domain;
import java.io.Serializable; // 导入序列化接口
public class NoticeOut implements Serializable {
private Long id; // 通知ID
private String name; // 商品名
private Long goodsNum; // 商品数量
private String coverUrl; // 商品封面URL
private String state; // 状态
public NoticeOut() {
// 默认构造函数
}
public NoticeOut(Long id, String name, Long goodsNum, String coverUrl, String state) {
// 带参数的构造函数
this.id = id;
this.name = name;
this.goodsNum = goodsNum;
this.coverUrl = coverUrl;
this.state = state;
}
public Long getId() {
return id; // 获取通知ID
}
public void setId(Long id) {
this.id = id; // 设置通知ID
}
public String getName() {
return name; // 获取商品名
}
public void setName(String name) {
this.name = name; // 设置商品名
}
public Long getGoodsNum() {
return goodsNum; // 获取商品数量
}
public void setGoodsNum(Long goodsNum) {
this.goodsNum = goodsNum; // 设置商品数量
}
public String getCoverUrl() {
return coverUrl; // 获取商品封面URL
}
public void setCoverUrl(String coverUrl) {
this.coverUrl = coverUrl; // 设置商品封面URL
}
public String getState() {
return state; // 获取状态
}
public void setState(String state) {
this.state = state; // 设置状态
}
}

@ -0,0 +1,114 @@
package com.shanzhu.market.entity.domain;
import com.baomidou.mybatisplus.annotation.TableField; // 导入MyBatis-Plus 表字段注解类
import com.baomidou.mybatisplus.annotation.TableName; // 导入MyBatis-Plus 表名注解类
import java.io.Serializable; // 导入序列化接口
import java.util.Date; // 导入日期类
@TableName("point_products") // 指定数据库表名为point_products
public class PointProducts implements Serializable {
public static final String STATE_NORMAL = "0"; // 正常状态
public static final String STATE_DEL = "1"; // 删除状态
@TableField("goods_id") // 指定数据库字段名为goods_id
private Long goodsId; // 商品ID
@TableField("goods_name") // 指定数据库字段名为goods_name
private String goodsName; // 商品名称
private Long integral; // 积分
private String updateby; // 更新人
@TableField("update_time") // 指定数据库字段名为update_time
private Date updateTime; // 更新时间
@TableField("cover_url") // 指定数据库字段名为cover_url
private String coverUrl; // 商品封面URL
@TableField("update_id") // 指定数据库字段名为update_id
private Long updateId; // 更新人ID
private String state; // 状态
public PointProducts() {
// 默认构造函数
}
public PointProducts(Long goodsId, String goodsName, Long integral, String updateby, Date updateTime, String coverUrl, Long updateId, String state) {
// 带参数的构造函数
this.goodsId = goodsId;
this.goodsName = goodsName;
this.integral = integral;
this.updateby = updateby;
this.updateTime = updateTime;
this.coverUrl = coverUrl;
this.updateId = updateId;
this.state = state;
}
public Long getGoodsId() {
return goodsId; // 获取商品ID
}
public void setGoodsId(Long goodsId) {
this.goodsId = goodsId; // 设置商品ID
}
public String getGoodsName() {
return goodsName; // 获取商品名称
}
public void setGoodsName(String goodsName) {
this.goodsName = goodsName; // 设置商品名称
}
public Long getIntegral() {
return integral; // 获取积分
}
public void setIntegral(Long integral) {
this.integral = integral; // 设置积分
}
public String getUpdateby() {
return updateby; // 获取更新人
}
public void setUpdateby(String updateby) {
this.updateby = updateby; // 设置更新人
}
public Date getUpdateTime() {
return updateTime; // 获取更新时间
}
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime; // 设置更新时间
}
public String getCoverUrl() {
return coverUrl; // 获取商品封面URL
}
public void setCoverUrl(String coverUrl) {
this.coverUrl = coverUrl; // 设置商品封面URL
}
public Long getUpdateId() {
return updateId; // 获取更新人ID
}
public void setUpdateId(Long updateId) {
this.updateId = updateId; // 设置更新人ID
}
public String getState() {
return state; // 获取状态
}
public void setState(String state) {
this.state = state; // 设置状态
}
}

@ -0,0 +1,74 @@
package com.shanzhu.market.entity.domain;
import com.baomidou.mybatisplus.annotation.IdType; // 导入MyBatis-Plus ID类型注解类
import com.baomidou.mybatisplus.annotation.TableId; // 导入MyBatis-Plus 表ID注解类
import com.baomidou.mybatisplus.annotation.TableName; // 导入MyBatis-Plus 表名注解类
import java.io.Serializable; // 导入序列化接口
/**
*
*/
@TableName("t_role") // 指定数据库表名为t_role
public class Role implements Serializable {
public static final Long SYS_ID = 1L; // 系统角色ID
// 正常状态
public static final String STATE_NORMAL = "0";
// 禁用状态
public static final String STATE_BAN = "-1";
@TableId(type = IdType.AUTO) // 指定主键自增
private Long id; // 角色ID
private String name; // 角色名称
private String info; // 角色信息
private String state; // 角色状态
public Role() {
// 默认构造函数
}
public Role(Long id, String name, String info, String state) {
// 带参数的构造函数
this.id = id;
this.name = name;
this.info = info;
this.state = state;
}
public Long getId() {
return id; // 获取角色ID
}
public void setId(Long id) {
this.id = id; // 设置角色ID
}
public String getName() {
return name; // 获取角色名称
}
public void setName(String name) {
this.name = name; // 设置角色名称
}
public String getInfo() {
return info; // 获取角色信息
}
public void setInfo(String info) {
this.info = info; // 设置角色信息
}
public String getState() {
return state; // 获取角色状态
}
public void setState(String state) {
this.state = state; // 设置角色状态
}
}

@ -0,0 +1,172 @@
package com.shanzhu.market.entity.domain;
import com.baomidou.mybatisplus.annotation.TableField; // 导入MyBatis-Plus 表字段注解类
import com.baomidou.mybatisplus.annotation.TableName; // 导入MyBatis-Plus 表名注解类
import com.fasterxml.jackson.annotation.JsonFormat; // 导入Jackson JSON格式化注解类
import org.springframework.format.annotation.DateTimeFormat; // 导入Spring日期时间格式化注解类
import java.io.Serializable; // 导入序列化接口
import java.util.ArrayList; // 导入ArrayList类
import java.util.Date; // 导入日期类
import java.util.List; // 导入列表类
@TableName("t_sale_records") // 指定数据库表名为t_sale_records
public class SaleRecords implements Serializable {
public static final String STATE_NORMAL = "0"; // 正常状态
public static final String STATE_DEL = "1"; // 删除状态
private static final String TYPE_MEMBER = "1"; // 会员类型
private static final String TYPE_NOMEMBER = "0"; // 非会员类型
private static final String SELLWAY_ALIPAY = "0"; // 支付宝支付方式
private static final String SELLWAY_WECHAT = "1"; // 微信支付方式
private static final String SELLWAY_CASH = "2"; // 现金支付方式
private static final String SELLWAY_CREDIT = "3"; // 信用支付方式
private static final Double DISCOUNT = 0.9; // 折扣率
@TableField("cn") // 指定数据库字段名为cn
private String cn; // 销售编号
private Long eid; // 员工ID
private String sellway; // 支付方式
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") // 指定JSON日期格式
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") // 指定日期时间格式
@TableField("sell_time") // 指定数据库字段名为sell_time
private Date sellTime; // 销售时间
private String state; // 状态
private String info; // 信息
private String sellby; // 销售人
@TableField("sell_total") // 指定数据库字段名为sell_total
private Long sellTotal; // 销售总数
@TableField("sell_totalmoney") // 指定数据库字段名为sell_totalmoney
private Double sellTotalmoney; // 销售总金额
private String type; // 类型(会员或非会员)
@TableField(exist = false) // 不映射到数据库
private List<DetailSaleRecords> detailSaleRecords = new ArrayList<>(); // 详细销售记录列表
@TableField("member_phone") // 指定数据库字段名为member_phone
private String memberPhone; // 会员账号
public SaleRecords() {
// 默认构造函数
}
public SaleRecords(String cn, Long eid, String sellway, Date sellTime, String state, String info, String sellby, Long sellTotal, Double sellTotalmoney, String type, List<DetailSaleRecords> detailSaleRecords, String memberPhone) {
// 带参数的构造函数
this.cn = cn;
this.eid = eid;
this.sellway = sellway;
this.sellTime = sellTime;
this.state = state;
this.info = info;
this.sellby = sellby;
this.sellTotal = sellTotal;
this.sellTotalmoney = sellTotalmoney;
this.type = type;
this.detailSaleRecords = detailSaleRecords;
this.memberPhone = memberPhone;
}
public String getCn() {
return cn; // 获取销售编号
}
public void setCn(String cn) {
this.cn = cn; // 设置销售编号
}
public Long getEid() {
return eid; // 获取员工ID
}
public void setEid(Long eid) {
this.eid = eid; // 设置员工ID
}
public String getSellway() {
return sellway; // 获取支付方式
}
public void setSellway(String sellway) {
this.sellway = sellway; // 设置支付方式
}
public Date getSellTime() {
return sellTime; // 获取销售时间
}
public void setSellTime(Date sellTime) {
this.sellTime = sellTime; // 设置销售时间
}
public String getState() {
return state; // 获取状态
}
public void setState(String state) {
this.state = state; // 设置状态
}
public String getInfo() {
return info; // 获取信息
}
public void setInfo(String info) {
this.info = info; // 设置信息
}
public String getSellby() {
return sellby; // 获取销售人
}
public void setSellby(String sellby) {
this.sellby = sellby; // 设置销售人
}
public Long getSellTotal() {
return sellTotal; // 获取销售总数
}
public void setSellTotal(Long sellTotal) {
this.sellTotal = sellTotal; // 设置销售总数
}
public Double getSellTotalmoney() {
return sellTotalmoney; // 获取销售总金额
}
public void setSellTotalmoney(Double sellTotalmoney) {
this.sellTotalmoney = sellTotalmoney; // 设置销售总金额
}
public String getType() {
return type; // 获取类型(会员或非会员)
}
public void setType(String type) {
this.type = type; // 设置类型(会员或非会员)
}
public List<DetailSaleRecords> getDetailSaleRecords() {
return detailSaleRecords; // 获取详细销售记录列表
}
public void setDetailSaleRecords(List<DetailSaleRecords> detailSaleRecords) {
this.detailSaleRecords = detailSaleRecords; // 设置详细销售记录列表
}
public String getMemberPhone() {
return memberPhone; // 获取会员账号
}
public void setMemberPhone(String memberPhone) {
this.memberPhone = memberPhone; // 设置会员账号
}
}

@ -0,0 +1,80 @@
package com.shanzhu.market.entity.domain;
import com.baomidou.mybatisplus.annotation.IdType; // 导入MyBatis-Plus ID类型注解类
import com.baomidou.mybatisplus.annotation.TableId; // 导入MyBatis-Plus 表ID注解类
import com.baomidou.mybatisplus.annotation.TableName; // 导入MyBatis-Plus 表名注解类
import java.io.Serializable; // 导入序列化接口
/**
*
*/
@TableName("store") // 指定数据库表名为store
public class Store implements Serializable {
public static final String STATE_NORMAL = "0"; // 正常状态
public static final String STATE_BAN = "-1"; // 禁用状态
@TableId(type = IdType.AUTO) // 指定主键自增
private Long id; // 仓库ID
private String name; // 仓库名称
private String address; // 仓库地址
private String info; // 仓库信息
private String state; // 仓库状态
public Store() {
// 默认构造函数
}
public Store(Long id, String name, String address, String info, String state) {
// 带参数的构造函数
this.id = id;
this.name = name;
this.address = address;
this.info = info;
this.state = state;
}
public Long getId() {
return id; // 获取仓库ID
}
public void setId(Long id) {
this.id = id; // 设置仓库ID
}
public String getName() {
return name; // 获取仓库名称
}
public void setName(String name) {
this.name = name; // 设置仓库名称
}
public String getAddress() {
return address; // 获取仓库地址
}
public void setAddress(String address) {
this.address = address; // 设置仓库地址
}
public String getInfo() {
return info; // 获取仓库信息
}
public void setInfo(String info) {
this.info = info; // 设置仓库信息
}
public String getState() {
return state; // 获取仓库状态
}
public void setState(String state) {
this.state = state; // 设置仓库状态
}
}

@ -0,0 +1,88 @@
package com.shanzhu.market.entity.domain;
import com.baomidou.mybatisplus.annotation.IdType; // 导入MyBatis-Plus ID类型注解类
import com.baomidou.mybatisplus.annotation.TableId; // 导入MyBatis-Plus 表ID注解类
import com.baomidou.mybatisplus.annotation.TableName; // 导入MyBatis-Plus 表名注解类
import java.io.Serializable; // 导入序列化接口
@TableName("supplier") // 指定数据库表名为supplier
public class Supplier implements Serializable {
public static final String STATE_NORMAL = "0"; // 正常状态
public static final String STATE_BAN = "-1"; // 禁用状态
@TableId(type = IdType.AUTO) // 指定主键自增
private Long cn; // 供应商编号
private String name; // 供应商名称
private String address; // 供应商地址
private String tel; // 供应商电话
private String info; // 供应商信息
private String state; // 供应商状态
public Supplier() {
// 默认构造函数
}
public Supplier(Long cn, String name, String address, String tel, String info, String state) {
// 带参数的构造函数
this.cn = cn;
this.name = name;
this.address = address;
this.tel = tel;
this.info = info;
this.state = state;
}
public Long getCn() {
return cn; // 获取供应商编号
}
public void setCn(Long cn) {
this.cn = cn; // 设置供应商编号
}
public String getName() {
return name; // 获取供应商名称
}
public void setName(String name) {
this.name = name; // 设置供应商名称
}
public String getAddress() {
return address; // 获取供应商地址
}
public void setAddress(String address) {
this.address = address; // 设置供应商地址
}
public String getTel() {
return tel; // 获取供应商电话
}
public void setTel(String tel) {
this.tel = tel; // 设置供应商电话
}
public String getInfo() {
return info; // 获取供应商信息
}
public void setInfo(String info) {
this.info = info; // 设置供应商信息
}
public String getState() {
return state; // 获取供应商状态
}
public void setState(String state) {
this.state = state; // 设置供应商状态
}
}

@ -0,0 +1,49 @@
package com.shanzhu.market.entity.query;
import java.io.Serializable;
import java.util.Map;
// 定义一个基础查询类实现Serializable接口以便于序列化
public class BaseQuery implements Serializable {
// 当前页码默认值为1
private Integer currentPage = 1;
// 每页显示的记录数默认值为3
private Integer pageSize = 3;
// 其他请求参数使用Map存储键值对
private Map<String, Object> params;
// 计算查询的起始位置,即(currentPage-1)*pageSize
public Integer getStart() {
return (currentPage - 1) * pageSize;
}
// 获取当前页码
public Integer getCurrentPage() {
return currentPage;
}
// 设置当前页码
public void setCurrentPage(Integer currentPage) {
this.currentPage = currentPage;
}
// 获取每页显示的记录数
public Integer getPageSize() {
return pageSize;
}
// 设置每页显示的记录数
public void setPageSize(Integer pageSize) {
this.pageSize = pageSize;
}
// 获取其他请求参数
public Map<String, Object> getParams() {
return params;
}
// 设置其他请求参数
public void setParams(Map<String, Object> params) {
this.params = params;
}
}

@ -0,0 +1,17 @@
package com.shanzhu.market.entity.query;
// 定义一个菜单查询类继承自BaseQuery类
public class MenuQuery extends BaseQuery {
// 菜单名称
private String name;
// 获取菜单名称
public String getName() {
return name;
}
// 设置菜单名称
public void setName(String name) {
this.name = name;
}
}

@ -0,0 +1,29 @@
package com.shanzhu.market.entity.query;
// 定义一个部门查询类
public class QueryDept {
// 部门名称
private String name;
// 部门状态
private String state;
// 获取部门名称
public String getName() {
return name;
}
// 设置部门名称
public void setName(String name) {
this.name = name;
}
// 获取部门状态
public String getState() {
return state;
}
// 设置部门状态
public void setState(String state) {
this.state = state;
}
}

@ -0,0 +1,29 @@
package com.shanzhu.market.entity.query;
// 定义一个详细库存情况查询类继承自BaseQuery类
public class QueryDetailStorageSituation extends BaseQuery {
// 库存情况的唯一标识ID
private Long id;
// 库存所在的仓库ID
private Long storeId;
// 获取库存情况的唯一标识ID
public Long getId() {
return id;
}
// 设置库存情况的唯一标识ID
public void setId(Long id) {
this.id = id;
}
// 获取库存所在的仓库ID
public Long getStoreId() {
return storeId;
}
// 设置库存所在的仓库ID
public void setStoreId(Long storeId) {
this.storeId = storeId;
}
}

@ -0,0 +1,65 @@
package com.shanzhu.market.entity.query;
// 定义一个详细库存商品查询类继承自BaseQuery类
public class QueryDetailStoreGoods extends BaseQuery {
// 商品的分类编号
private String cn;
// 商品名称
private String goodsName;
// 商品状态
private String state1;
// 商品创建时间的起始时间
private String startCreateTime;
// 商品创建时间的结束时间
private String endCreateTime;
// 获取商品的分类编号
public String getCn() {
return cn;
}
// 设置商品的分类编号
public void setCn(String cn) {
this.cn = cn;
}
// 获取商品名称
public String getGoodsName() {
return goodsName;
}
// 设置商品名称
public void setGoodsName(String goodsName) {
this.goodsName = goodsName;
}
// 获取商品状态
public String getState1() {
return state1;
}
// 设置商品状态
public void setState1(String state1) {
this.state1 = state1;
}
// 获取商品创建时间的起始时间
public String getStartCreateTime() {
return startCreateTime;
}
// 设置商品创建时间的起始时间
public void setStartCreateTime(String startCreateTime) {
this.startCreateTime = startCreateTime;
}
// 获取商品创建时间的结束时间
public String getEndCreateTime() {
return endCreateTime;
}
// 设置商品创建时间的结束时间
public void setEndCreateTime(String endCreateTime) {
this.endCreateTime = endCreateTime;
}
}

@ -0,0 +1,77 @@
package com.shanzhu.market.entity.query;
// 定义一个详细出库商品查询类继承自BaseQuery类
public class QueryDetailStoreGoodsOut extends BaseQuery {
// 商品的分类编号
private String cn;
// 商品名称
private String goodsName;
// 商品状态1
private String state1;
// 商品状态
private String state;
// 商品创建时间的起始时间
private String startCreateTime;
// 商品创建时间的结束时间
private String endCreateTime;
// 获取商品的分类编号
public String getCn() {
return cn;
}
// 设置商品的分类编号
public void setCn(String cn) {
this.cn = cn;
}
// 获取商品名称
public String getGoodsName() {
return goodsName;
}
// 设置商品名称
public void setGoodsName(String goodsName) {
this.goodsName = goodsName;
}
// 获取商品状态1
public String getState1() {
return state1;
}
// 设置商品状态1
public void setState1(String state1) {
this.state1 = state1;
}
// 获取商品状态
public String getState() {
return state;
}
// 设置商品状态
public void setState(String state) {
this.state = state;
}
// 获取商品创建时间的起始时间
public String getStartCreateTime() {
return startCreateTime;
}
// 设置商品创建时间的起始时间
public void setStartCreateTime(String startCreateTime) {
this.startCreateTime = startCreateTime;
}
// 获取商品创建时间的结束时间
public String getEndCreateTime() {
return endCreateTime;
}
// 设置商品创建时间的结束时间
public void setEndCreateTime(String endCreateTime) {
this.endCreateTime = endCreateTime;
}
}

@ -0,0 +1,43 @@
package com.shanzhu.market.entity.query;
import java.io.Serializable;
// 定义一个修改密码查询类实现Serializable接口以便于序列化
public class QueryEditPwd implements Serializable {
// 用户名
private String username;
// 旧密码
private String oldPwd;
// 新密码
private String newPwd;
// 获取用户名
public String getUsername() {
return username;
}
// 设置用户名
public void setUsername(String username) {
this.username = username;
}
// 获取旧密码
public String getOldPwd() {
return oldPwd;
}
// 设置旧密码
public void setOldPwd(String oldPwd) {
this.oldPwd = oldPwd;
}
// 获取新密码
public String getNewPwd() {
return newPwd;
}
// 设置新密码
public void setNewPwd(String newPwd) {
this.newPwd = newPwd;
}
}

@ -0,0 +1,77 @@
package com.shanzhu.market.entity.query;
// 定义一个员工查询类继承自BaseQuery类
public class QueryEmp extends BaseQuery {
// 用户名
private String username;
// 昵称
private String nickName;
// 年龄
private String age;
// 地址
private String address;
// 性别
private String sex;
// 所属部门ID
private Long deptId;
// 获取用户名
public String getUsername() {
return username;
}
// 设置用户名
public void setUsername(String username) {
this.username = username;
}
// 获取昵称
public String getNickName() {
return nickName;
}
// 设置昵称
public void setNickName(String nickName) {
this.nickName = nickName;
}
// 获取年龄
public String getAge() {
return age;
}
// 设置年龄
public void setAge(String age) {
this.age = age;
}
// 获取地址
public String getAddress() {
return address;
}
// 设置地址
public void setAddress(String address) {
this.address = address;
}
// 获取性别
public String getSex() {
return sex;
}
// 设置性别
public void setSex(String sex) {
this.sex = sex;
}
// 获取所属部门ID
public Long getDeptId() {
return deptId;
}
// 设置所属部门ID
public void setDeptId(Long deptId) {
this.deptId = deptId;
}
}

@ -0,0 +1,53 @@
package com.shanzhu.market.entity.query;
// 定义一个积分兑换产品记录查询类继承自BaseQuery类
public class QueryExchangePointProductsRecords extends BaseQuery {
// 商品的分类编号
private String cn;
// 会员ID
private Long memberId;
// 记录的起始时间
private String startTime;
// 记录的结束时间
private String endTime;
// 获取商品的分类编号
public String getCn() {
return cn;
}
// 设置商品的分类编号
public void setCn(String cn) {
this.cn = cn;
}
// 获取会员ID
public Long getMemberId() {
return memberId;
}
// 设置会员ID
public void setMemberId(Long memberId) {
this.memberId = memberId;
}
// 获取记录的起始时间
public String getStartTime() {
return startTime;
}
// 设置记录的起始时间
public void setStartTime(String startTime) {
this.startTime = startTime;
}
// 获取记录的结束时间
public String getEndTime() {
return endTime;
}
// 设置记录的结束时间
public void setEndTime(String endTime) {
this.endTime = endTime;
}
}

@ -0,0 +1,89 @@
package com.shanzhu.market.entity.query;
// 定义一个商品查询类继承自BaseQuery类
public class QueryGoods extends BaseQuery {
// 商品的唯一标识ID
private Long id;
// 商品名称
private String name;
// 商品销售价格
private Double sellPrice;
// 商品类别ID
private Long categoryId;
// 商品状态
private String state;
// 商品操作的起始时间
private String operateStartTime;
// 商品操作的结束时间
private String operateEndTime;
// 获取商品的唯一标识ID
public Long getId() {
return id;
}
// 设置商品的唯一标识ID
public void setId(Long id) {
this.id = id;
}
// 获取商品名称
public String getName() {
return name;
}
// 设置商品名称
public void setName(String name) {
this.name = name;
}
// 获取商品销售价格
public Double getSellPrice() {
return sellPrice;
}
// 设置商品销售价格
public void setSellPrice(Double sellPrice) {
this.sellPrice = sellPrice;
}
// 获取商品类别ID
public Long getCategoryId() {
return categoryId;
}
// 设置商品类别ID
public void setCategoryId(Long categoryId) {
this.categoryId = categoryId;
}
// 获取商品状态
public String getState() {
return state;
}
// 设置商品状态
public void setState(String state) {
this.state = state;
}
// 获取商品操作的起始时间
public String getOperateStartTime() {
return operateStartTime;
}
// 设置商品操作的起始时间
public void setOperateStartTime(String operateStartTime) {
this.operateStartTime = operateStartTime;
}
// 获取商品操作的结束时间
public String getOperateEndTime() {
return operateEndTime;
}
// 设置商品操作的结束时间
public void setOperateEndTime(String operateEndTime) {
this.operateEndTime = operateEndTime;
}
}

@ -0,0 +1,120 @@
package com.shanzhu.market.entity.query;
public class package com.shanzhu.market.entity.query;
// 定义一个商品查询类继承自BaseQuery类
public class QueryGoods extends BaseQuery {
// 商品的唯一标识ID
private Long id;
// 商品名称
private String name;
// 商品销售价格
private Double sellPrice;
// 商品类别ID
private Long categoryId;
// 商品状态
private String state;
// 商品操作的起始时间
private String operateStartTime;
// 商品操作的结束时间
private String operateEndTime;
// 获取商品的唯一标识ID
public Long getId() {
return id;
}
// 设置商品的唯一标识ID
public void setId(Long id) {
this.id = id;
}
// 获取商品名称
public String getName() {
return name;
}
// 设置商品名称
public void setName(String name) {
this.name = name;
}
// 获取商品销售价格
public Double getSellPrice() {
return sellPrice;
}
// 设置商品销售价格
public void setSellPrice(Double sellPrice) {
this.sellPrice = sellPrice;
}
// 获取商品类别ID
public Long getCategoryId() {
return categoryId;
}
// 设置商品类别ID
public void setCategoryId(Long categoryId) {
this.categoryId = categoryId;
}
// 获取商品状态
public String getState() {
return state;
}
// 设置商品状态
public void setState(String state) {
this.state = state;
}
// 获取商品操作的起始时间
public String getOperateStartTime() {
return operateStartTime;
}
// 设置商品操作的起始时间
public void setOperateStartTime(String operateStartTime) {
this.operateStartTime = operateStartTime;
}
// 获取商品操作的结束时间
public String getOperateEndTime() {
return operateEndTime;
}
// 设置商品操作的结束时间
public void setOperateEndTime(String operateEndTime) {
this.operateEndTime = operateEndTime;
}
}
// 定义一个商品类别查询类继承自BaseQuery类
public class QueryGoodsCategory extends BaseQuery {
// 商品类别名称
private String name;
// 商品类别状态
private String state;
// 获取商品类别名称
public String getName() {
return name;
}
// 设置商品类别名称
public void setName(String name) {
this.name = name;
}
// 获取商品类别状态
public String getState() {
return state;
}
// 设置商品类别状态
public void setState(String state) {
this.state = state;
}
}

@ -0,0 +1,17 @@
package com.shanzhu.market.entity.query;
// 定义一个商品仓库查询类继承自BaseQuery类
public class QueryGoodsStore extends BaseQuery {
// 仓库名称
private String name;
// 获取仓库名称
public String getName() {
return name;
}
// 设置仓库名称
public void setName(String name) {
this.name = name;
}
}

@ -0,0 +1,41 @@
package com.shanzhu.market.entity.query;
// 定义一个会员查询类继承自BaseQuery类
public class QueryMember extends BaseQuery {
// 会员手机号
private String phone;
// 会员状态
private String state;
// 会员名称
private String name;
// 获取会员手机号
public String getPhone() {
return phone;
}
// 设置会员手机号
public void setPhone(String phone) {
this.phone = phone;
}
// 获取会员状态
public String getState() {
return state;
}
// 设置会员状态
public void setState(String state) {
this.state = state;
}
// 获取会员名称
public String getName() {
return name;
}
// 设置会员名称
public void setName(String name) {
this.name = name;
}
}

@ -0,0 +1,17 @@
package com.shanzhu.market.entity.query;
// 定义一个入库通知查询类继承自BaseQuery类
public class QueryNoticeIn extends BaseQuery {
// 入库通知名称
private String name;
// 获取入库通知名称
public String getName() {
return name;
}
// 设置入库通知名称
public void setName(String name) {
this.name = name;
}
}

@ -0,0 +1,29 @@
package com.shanzhu.market.entity.query;
// 定义一个出库通知查询类继承自BaseQuery类
public class QueryNoticeOut extends BaseQuery {
// 出库通知名称
private String name;
// 出库通知状态
private String state;
// 获取出库通知名称
public String getName() {
return name;
}
// 设置出库通知名称
public void setName(String name) {
this.name = name;
}
// 获取出库通知状态
public String getState() {
return state;
}
// 设置出库通知状态
public void setState(String state) {
this.state = state;
}
}

@ -0,0 +1,17 @@
package com.shanzhu.market.entity.query;
// 定义一个积分产品查询类继承自BaseQuery类
public class QueryPointProducts extends BaseQuery {
// 积分产品名称
private String name;
// 获取积分产品名称
public String getName() {
return name;
}
// 设置积分产品名称
public void setName(String name) {
this.name = name;
}
}

@ -0,0 +1,65 @@
package com.shanzhu.market.entity.query;
// 定义一个销售记录查询类继承自BaseQuery类
public class QuerySaleRecords extends BaseQuery {
// 商品的分类编号
private String cn;
// 销售开始时间
private String startSellTime;
// 销售结束时间
private String endSellTime;
// 销售类型
private String type;
// 销售方式
private String sellway;
// 获取商品的分类编号
public String getCn() {
return cn;
}
// 设置商品的分类编号
public void setCn(String cn) {
this.cn = cn;
}
// 获取销售开始时间
public String getStartSellTime() {
return startSellTime;
}
// 设置销售开始时间
public void setStartSellTime(String startSellTime) {
this.startSellTime = startSellTime;
}
// 获取销售结束时间
public String getEndSellTime() {
return endSellTime;
}
// 设置销售结束时间
public void setEndSellTime(String endSellTime) {
this.endSellTime = endSellTime;
}
// 获取销售类型
public String getType() {
return type;
}
// 设置销售类型
public void setType(String type) {
this.type = type;
}
// 获取销售方式
public String getSellway() {
return sellway;
}
// 设置销售方式
public void setSellway(String sellway) {
this.sellway = sellway;
}
}

@ -0,0 +1,17 @@
package com.shanzhu.market.entity.query;
// 定义一个销售统计查询类继承自BaseQuery类
public class QueryStatisticSale extends BaseQuery {
// 销售统计名称
private String name;
// 获取销售统计名称
public String getName() {
return name;
}
// 设置销售统计名称
public void setName(String name) {
this.name = name;
}
}

@ -0,0 +1,17 @@
package com.shanzhu.market.entity.query;
// 定义一个库存情况查询类继承自BaseQuery类
public class QueryStorageSituation extends BaseQuery {
// 库存情况名称
private String name;
// 获取库存情况名称
public String getName() {
return name;
}
// 设置库存情况名称
public void setName(String name) {
this.name = name;
}
}

@ -0,0 +1,31 @@
package com.shanzhu.market.entity.query;
import java.io.Serializable;
// 定义一个仓库查询类实现Serializable接口以便于序列化
public class QueryStore implements Serializable {
// 仓库名称
private String name;
// 仓库状态
private String state;
// 获取仓库名称
public String getName() {
return name;
}
// 设置仓库名称
public void setName(String name) {
this.name = name;
}
// 获取仓库状态
public String getState() {
return state;
}
// 设置仓库状态
public void setState(String state) {
this.state = state;
}
}

@ -0,0 +1,41 @@
package com.shanzhu.market.entity.query;
// 定义一个供应商查询类继承自BaseQuery类
public class QuerySupplier extends BaseQuery {
// 供应商名称
private String name;
// 供应商地址
private String address;
// 供应商信息
private String info;
// 获取供应商名称
public String getName() {
return name;
}
// 设置供应商名称
public void setName(String name) {
this.name = name;
}
// 获取供应商地址
public String getAddress() {
return address;
}
// 设置供应商地址
public void setAddress(String address) {
this.address = address;
}
// 获取供应商信息
public String getInfo() {
return info;
}
// 设置供应商信息
public void setInfo(String info) {
this.info = info;
}
}

@ -0,0 +1,29 @@
package com.shanzhu.market.entity.query;
// 定义一个角色查询类
public class RoleQuery {
// 角色名称
private String name;
// 角色状态
private String state;
// 获取角色名称
public String getName() {
return name;
}
// 设置角色名称
public void setName(String name) {
this.name = name;
}
// 获取角色状态
public String getState() {
return state;
}
// 设置角色状态
public void setState(String state) {
this.state = state;
}
}

@ -0,0 +1,241 @@
package com.shanzhu.market.entity.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.io.Serializable;
import java.util.Date;
import java.util.Set;
// 定义一个详细员工视图类实现Serializable接口以便于序列化
public class DetailEmpVo implements Serializable {
// 员工唯一标识ID
private Long id;
// 性别
private String sex;
// 是否为管理员
private Boolean isAdmin;
// 用户名
private String username;
// 昵称
private String nickName;
// 密码
private String password;
// 头像图片路径
private String headImg;
// 状态
private String state;
// 信息
private String info;
// 创建人
private String createby;
// 身份证号
private String idCard;
// 创建时间,格式为"yyyy-MM-dd"
@JsonFormat(pattern = "yyyy-MM-dd")
private Date createTime;
// 离职时间,格式为"yyyy-MM-dd"
@JsonFormat(pattern = "yyyy-MM-dd")
private Date leaveTime;
// 地址
private String address;
// 邮箱
private String email;
// 年龄
private Integer age;
// 所属部门ID
private Long deptId;
// 所属部门名称
private String deptName;
// 角色集合
private Set<String> roleNames;
// 获取员工唯一标识ID
public Long getId() {
return id;
}
// 设置员工唯一标识ID
public void setId(Long id) {
this.id = id;
}
// 获取性别
public String getSex() {
return sex;
}
// 设置性别
public void setSex(String sex) {
this.sex = sex;
}
// 获取是否为管理员
public Boolean getAdmin() {
return isAdmin;
}
// 设置是否为管理员
public void setAdmin(Boolean admin) {
isAdmin = admin;
}
// 获取用户名
public String getUsername() {
return username;
}
// 设置用户名
public void setUsername(String username) {
this.username = username;
}
// 获取昵称
public String getNickName() {
return nickName;
}
// 设置昵称
public void setNickName(String nickName) {
this.nickName = nickName;
}
// 获取密码
public String getPassword() {
return password;
}
// 设置密码
public void setPassword(String password) {
this.password = password;
}
// 获取头像图片路径
public String getHeadImg() {
return headImg;
}
// 设置头像图片路径
public void setHeadImg(String headImg) {
this.headImg = headImg;
}
// 获取状态
public String getState() {
return state;
}
// 设置状态
public void setState(String state) {
this.state = state;
}
// 获取信息
public String getInfo() {
return info;
}
// 设置信息
public void setInfo(String info) {
this.info = info;
}
// 获取创建人
public String getCreateby() {
return createby;
}
// 设置创建人
public void setCreateby(String createby) {
this.createby = createby;
}
// 获取身份证号
public String getIdCard() {
return idCard;
}
// 设置身份证号
public void setIdCard(String idCard) {
this.idCard = idCard;
}
// 获取创建时间
public Date getCreateTime() {
return createTime;
}
// 设置创建时间
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
// 获取离职时间
public Date getLeaveTime() {
return leaveTime;
}
// 设置离职时间
public void setLeaveTime(Date leaveTime) {
this.leaveTime = leaveTime;
}
// 获取地址
public String getAddress() {
return address;
}
// 设置地址
public void setAddress(String address) {
this.address = address;
}
// 获取邮箱
public String getEmail() {
return email;
}
// 设置邮箱
public void setEmail(String email) {
this.email = email;
}
// 获取年龄
public Integer getAge() {
return age;
}
// 设置年龄
public void setAge(Integer age) {
this.age = age;
}
// 获取所属部门ID
public Long getDeptId() {
return deptId;
}
// 设置所属部门ID
public void setDeptId(Long deptId) {
this.deptId = deptId;
}
// 获取所属部门名称
public String getDeptName() {
return deptName;
}
// 设置所属部门名称
public void setDeptName(String deptName) {
this.deptName = deptName;
}
// 获取角色集合
public Set<String> getRoleNames() {
return roleNames;
}
// 设置角色集合
public void setRoleNames(Set<String> roleNames) {
this.roleNames = roleNames;
}
}

@ -0,0 +1,63 @@
package com.shanzhu.market.entity.vo;
import java.io.Serializable;
/**
*
*/
public class DetailStorageSituationVo implements Serializable {
// 商品ID
private Long goodsId;
// 商品名称
private String goodsName;
// 商品剩余数量
private Long residueNum; // 商品数量
// 百分比
private Long percentage = 0L;
// 设置百分比
public void setPercentage(Long total) {
if (total == null || total == 0) {
this.percentage = 0L;
} else {
String num = ((this.residueNum * 100.0) / total) + "";
Long num1 = Long.valueOf(num.split("\\.")[0]);
this.percentage = num1;
}
}
// 获取商品ID
public Long getGoodsId() {
return goodsId;
}
// 设置商品ID
public void setGoodsId(Long goodsId) {
this.goodsId = goodsId;
}
// 获取商品名称
public String getGoodsName() {
return goodsName;
}
// 设置商品名称
public void setGoodsName(String goodsName) {
this.goodsName = goodsName;
}
// 获取商品剩余数量
public Long getResidueNum() {
return residueNum;
}
// 设置商品剩余数量
public void setResidueNum(Long residueNum) {
this.residueNum = residueNum;
}
// 获取百分比
public Long getPercentage() {
return percentage;
}
}

@ -0,0 +1,157 @@
package com.shanzhu.market.entity.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.util.Date;
// 定义一个详细出库商品视图类实现Serializable接口以便于序列化
public class DetailStoreGoodsOutVo implements Serializable {
// 商品分类编号
private String cn;
// 商品ID
private Long goodsId;
// 商品数量
private Long goodsNum;
// 商品名称
private String goodsName;
// 创建人ID
private Long createid;
// 创建人名称
private String createby;
// 创建时间,格式为"yyyy-MM-dd"
@JsonFormat(pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date createTime;
// 状态
private String state;
// 信息
private String info;
// 仓库ID
private Long storeId;
// 仓库名称
private String storeName;
// 状态1
private String state1;
// 获取商品分类编号
public String getCn() {
return cn;
}
// 设置商品分类编号
public void setCn(String cn) {
this.cn = cn;
}
// 获取商品ID
public Long getGoodsId() {
return goodsId;
}
// 设置商品ID
public void setGoodsId(Long goodsId) {
this.goodsId = goodsId;
}
// 获取商品数量
public Long getGoodsNum() {
return goodsNum;
}
// 设置商品数量
public void setGoodsNum(Long goodsNum) {
this.goodsNum = goodsNum;
}
// 获取商品名称
public String getGoodsName() {
return goodsName;
}
// 设置商品名称
public void setGoodsName(String goodsName) {
this.goodsName = goodsName;
}
// 获取创建人ID
public Long getCreateid() {
return createid;
}
// 设置创建人ID
public void setCreateid(Long createid) {
this.createid = createid;
}
// 获取创建人名称
public String getCreateby() {
return createby;
}
// 设置创建人名称
public void setCreateby(String createby) {
this.createby = createby;
}
// 获取创建时间
public Date getCreateTime() {
return createTime;
}
// 设置创建时间
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
// 获取状态
public String getState() {
return state;
}
// 设置状态
public void setState(String state) {
this.state = state;
}
// 获取信息
public String getInfo() {
return info;
}
// 设置信息
public void setInfo(String info) {
this.info = info;
}
// 获取仓库ID
public Long getStoreId() {
return storeId;
}
// 设置仓库ID
public void setStoreId(Long storeId) {
this.storeId = storeId;
}
// 获取仓库名称
public String getStoreName() {
return storeName;
}
// 设置仓库名称
public void setStoreName(String storeName) {
this.storeName = storeName;
}
// 获取状态1
public String getState1() {
return state1;
}
// 设置状态1
public void setState1(String state1) {
this.state1 = state1;
}
}

@ -0,0 +1,221 @@
package com.shanzhu.market.entity.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.util.Date;
// 定义一个详细库存商品视图类实现Serializable接口以便于序列化
public class DetailStoreGoodsVo implements Serializable {
// 商品分类编号
private String cn;
// 商品ID
private Long goodsId;
// 商品数量
private Long goodsNum;
// 商品名称
private String goodsName;
// 商品价格
private Double goodsPrice;
// 商品信息
private String info;
// 创建人ID
private Long createid;
// 创建人名称
private String createby;
// 创建时间,格式为"yyyy-MM-dd"
@JsonFormat(pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date createTime;
// 过期时间,格式为"yyyy-MM-dd"
@JsonFormat(pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date expiryTime;
// 生产时间,格式为"yyyy-MM-dd"
@JsonFormat(pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date birthTime;
// 状态1
private String state1;
// 仓库ID
private Long storeId;
// 仓库名称
private String storeName;
// 状态
private String state;
// 供应商ID
private Long supplierId;
// 供应商名称
private String supplierName;
// 获取商品分类编号
public String getCn() {
return cn;
}
// 设置商品分类编号
public void setCn(String cn) {
this.cn = cn;
}
// 获取商品ID
public Long getGoodsId() {
return goodsId;
}
// 设置商品ID
public void setGoodsId(Long goodsId) {
this.goodsId = goodsId;
}
// 获取商品数量
public Long getGoodsNum() {
return goodsNum;
}
// 设置商品数量
public void setGoodsNum(Long goodsNum) {
this.goodsNum = goodsNum;
}
// 获取商品名称
public String getGoodsName() {
return goodsName;
}
// 设置商品名称
public void setGoodsName(String goodsName) {
this.goodsName = goodsName;
}
// 获取商品价格
public Double getGoodsPrice() {
return goodsPrice;
}
// 设置商品价格
public void setGoodsPrice(Double goodsPrice) {
this.goodsPrice = goodsPrice;
}
// 获取商品信息
public String getInfo() {
return info;
}
// 设置商品信息
public void setInfo(String info) {
this.info = info;
}
// 获取创建人ID
public Long getCreateid() {
return createid;
}
// 设置创建人ID
public void setCreateid(Long createid) {
this.createid = createid;
}
// 获取创建人名称
public String getCreateby() {
return createby;
}
// 设置创建人名称
public void setCreateby(String createby) {
this.createby = createby;
}
// 获取创建时间
public Date getCreateTime() {
return createTime;
}
// 设置创建时间
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
// 获取过期时间
public Date getExpiryTime() {
return expiryTime;
}
// 设置过期时间
public void setExpiryTime(Date expiryTime) {
this.expiryTime = expiryTime;
}
// 获取生产时间
public Date getBirthTime() {
return birthTime;
}
// 设置生产时间
public void setBirthTime(Date birthTime) {
this.birthTime = birthTime;
}
// 获取状态1
public String getState1() {
return state1;
}
// 设置状态1
public void setState1(String state1) {
this.state1 = state1;
}
// 获取仓库ID
public Long getStoreId() {
return storeId;
}
// 设置仓库ID
public void setStoreId(Long storeId) {
this.storeId = storeId;
}
// 获取仓库名称
public String getStoreName() {
return storeName;
}
// 设置仓库名称
public void setStoreName(String storeName) {
this.storeName = storeName;
}
// 获取状态
public String getState() {
return state;
}
// 设置状态
public void setState(String state) {
this.state = state;
}
// 获取供应商ID
public Long getSupplierId() {
return supplierId;
}
// 设置供应商ID
public void setSupplierId(Long supplierId) {
this.supplierId = supplierId;
}
// 获取供应商名称
public String getSupplierName() {
return supplierName;
}
// 设置供应商名称
public void setSupplierName(String supplierName) {
this.supplierName = supplierName;
}
}

@ -0,0 +1,163 @@
package com.shanzhu.market.entity.vo;
import java.io.Serializable;
// 定义一个编辑员工视图类实现Serializable接口以便于序列化
public class EditEmpVo implements Serializable {
// 员工唯一标识ID
private Long id;
// 身份证号
private String idCard;
// 用户名
private String username;
// 地址
private String address;
// 性别
private String sex;
// 年龄
private Integer age;
// 昵称
private String nickName;
// 头像图片路径
private String headImg;
// 状态
private String state;
// 信息
private String info;
// 所属部门ID
private Long deptId;
// 所属部门名称
private String deptName;
// 是否为管理员
private Boolean isAdmin;
// 获取员工唯一标识ID
public Long getId() {
return id;
}
// 设置员工唯一标识ID
public void setId(Long id) {
this.id = id;
}
// 获取身份证号
public String getIdCard() {
return idCard;
}
// 设置身份证号
public void setIdCard(String idCard) {
this.idCard = idCard;
}
// 获取用户名
public String getUsername() {
return username;
}
// 设置用户名
public void setUsername(String username) {
this.username = username;
}
// 获取地址
public String getAddress() {
return address;
}
// 设置地址
public void setAddress(String address) {
this.address = address;
}
// 获取性别
public String getSex() {
return sex;
}
// 设置性别
public void setSex(String sex) {
this.sex = sex;
}
// 获取年龄
public Integer getAge() {
return age;
}
// 设置年龄
public void setAge(Integer age) {
this.age = age;
}
// 获取昵称
public String getNickName() {
return nickName;
}
// 设置昵称
public void setNickName(String nickName) {
this.nickName = nickName;
}
// 获取头像图片路径
public String getHeadImg() {
return headImg;
}
// 设置头像图片路径
public void setHeadImg(String headImg) {
this.headImg = headImg;
}
// 获取状态
public String getState() {
return state;
}
// 设置状态
public void setState(String state) {
this.state = state;
}
// 获取信息
public String getInfo() {
return info;
}
// 设置信息
public void setInfo(String info) {
this.info = info;
}
// 获取所属部门ID
public Long getDeptId() {
return deptId;
}
// 设置所属部门ID
public void setDeptId(Long deptId) {
this.deptId = deptId;
}
// 获取所属部门名称
public String getDeptName() {
return deptName;
}
// 设置所属部门名称
public void setDeptName(String deptName) {
this.deptName = deptName;
}
// 获取是否为管理员
public Boolean getAdmin() {
return isAdmin;
}
// 设置是否为管理员
public void setAdmin(Boolean admin) {
isAdmin = admin;
}
}

@ -0,0 +1,167 @@
package com.shanzhu.market.entity.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.io.Serializable;
import java.util.Date;
// 定义一个商品列表视图类实现Serializable接口以便于序列化
public class GoodsListVo implements Serializable {
// 商品编码
private Long id;
// 商品封面URL
private String coverUrl;
// 商品名称
private String name;
// 售价
private Double sellPrice;
// 批发价
private Double purchashPrice;
// 商品数量
private Long residueNum;
// 可用库存数量
private Long residueStoreNum;
// 商品类型ID
private Long categoryId;
// 商品类型名称
private String categoryName;
// 状态,下架、上架
private String state;
// 操作者名称
private String updateby;
// 商品信息
private String info;
// 操作时间,格式为"yyyy-MM-dd"
@JsonFormat(pattern = "yyyy-MM-dd")
private Date updateTime;
// 获取商品编码
public Long getId() {
return id;
}
// 设置商品编码
public void setId(Long id) {
this.id = id;
}
// 获取商品封面URL
public String getCoverUrl() {
return coverUrl;
}
// 设置商品封面URL
public void setCoverUrl(String coverUrl) {
this.coverUrl = coverUrl;
}
// 获取商品名称
public String getName() {
return name;
}
// 设置商品名称
public void setName(String name) {
this.name = name;
}
// 获取售价
public Double getSellPrice() {
return sellPrice;
}
// 设置售价
public void setSellPrice(Double sellPrice) {
this.sellPrice = sellPrice;
}
// 获取批发价
public Double getPurchashPrice() {
return purchashPrice;
}
// 设置批发价
public void setPurchashPrice(Double purchashPrice) {
this.purchashPrice = purchashPrice;
}
// 获取商品数量
public Long getResidueNum() {
return residueNum;
}
// 设置商品数量
public void setResidueNum(Long residueNum) {
this.residueNum = residueNum;
}
// 获取可用库存数量
public Long getResidueStoreNum() {
return residueStoreNum;
}
// 设置可用库存数量
public void setResidueStoreNum(Long residueStoreNum) {
this.residueStoreNum = residueStoreNum;
}
// 获取商品类型ID
public Long getCategoryId() {
return categoryId;
}
// 设置商品类型ID
public void setCategoryId(Long categoryId) {
this.categoryId = categoryId;
}
// 获取商品类型名称
public String getCategoryName() {
return categoryName;
}
// 设置商品类型名称
public void setCategoryName(String categoryName) {
this.categoryName = categoryName;
}
// 获取状态,下架、上架
public String getState() {
return state;
}
// 设置状态,下架、上架
public void setState(String state) {
this.state = state;
}
// 获取操作者名称
public String getUpdateby() {
return updateby;
}
// 设置操作者名称
public void setUpdateby(String updateby) {
this.updateby = updateby;
}
// 获取商品信息
public String getInfo() {
return info;
}
// 设置商品信息
public void setInfo(String info) {
this.info = info;
}
// 获取操作时间
public Date getUpdateTime() {
return updateTime;
}
// 设置操作时间
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
}

@ -0,0 +1,67 @@
package com.shanzhu.market.entity.vo;
import java.io.Serializable;
// 定义一个商品仓库视图类实现Serializable接口以便于序列化
public class GoodsStoreVo implements Serializable {
// 商品唯一标识ID
private Long id;
// 商品名称
private String name; // 商品名
// 商品封面URL
private String coverUrl; // 商品封面
// 需要的库存量
private Long inventory; // 需库存量
// 货架上的商品数量
private Long shelves; // 货架商品数量
// 获取商品唯一标识ID
public Long getId() {
return id;
}
// 设置商品唯一标识ID
public void setId(Long id) {
this.id = id;
}
// 获取商品名称
public String getName() {
return name;
}
// 设置商品名称
public void setName(String name) {
this.name = name;
}
// 获取商品封面URL
public String getCoverUrl() {
return coverUrl;
}
// 设置商品封面URL
public void setCoverUrl(String coverUrl) {
this.coverUrl = coverUrl;
}
// 获取需要的库存量
public Long getInventory() {
return inventory;
}
// 设置需要的库存量
public void setInventory(Long inventory) {
this.inventory = inventory;
}
// 获取货架上的商品数量
public Long getShelves() {
return shelves;
}
// 设置货架上的商品数量
public void setShelves(Long shelves) {
this.shelves = shelves;
}
}

@ -0,0 +1,151 @@
package com.shanzhu.market.entity.vo;
import java.io.Serializable;
// 定义一个个人信息视图类实现Serializable接口以便于序列化
public class InformationVo implements Serializable {
// 员工唯一标识ID
private Long id;
// 性别
private String sex;
// 用户名
private String username;
// 昵称
private String nickName;
// 头像图片路径
private String headImg;
// 信息
private String info;
// 地址
private String address;
// 邮箱
private String email;
// 年龄
private Integer age;
// 所属部门ID
private Long deptId;
// 身份证号
private String idCard;
// 所属部门名称
private String deptName;
// 获取员工唯一标识ID
public Long getId() {
return id;
}
// 设置员工唯一标识ID
public void setId(Long id) {
this.id = id;
}
// 获取性别
public String getSex() {
return sex;
}
// 设置性别
public void setSex(String sex) {
this.sex = sex;
}
// 获取用户名
public String getUsername() {
return username;
}
// 设置用户名
public void setUsername(String username) {
this.username = username;
}
// 获取昵称
public String getNickName() {
return nickName;
}
// 设置昵称
public void setNickName(String nickName) {
this.nickName = nickName;
}
// 获取头像图片路径
public String getHeadImg() {
return headImg;
}
// 设置头像图片路径
public void setHeadImg(String headImg) {
this.headImg = headImg;
}
// 获取信息
public String getInfo() {
return info;
}
// 设置信息
public void setInfo(String info) {
this.info = info;
}
// 获取地址
public String getAddress() {
return address;
}
// 设置地址
public void setAddress(String address) {
this.address = address;
}
// 获取邮箱
public String getEmail() {
return email;
}
// 设置邮箱
public void setEmail(String email) {
this.email = email;
}
// 获取年龄
public Integer getAge() {
return age;
}
// 设置年龄
public void setAge(Integer age) {
this.age = age;
}
// 获取所属部门ID
public Long getDeptId() {
return deptId;
}
// 设置所属部门ID
public void setDeptId(Long deptId) {
this.deptId = deptId;
}
// 获取身份证号
public String getIdCard() {
return idCard;
}
// 设置身份证号
public void setIdCard(String idCard) {
this.idCard = idCard;
}
// 获取所属部门名称
public String getDeptName() {
return deptName;
}
// 设置所属部门名称
public void setDeptName(String deptName) {
this.deptName = deptName;
}
}

@ -0,0 +1,121 @@
package com.shanzhu.market.entity.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.util.Date;
// 定义一个入库通知异常视图类实现Serializable接口以便于序列化
public class NoticeInNotNormalVo implements Serializable {
// 商品分类编号
private String cn;
// 商品封面URL
private String coverUrl;
// 商品ID
private Long goodsId;
// 未处理数量
private Long untreatedNum;
// 商品名称
private String goodsName;
// 状态
private String state;
// 仓库ID
private Long storeId;
// 仓库名称
private String storeName;
// 通知时间,格式为"yyyy-MM-dd HH:mm:ss"
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date createTime;
// 获取商品分类编号
public String getCn() {
return cn;
}
// 设置商品分类编号
public void setCn(String cn) {
this.cn = cn;
}
// 获取商品封面URL
public String getCoverUrl() {
return coverUrl;
}
// 设置商品封面URL
public void setCoverUrl(String coverUrl) {
this.coverUrl = coverUrl;
}
// 获取商品ID
public Long getGoodsId() {
return goodsId;
}
// 设置商品ID
public void setGoodsId(Long goodsId) {
this.goodsId = goodsId;
}
// 获取未处理数量
public Long getUntreatedNum() {
return untreatedNum;
}
// 设置未处理数量
public void setUntreatedNum(Long untreatedNum) {
this.untreatedNum = untreatedNum;
}
// 获取商品名称
public String getGoodsName() {
return goodsName;
}
// 设置商品名称
public void setGoodsName(String goodsName) {
this.goodsName = goodsName;
}
// 获取状态
public String getState() {
return state;
}
// 设置状态
public void setState(String state) {
this.state = state;
}
// 获取仓库ID
public Long getStoreId() {
return storeId;
}
// 设置仓库ID
public void setStoreId(Long storeId) {
this.storeId = storeId;
}
// 获取仓库名称
public String getStoreName() {
return storeName;
}
// 设置仓库名称
public void setStoreName(String storeName) {
this.storeName = storeName;
}
// 获取通知时间
public Date getCreateTime() {
return createTime;
}
// 设置通知时间
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
}

@ -0,0 +1,86 @@
package com.shanzhu.market.entity.vo;
import com.fasterxml.jackson.annotation.JsonIgnoreType;
import java.io.Serializable;
import java.util.List;
// 定义一个角色权限视图类实现Serializable接口以便于序列化
public class RolePermissonVo implements Serializable {
// 菜单ID列表
private List<Long> menuIds;
// 菜单列表
private List<RoleMenu> menus;
/**
*
*
* @return RoleMenu
*/
public RoleMenu getRoleMenu() {
return new RoleMenu();
}
// 获取菜单ID列表
public List<Long> getMenuIds() {
return menuIds;
}
// 设置菜单ID列表
public void setMenuIds(List<Long> menuIds) {
this.menuIds = menuIds;
}
// 获取菜单列表
public List<RoleMenu> getMenus() {
return menus;
}
// 设置菜单列表
public void setMenus(List<RoleMenu> menus) {
this.menus = menus;
}
/**
* 使
*/
@JsonIgnoreType
public class RoleMenu {
// 菜单值
private Long value;
// 菜单标签
private String label;
// 子菜单列表
private List<RoleMenu> children;
// 获取菜单值
public Long getValue() {
return value;
}
// 设置菜单值
public void setValue(Long value) {
this.value = value;
}
// 获取菜单标签
public String getLabel() {
return label;
}
// 设置菜单标签
public void setLabel(String label) {
this.label = label;
}
// 获取子菜单列表
public List<RoleMenu> getChildren() {
return children;
}
// 设置子菜单列表
public void setChildren(List<RoleMenu> children) {
this.children = children;
}
}
}

@ -0,0 +1,82 @@
package com.shanzhu.market.entity.vo;
import java.io.Serializable;
/**
*
*/
public class SaleGoodsVo implements Serializable {
// 商品ID
private Long goodsId;
// 商品名称
private String goodsName;
// 商品封面URL
private String coverUrl;
// 销量
private Long salesVolume;
// 销售百分比
private Long percentage = 0L;
/**
*
*
* @param total
*/
public void setPercentage(Long total) {
if (total == null || total == 0) {
this.percentage = 0L;
} else {
if (this.salesVolume == null) {
this.salesVolume = 0L;
}
String num = ((this.salesVolume * 100.0) / total) + "";
Long num1 = Long.valueOf(num.split("\\.")[0]);
this.percentage = num1;
}
}
// 获取商品ID
public Long getGoodsId() {
return goodsId;
}
// 设置商品ID
public void setGoodsId(Long goodsId) {
this.goodsId = goodsId;
}
// 获取商品名称
public String getGoodsName() {
return goodsName;
}
// 设置商品名称
public void setGoodsName(String goodsName) {
this.goodsName = goodsName;
}
// 获取商品封面URL
public String getCoverUrl() {
return coverUrl;
}
// 设置商品封面URL
public void setCoverUrl(String coverUrl) {
this.coverUrl = coverUrl;
}
// 获取销量
public Long getSalesVolume() {
return salesVolume;
}
// 设置销量
public void setSalesVolume(Long salesVolume) {
this.salesVolume = salesVolume;
}
// 获取销售百分比
public Long getPercentage() {
return percentage;
}
}

@ -0,0 +1,35 @@
package com.shanzhu.market.entity.vo;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import java.io.Serializable;
/**
*
*/
public class SalesStatisticsVo implements Serializable {
// 所有商品总售卖量
private Long total;
// 分页的商品销售信息列表
private Page<SaleGoodsVo> vos;
// 获取所有商品总售卖量
public Long getTotal() {
return total;
}
// 设置所有商品总售卖量
public void setTotal(Long total) {
this.total = total;
}
// 获取分页的商品销售信息列表
public Page<SaleGoodsVo> getVos() {
return vos;
}
// 设置分页的商品销售信息列表
public void setVos(Page<SaleGoodsVo> vos) {
this.vos = vos;
}
}

@ -0,0 +1,45 @@
package com.shanzhu.market.entity.vo;
import java.io.Serializable;
/**
*
*/
public class StorageSituationVo implements Serializable {
// 仓库ID
private Long storeId;
// 仓库名称
private String storeName;
// 该仓库存储商品数量
private Long residueNum; // 该仓库存储商品数量
// 获取仓库ID
public Long getStoreId() {
return storeId;
}
// 设置仓库ID
public void setStoreId(Long storeId) {
this.storeId = storeId;
}
// 获取仓库名称
public String getStoreName() {
return storeName;
}
// 设置仓库名称
public void setStoreName(String storeName) {
this.storeName = storeName;
}
// 获取该仓库存储商品数量
public Long getResidueNum() {
return residueNum;
}
// 设置该仓库存储商品数量
public void setResidueNum(Long residueNum) {
this.residueNum = residueNum;
}
}

@ -0,0 +1,47 @@
package com.shanzhu.market.job;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.shanzhu.market.common.redis.constants.RedisKeys;
import com.shanzhu.market.common.redis.service.RedisTemplateService;
import com.shanzhu.market.entity.domain.GoodsCategory;
import com.shanzhu.market.service.IGoodsCategoryService;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.List;
// 定义一个定时任务类,用于缓存数据
@Component
public class CacheDataJob {
// 注入Redis模板服务
@Resource
private RedisTemplateService redisTemplateService;
// 注入商品类别服务
@Resource
private IGoodsCategoryService goodsCategoryService;
// 定义一个定时任务每天凌晨1点执行一次
@Scheduled(cron = "0 0 1 * * ?")
public void cache_category() {
// 打印任务执行日志
System.out.println("被执行。。。。");
// 创建查询条件,查询状态为正常的商品类别
QueryWrapper<GoodsCategory> wrapper = new QueryWrapper<GoodsCategory>()
.eq("state", GoodsCategory.STATE_NORMAL);
// 获取符合条件的商品类别列表
List<GoodsCategory> list = goodsCategoryService.list(wrapper);
// 如果列表为空或大小为0直接返回
if (list == null || list.size() <= 0) {
return;
}
// 定义Redis缓存键
String cacheKey = RedisKeys.GOODS_CATEGORY.join();
// 遍历商品类别列表将每个商品类别缓存到Redis中
for (GoodsCategory goodsCategory : list) {
redisTemplateService.setCacheMapValue(cacheKey, goodsCategory.getId().toString(), goodsCategory);
}
}
}

@ -0,0 +1,17 @@
package com.shanzhu.market.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.shanzhu.market.entity.domain.Dept;
import org.apache.ibatis.annotations.Mapper;
// 定义一个部门Mapper接口继承自BaseMapper以便使用MyBatis-Plus提供的CRUD方法
@Mapper
public interface DeptMapper extends BaseMapper<Dept> {
// 继承自BaseMapper的方法包括
// insert(Dept entity) - 插入一条记录
// updateById(Dept entity) - 根据ID更新记录
// deleteById(Long id) - 根据ID删除记录
// selectById(Long id) - 根据ID查询记录
// selectList(Wrapper<Dept> queryWrapper) - 根据条件查询记录列表
// 其他CRUD方法...
}

@ -0,0 +1,17 @@
package com.shanzhu.market.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.shanzhu.market.entity.domain.DetailSaleRecords;
import org.apache.ibatis.annotations.Mapper;
// 定义一个详细销售记录Mapper接口继承自BaseMapper以便使用MyBatis-Plus提供的CRUD方法
@Mapper
public interface DetailSaleRecordsMapper extends BaseMapper<DetailSaleRecords> {
// 继承自BaseMapper的方法包括
// insert(DetailSaleRecords entity) - 插入一条记录
// updateById(DetailSaleRecords entity) - 根据ID更新记录
// deleteById(Long id) - 根据ID删除记录
// selectById(Long id) - 根据ID查询记录
// selectList(Wrapper<DetailSaleRecords> queryWrapper) - 根据条件查询记录列表
// 其他CRUD方法...
}

@ -0,0 +1,17 @@
package com.shanzhu.market.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.shanzhu.market.entity.domain.DetailStoreGoods;
import org.apache.ibatis.annotations.Mapper;
// 定义一个详细库存商品Mapper接口继承自BaseMapper以便使用MyBatis-Plus提供的CRUD方法
@Mapper
public interface DetailStoreGoodsMapper extends BaseMapper<DetailStoreGoods> {
// 继承自BaseMapper的方法包括
// insert(DetailStoreGoods entity) - 插入一条记录
// updateById(DetailStoreGoods entity) - 根据ID更新记录
// deleteById(Long id) - 根据ID删除记录
// selectById(Long id) - 根据ID查询记录
// selectList(Wrapper<DetailStoreGoods> queryWrapper) - 根据条件查询记录列表
// 其他CRUD方法...
}

@ -0,0 +1,17 @@
package com.shanzhu.market.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.shanzhu.market.entity.domain.Employee;
import org.apache.ibatis.annotations.Mapper;
// 定义一个员工Mapper接口继承自BaseMapper以便使用MyBatis-Plus提供的CRUD方法
@Mapper
public interface EmployeeMapper extends BaseMapper<Employee> {
// 继承自BaseMapper的方法包括
// insert(Employee entity) - 插入一条记录
// updateById(Employee entity) - 根据ID更新记录
// deleteById(Long id) - 根据ID删除记录
// selectById(Long id) - 根据ID查询记录
// selectList(Wrapper<Employee> queryWrapper) - 根据条件查询记录列表
// 其他CRUD方法...
}

@ -0,0 +1,17 @@
package com.shanzhu.market.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.shanzhu.market.entity.domain.ExchangePointProducts;
import org.apache.ibatis.annotations.Mapper;
// 定义一个积分兑换产品Mapper接口继承自BaseMapper以便使用MyBatis-Plus提供的CRUD方法
@Mapper
public interface ExchangePointProductsMapper extends BaseMapper<ExchangePointProducts> {
// 继承自BaseMapper的方法包括
// insert(ExchangePointProducts entity) - 插入一条记录
// updateById(ExchangePointProducts entity) - 根据ID更新记录
// deleteById(Long id) - 根据ID删除记录
// selectById(Long id) - 根据ID查询记录
// selectList(Wrapper<ExchangePointProducts> queryWrapper) - 根据条件查询记录列表
// 其他CRUD方法...
}

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save