Proyecto de graduación por computadora Sistema comunitario de compras de comestibles Vue+SpringBoot+MySQL

Página de inicio del autor : Diseñador Xiao Zheng
Breve introducción del autor : Ingeniero de software Java full-stack de Ningbo, Zhejiang, responsable del desarrollo y gestión de los proyectos OA de la empresa, centrándose en el desarrollo de software front-end y back-end, personalización del sistema y Orientación técnica remota. CSDN Academy, instructor certificado del curso Blue Bridge Cloud, creador de alta calidad en el campo full stack.

Insertar descripción de la imagen aquí

proyecto contenido
nombre del proyecto Sistema comunitario de compra de comestibles (S 011) \color{red}{Sistema comunitario de compra de comestibles (S011)}Sistema comunitario de compra de alimentos ( S 011 )
Tipo de proyecto Artículos pagados
Adquisición de código fuente Adquisición de código fuente en autoservicio
Versión de implementación Se puede ejecutar localmente sin código fuente.
Intercambiar publicaciones de preguntas y respuestas Puedes comunicarte y discutir este proyecto en la barra de publicaciones.
grabación de pantalla del proyecto Puedes ver una demostración dinámica de este proyecto.
Servicios de valor añadido [ Documentación, implementación, explicación\color{red}{Documentación, implementación, explicación}Documentación, implementación, explicación ] "Estándares de servicio para proyectos pagos"

El sistema comunitario de compra de alimentos basado en Vue + SpringBoot + MySQL incluyeMódulo de clasificación de platos,Módulo de archivo de platos,Módulo de pedido de platos,Módulo de recolección de platos,Módulo de dirección de entrega.También incluye la gestión de usuarios y departamentos del sistema. , gestión de roles y gestión de menús. , gestión de registros, gestión de diccionario de datos, gestión de archivos, visualización de gráficos y otros módulos básicos. El sistema comunitario de compra de alimentos tiene control de acceso basado en roles para compradores y administradores de alimentos. Los permisos pueden ser precisos para el A nivel de botón, puede personalizar roles y asignar permisos, el sistema es adecuado para diseñar requisitos precisos de restricción de permisos.


1. Resumen

Con la creciente popularidad de la tecnología informática y la tecnología de redes, se han brindado oportunidades para la construcción de informatización de mercados comunitarios de verduras. Es una buena elección utilizar tecnología avanzada para establecer una variedad de sistemas comunitarios de compra de verduras. La publicación de información sobre gestión del mercado e información sobre productos (incluidos precios, calidad, etc.) a través de pantallas electrónicas y sitios web puede mejorar el intercambio de información entre el mercado y los ciudadanos, lograr el propósito de prosperar el mercado y servir mejor a los ciudadanos. Este artículo utiliza una arquitectura que combina el modelo B/S para diseñar e implementar un sistema de compras comunitario basado en Java EE.


2. Diseño del sistema

2.1 Diseño del módulo de funciones

Los requisitos funcionales del sistema de compras comunitarias incluyen principalmente seis módulos: módulo de centro de datos, módulo de clasificación de platos, módulo de archivo de platos, módulo de pedido de platos, módulo de recolección de platos y módulo de dirección de entrega. El sistema es un backend de administración web basado en la operación del navegador. , cada módulo se describe en detalle a continuación.
Insertar descripción de la imagen aquí

2.1.1 Módulo de centro de datos

El módulo del centro de datos incluye la configuración básica del sistema de compras de comestibles de la comunidad, como la gestión de usuarios registrados, la gestión de la estructura organizativa de la empresa operativa, la gestión de los permisos del menú de usuario, la gestión de registros del sistema y la Gestión de discos de nube de archivos públicos.

Entre ellos, el módulo de gestión de usuarios de inicio de sesión es responsable del trabajo de operación y mantenimiento por parte del administrador, quien puede agregar, eliminar, modificar y consultar usuarios de inicio de sesión.

La estructura organizacional se refiere a la estructura organizacional de colegios y universidades. Este módulo es adecuado para gestionar los niveles departamentales de estas estructuras organizativas y la afiliación departamental de los docentes.

El módulo de gestión de permisos del menú de usuario se utiliza para gestionar los permisos de menú específicos de usuarios con diferentes permisos.

La gestión de registros del sistema se utiliza para mantener registros de los usuarios que inician sesión en el sistema para facilitar la localización y el seguimiento de las operaciones de los usuarios.

El módulo de administración de discos en la nube pública se utiliza para mantener uniformemente imágenes en el sistema de compras de comestibles de la comunidad, como documentos de firma de contratos, fotografías de contratos, etc.

Insertar descripción de la imagen aquí

2.1.2 Módulo de clasificación de platos

Diferentes platos tienen diferentes tipos. Los diferentes tipos de platos a menudo deben gestionarse por separado, por lo que es necesario establecer un módulo de clasificación de platos. Los datos de clasificación de platos incluyen el nombre del tipo, el estado del tipo, el valor de clasificación, las observaciones, el creador, la hora de creación y el actualizador. y actualizar. Time, los administradores pueden agregar, eliminar, editar y consultar condicionalmente datos de roles, y los usuarios pueden consultar datos de roles publicados por los administradores.
Insertar descripción de la imagen aquí

2.1.3 Módulo de archivo de platos

Dish es la entidad central del sistema de compras de comestibles de la comunidad. Es necesario establecer un módulo de archivo de platos para administrar los datos de los platos en el sistema. Los campos de los platos incluyen el nombre del plato, la introducción del plato, la clasificación del plato, el inventario restante, el creador, hora de creación, actualizador, hora del actualizador, el administrador puede agregar, eliminar, editar y consultar condicionalmente los datos del plato, y el usuario puede consultar los datos del plato publicados por el administrador.
Insertar descripción de la imagen aquí

2.1.4 Módulo de pedido de platos

Después de tener los datos del plato, el usuario puede realizar un pedido en el sistema de compras de comestibles de la comunidad. Los datos del pedido de plato incluyen el plato, la cantidad del pedido, el precio total, la dirección de entrega, el creador, la hora de creación, el actualizador, la hora de actualización, el usuario Puede iniciar una solicitud de pedido y el administrador puede procesar los pedidos de platos iniciados por el usuario.

Insertar descripción de la imagen aquí

2.1.5 Módulo de recogida de platos

Para brindar un mejor servicio a los usuarios, el sistema de compras de comestibles de la comunidad admite la recolección de platos, para que los usuarios puedan ordenar sus platos favoritos de manera más conveniente y rápida. Los campos de recolección de platos incluyen ID del plato, nombre del plato, imagen del plato, coleccionista, creador, creación. hora, actualizador, hora de actualización, los usuarios pueden iniciar una aplicación de recolección de platos y los administradores pueden consultar la información de recolección de platos del usuario.

Insertar descripción de la imagen aquí

2.1.6 Módulo de dirección de envío

Para facilitar que los usuarios realicen pedidos más rápidamente, los usuarios pueden administrar sus propias direcciones de entrega y pueden seleccionar rápidamente las direcciones de entrega que mantienen al realizar pedidos de platos. El campo de dirección de entrega incluye el nombre del cliente, la dirección de entrega, la persona de contacto, el número de contacto, el creador, la hora de creación, el actualizador y la hora de actualización. Los usuarios pueden agregar, editar, eliminar y consultar condicionalmente el suyo propio. direcciones de entrega Los administradores pueden consultar las direcciones de envío de todos los usuarios.

Insertar descripción de la imagen aquí

2.2 Análisis de viabilidad

Primero investigaré el sistema comunitario de compras de comestibles en el mismo tipo de mercado, comprenderé sus ventajas y desventajas y luego preguntaré a algunos expertos relacionados con el sistema y las compras de comestibles, y discutiré nuestras ideas iniciales con ellos. Luego realizaré encuestas in situ con los clientes para comprender sus requisitos específicos para este tipo de sistema comunitario de compra de comestibles. Finalmente, resumiremos todos los puntos anteriores para aclarar la diferencia entre nuestro sistema y productos similares, e identificar las características del sistema de compras comunitarias que desarrollaremos para hacerlo más prometedor en el mercado después de su lanzamiento.

2.3 Análisis de casos de uso

UML es un lenguaje de modelado gráfico orientado a objetos que es fácil de expresar, fácil de definir, tiene una amplia gama de aplicaciones y funciones potentes.

El diagrama de casos de uso es un tipo de modelo de casos de uso. Los analistas de requisitos pueden utilizar el diagrama de casos de uso para representar el comportamiento operativo del usuario. El diseño del diagrama de casos de uso del sistema de compras comunitario incluye principalmente el diseño de casos de uso del usuario y el diseño de casos de uso del administrador.
Insertar descripción de la imagen aquí

2.4 Diseño de clase de entidad

2.4.1 Módulo de clasificación de platos

Insertar descripción de la imagen aquí

2.4.2 Módulo de archivo de platos

Insertar descripción de la imagen aquí

2.4.3 Módulo de pedido de platos

Insertar descripción de la imagen aquí

2.4.4 Módulo de recogida de platos

Insertar descripción de la imagen aquí

2.4.5 Módulo de dirección de envío

Insertar descripción de la imagen aquí


3. Implementación del sistema

3.1 Visualización del sistema

Insertar descripción de la imagen aquí
Insertar descripción de la imagen aquí
Insertar descripción de la imagen aquí
Insertar descripción de la imagen aquí
Insertar descripción de la imagen aquí
Insertar descripción de la imagen aquí
Insertar descripción de la imagen aquí

3.2 Visualización de documentos de respaldo

Insertar descripción de la imagen aquí
Insertar descripción de la imagen aquí
Insertar descripción de la imagen aquí
Insertar descripción de la imagen aquí
Insertar descripción de la imagen aquí


4. Visualización del código central

4.1 Diseño de clase de entidad de plato

@Table(name = "a_dish")
@TableName("a_dish")
@ApiModel(value = "菜品")
public class Dish extends ZwzBaseEntity {
    
    

    private static final long serialVersionUID = 1L;

    @ApiModelProperty(value = "菜品名称")
    private String title;

    @ApiModelProperty(value = "菜品介绍")
    private String content;

    @ApiModelProperty(value = "菜品分类")
    private String type;

    @ApiModelProperty(value = "单价")
    private BigDecimal unit;

    @ApiModelProperty(value = "剩余库存")
    private BigDecimal stock;

    @ApiModelProperty(value = "供应商")
    private String supplier;

    @ApiModelProperty(value = "图片")
    private String image;

    @Transient
    @TableField(exist=false)
    @ApiModelProperty(value = "是否收藏")
    private Boolean collectionFlag;
}

4.2 Diseño de clase de entidad de dirección de entrega

@Table(name = "a_shipping_address")
@TableName("a_shipping_address")
@ApiModel(value = "收货地址")
public class ShippingAddress extends ZwzBaseEntity {
    
    

    private static final long serialVersionUID = 1L;

    @ApiModelProperty(value = "挂靠人ID")
    private String userId;

    @ApiModelProperty(value = "挂靠人")
    private String userName;

    @ApiModelProperty(value = "收货地址")
    private String address;

    @ApiModelProperty(value = "收货人")
    private String consignee;

    @ApiModelProperty(value = "联系电话")
    private String mobile;
}

4.3 Diseño de la interfaz del menú de consulta

@RequestMapping(value = "/getByPage", method = RequestMethod.GET)
@ApiOperation(value = "查询菜品")
public Result<IPage<Dish>> getByPage(@ModelAttribute Dish dish ,@ModelAttribute PageVo page){
    
    
    QueryWrapper<Dish> qw = new QueryWrapper<>();
    if(!ZwzNullUtils.isNull(dish.getTitle())) {
    
    
        qw.like("title",dish.getTitle());
    }
    if(!ZwzNullUtils.isNull(dish.getContent())) {
    
    
        qw.like("content",dish.getContent());
    }
    if(!ZwzNullUtils.isNull(dish.getSupplier())) {
    
    
        qw.like("supplier",dish.getSupplier());
    }
    User currUser = securityUtil.getCurrUser();
    IPage<Dish> data = iDishService.page(PageUtil.initMpPage(page),qw);
    for (Dish vo : data.getRecords()) {
    
    
        QueryWrapper<DishCollection> collQw = new QueryWrapper<>();
        collQw.eq("user_id",currUser.getId());
        collQw.eq("dish_id",vo.getId());
        vo.setCollectionFlag(iDishCollectionService.count(collQw) > 0L);
    }
    return new ResultUtil<IPage<Dish>>().setData(data);
}

4.4 Diseño de interfaz de pedido de menú

@RequestMapping(value = "/addOneOrder", method = RequestMethod.POST)
@ApiOperation(value = "从购物车下单")
public Result<Object> addOneOrder(@RequestParam String[] ids){
    
    
    List<DishOrderItem> itemList = new ArrayList<>();
    List<ShoppingCart> cartList = new ArrayList<>();
    BigDecimal sumMoney = BigDecimal.ZERO;
    for(String id: ids) {
    
    
        ShoppingCart sc = iShoppingCartService.getById(id);
        if(sc == null) {
    
    
            return ResultUtil.error("购物车已被删除");
        }
        cartList.add(sc);
        Dish dish = iDishService.getById(sc.getDishId());
        if(dish == null) {
    
    
            return ResultUtil.error("菜品已下架");
        }
        DishOrderItem item = new DishOrderItem();
        item.setDishId(dish.getId());
        item.setDishName(dish.getTitle());
        item.setUnit(dish.getUnit());
        item.setImage(dish.getImage());
        item.setNumber(sc.getNumber());
        item.setSumMoney(item.getUnit().multiply(item.getNumber()));
        itemList.add(item);
        sumMoney = sumMoney.add(item.getSumMoney());
    }
    User currUser = securityUtil.getCurrUser();
    DishOrder order = new DishOrder();
    order.setUserId(currUser.getId());
    order.setUserName(currUser.getNickname());
    order.setOrderTime(DateUtil.now());
    order.setSumMoney(sumMoney);
    order.setOrderSize(BigDecimal.valueOf(itemList.size()));
    order.setStatus("已下单");
    iDishOrderService.saveOrUpdate(order);
    for (DishOrderItem item : itemList) {
    
    
        item.setOrderId(order.getId());
        iDishOrderItemService.saveOrUpdate(item);
    }
    for (ShoppingCart vo : cartList) {
    
    
        iShoppingCartService.removeById(vo.getId());
    }
    return ResultUtil.success();
}

4.5 Diseño de interfaz de recolección de platos.

@RequestMapping(value = "/addOne", method = RequestMethod.GET)
@ApiOperation(value = "添加单条收藏")
public Result<Object> addOne(@RequestParam String id){
    
    
    Dish dish = iDishService.getById(id);
    if(dish == null) {
    
    
        return ResultUtil.error("菜品不存在");
    }
    User currUser = securityUtil.getCurrUser();
    QueryWrapper<DishCollection> qw = new QueryWrapper<>();
    qw.eq("user_id",currUser.getId());
    qw.eq("dish_id",dish.getId());
    if(iDishCollectionService.count(qw) > 0L) {
    
    
        return ResultUtil.error("您已收藏");
    }
    DishCollection dc = new DishCollection();
    dc.setDishId(dish.getId());
    dc.setDishName(dish.getTitle());
    dc.setUserId(currUser.getId());
    dc.setUserName(currUser.getNickname());
    dc.setCollectionTime(DateUtil.now());
    iDishCollectionService.saveOrUpdate(dc);
    return ResultUtil.success();
}

5. Descargo de responsabilidad

  • Este proyecto es únicamente para estudio personal, para autorización comercial comuníquese con el blogger, de lo contrario será responsable de las consecuencias.
  • El blogger posee todo el contenido y los derechos de propiedad intelectual independientes del sistema de aplicación creado por este software y tiene el derecho final de interpretación.
  • Si tiene alguna pregunta, deje un mensaje en el problema del almacén. Le responderemos lo antes posible después de verlo. Las opiniones relevantes se considerarán apropiadas, pero no hay promesa ni garantía de que se adoptarán.

Los usuarios que descarguen este código de sistema o utilicen este sistema deben aceptar el siguiente contenido; de lo contrario, ¡no lo descarguen!

  1. Usted utiliza/desarrolla este software de forma voluntaria, comprende los riesgos de utilizar este software y acepta asumir los riesgos de utilizarlo.
  2. Cualquier contenido informativo del sitio web creado con este software y cualquier disputa de derechos de autor, disputa legal y consecuencias resultantes no tienen nada que ver con el blogger, y el blogger no asume ninguna responsabilidad por esto.
  3. Bajo ninguna circunstancia el blogger será responsable de ninguna pérdida que sea difícil de predecir razonablemente (incluidas, entre otras, la pérdida de ganancias comerciales, la interrupción del negocio y la pérdida de información comercial) que resulten del uso o la imposibilidad de usar este software.
  4. Debe comprender los riesgos de utilizar este software. El blogger no se compromete a brindar soporte técnico personalizado ni garantía de uso, ni asume ninguna responsabilidad por problemas imprevistos causados ​​por este software.

Insertar descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/qq_41464123/article/details/132683917
Recomendado
Clasificación