云岚到家 第一天

news2024/11/14 1:26:28

你的项目是做什么业务的?

家政服务,我的项目是一个家政o2o平台。o2o(Online To Offline)是将线下商务的机会与互联网的技术结合

什么商业模式:

项目涉及哪些角色?

本项目涉及如下角色:

家政需求方:通过用户端小程序完成在线预约下单、支付、评价、投诉、退款等操作。

家政服务人员:通过服务端APP完成在线接单、结算等操作。

家政服务公司:通过机构端完成在线接单、派单、投诉处理、结算等操作。

平台方:通过管理端完成服务人员管理、机构管理、订单管理、财务管理等操作,一笔完成的订单,结算时按照分成比例平台进行抽成。

说下你的项目的业务流程?

平台包括四个端:用户端(小程序)、服务端(app)、机构端(PC)、运营管理端(PC)。

  1. 用户通过平台在线下单、支付

  2. 家政服务人员和家政公司通过平台抢单

  3. 抢单成功服务人员去现场服务,平台跟进整个服务过程(服务前、服务中、服务后)。

  4. 服务完成后用户进行评价以及售后、退款等。

  5. 运营人员通过管理端完成服务人员管理、机构管理、订单管理等业务。

 

你的项目包括哪些模块?

服务管理:对家政服务项目进行管理,最后在指定区域上架服务后用户可在当前区域购买。

下单支付:用户通过小程序完成下单支付,进入小程序首页查询服务,用户选择服务,下单并支付

抢单:服务人员和机构进行抢单。首先服务人员和机构设置接单范围、服务技能、开启抢单开关,然后进入抢单界面进行抢单。

派单调度:平台根据撮合匹配算法通过任务调度将订单和服务人员进行撮合匹配,促进成交。

订单管理:对订单的生命周期进行管理,包括创建订单、取消订单、删除订单、历史订单等。

服务人员管理:对服务人员的信息、认证等进行管理。

企业管理:对机构的信息、认证进行管理。

客户管理:对c端用户的信息、用户的状态等信息进行管理。

营销管理:对优惠券活动进行管理。

你的项目用的什么架构?

项目是基于Spring Cloud Alibaba框架构建的微服务项目,采用前后端分离模式进行开发。

平台共包括四个端:运营端(PC)、服务端(APP)、机构端(PC)、用户端(小程序)。

网关我们用的SpringCloudGateWay网关,最前边是Nginx进行负载均衡。

服务层我们划分了运营基础服务、客户管理服务、公共服务、订单管理服务、抢单服务、派单服务、支付服务等微服务。

服务层用到了Nacos、XXL-JOB、RabbitMQ、Elasticsearch、Canal、Sentinel等中间件。

数据层用的是MySQL数据库,使用ShardingShphere进行分库分表,使用TiDB分布式数据库存储历史订单数据,还用到了消息队列RabbitMQ、Redis缓存及Elasticsearch等中间件。

画一下架构图

说说你的项目吧?

从以下几个方面进行项目介绍:

1、项目的背景,包括:是自研还是外包、什么业务、服务的客户群是谁、谁去运营等问题。

2、项目的核心业务流程或业务模块

3、项目的架构是什么

4、个人的工作职责,详细说明自己负责的模块,包括模块的设计,所用到的技术方案,以及所遇到的问题和解决方案。

我最近参与的项目是我们公司自研的家政服务o2o项目(因为后续还可能经常需要维护,需求变更等等,所以我们公司选择了自研),项目包括四个端:用户端(小程序)、服务端(app)、机构端(PC)、运营管理端(PC),运维人员在某个区域进行上架某个服务,然后用户才可以在该区域对某个服务进行下单,运维人员还可以对人员进行管理。用户通过平台选择所在的区域服务,然后在线下单、支付,家政服务人员或者机构通过平台抢单,平台也会自动派单给服务人员,服务人员接到订单根据预约时间去现场服务,服务完成后用户进行在线评价,以及售后、退款等业务。 项目是基于Spring Cloud Alibaba框架构建的微服务项目,包括了运营基础服务、客户管理服务、订单管理服务、抢单服务、派单服务、优惠券服务、统计服务、评价服务等服务,系统还使用Redis、MQ、XXL-JOB、Elasticsearch、Canal、MongoDB等中间件。

我在这个项目中进行了。。。的开发

 

设计一个接口需要设计哪些内容?

共7个方面:

  1. HTTP请求方法

  2. 接口路径

  3. 请求参数类型

  4. 请求参数内容

  5. 响应结果类型

  6. 响应结果状态码

  7. 响应结果内容

如何去定义一个接口?

我们使用的是SpringBoot定义Controller方法,接口设计包括7个方面,定义controller方法根据接口设计的内容进行定义:

Mybatis-Plus有几种主键生成策略?

  • AUTO:基于数据库的自增主键

  • NONE: 不设置id生成策略

  • INPUT:用户手工输入id

  • ASSIGN_ID:雪花算法生成id(可兼容数值型与字符串型)

  • ASSIGN_UUID:以UUID生成算法作为id生成策略

@Resource 和 @Autowired有什么区别? 

 

如何开发controller方法?

  • 首先根据接口设计或接口文档定义controller方法。
  • 在controller类中注入service,在controller方法中调用service方法进行业务处理。
  • 得到service方法的返回值封装与客户端要的数据格式进行返回。
  • 遇到问题需要通过断点调试的方式在controller、service中打断点进行调试。

项目的分页查询是怎么实现的?

mybatis plus 自带的 前后端联调都调些什么,怎么进行前后端联调?

 

如何开发一个接口?

首先根据产品原型设计接口,再根据接口设计去定义接口,请求参数有哪些,返回数据有哪些,并生成接口文档,前后端依据接口文档进行开发。

具体编码的过程通常先编写mapper接口,再实现service方法,最后编写controller方法。

每层的编码都会进行单元测试。

和前端约定后待双方都完成本模块的编码后进行前后端联调

 

如何开发一个接口的service方法?

service方法负责业务处理,是一个接口的核心,开发一个service方法需要注意以下几点:

接口职责要单一,一个接口不能过多的承担责任。

注意事务控制,对于更改数据库的操作要加@Transactional注解。

接口参数定义要简单明了,能用简单类型不要使用自定义类型。

对于增、删、改接口一定要做入参校验,其它接口根据情况而定。

接口的参数与返回值避免与其它框架耦合,比如:分页查询我们使用的是com.github.pagehelper分页插件,使用插件查询得到Page对象,Page类型是插件提供,避免service方法返回Page类型而是用我们自定义的类型PageResult对Page对象的数据进行封装返回,这样就避免Controller与pagehelper分页插件的耦合。

接口的异常处理怎么实现的?

mapper异常及service异常都抛给controller,controller方法的异常由异常处理器统一对异常进行处理。

我们抛出的异常是自定义异常类型,自定义的异常类型都继承了CommonException类型,在异常处理器中对此类型的异常进行处理。

通过@RestControllerAdvice注解加@ExceptionHandler注解实现,具体的原理是当controller抛出异常由DispatcherServlet统一拦截处理,再根据异常类型找到@ExceptionHandler标识方法去执行该方法进行异常处理。

异常处理器的源码在framework中,如下图:

注意:企业中代码不熟悉是因为工具类和文件结构让你不熟悉,一定要看别人写的模仿着写

比如你写个分页,先不要用自己的技术写,你先看看别人的代码是怎么写的

一个新项目中有一个自定义的分页的工具类,首先你找到别人的代码,复制过来比着写

函数式接口

函数式接口是只有一个抽象方法的接口

 使用 一般是 () ->...         s->s.get...

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2068547.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

技术前沿:WebRTC与H.265编码的兼容性挑战与应对策略

WebRTC(Web Real-Time Communication)是一种支持网页浏览器进行实时语音通话、视频聊天以及P2P文件共享的技术。然而,标准的WebRTC API在大多数浏览器中默认并不支持H.265(也称为HEVC,高效视频编码)编码。这…

Android 中native C++创建thread的几种方式

Android native 开发,工作中最常用的两种创建thread的方法,总结如下: 使用 pthread 库 (1)概念:它是一套在类 Unix 操作系统上进行多线程编程的接口, 而android 基于Linux , Linux就是一个类 U…

用序列模型(GPT Bert Transformer等)进行图像处理的调研记录

Visual Autoregressive Modeling: Scalable Image Generation via Next-Scale Prediction 北大和字节团队的一篇VLM,在生成任务上,用GPT范式,声称在FID上超过了DIT,SD3和SORA。开源。首先是multi-scale的VQVAE,然后是…

Datawhale X 李宏毅苹果书 AI夏令营 学习笔记(一)

局部极小值与鞍点 在优化过程中,模型可能会遇到局部极小值(local minima)或鞍点(saddle point),这些位置梯度为零,使得模型停止进步或训练缓慢。 局部极小值是损失函数的局部最低点,而鞍点则是梯度为零但不是局部极小/极大值的点…

Leetcode JAVA刷刷站(80)删除有序数组中的重复项 ||

一、题目概述 二、思路方向 为了解决这个问题,我们可以使用双指针技术。一个指针(我们称之为i)用于遍历数组,另一个指针(我们称之为j)用于记录不重复或只重复一次的元素应该放置的位置。同时,我…

创新实践:流媒体服务器如何推动WebRTC支持H.265及JS硬软解码(MSE硬解、WASM软解)

为了实现这一全面的解决方案,我们投入了近半年的时间进行调研与研发。我们的主要目标是:让流媒体服务器能够直接传输H.265编码的视频,而无需将其转码为H.264,从而使Chrome浏览器能够无缝解码并播放H.265视频。 值得注意的是&#…

TinaSDKV2.0 自定义系统开发

TinaSDKV2.0 自定义系统开发 什么是自定义系统? TinaSDK Kconfig界面配置 Tina Linux采用 Kconfig 机制对 SDK 和内核进行配置。 Kconfig 是一种固定格式的配置文件。Linux 编译环境中的 menuconfig 程序可以识别这种格式的配置文件,并提取出有效信息…

Flink常见数据源(source)使用教程(DataStream API)

前言 一个 Flink 程序,其实就是对 DataStream 的各种转换。具体来说,代码基本上都由以下几部分构成,如下图所示: 获取执行环境(execution environment)读取数据源(source)定义基于数据的转换操作(transformations)定义计算结果的输出位置(sink)触发程序执行(exec…

探索上门回收旧衣物系统源码开发的创新与挑战

在当今社会,随着环保意识的日益增强和可持续发展的全球趋势,旧衣物回收与再利用成为了一个备受关注的议题。为了响应这一需求,开发一套高效、便捷的上门回收旧衣物系统,不仅有助于减少环境污染,还能促进资源的循环利用…

[数据集][目标检测]电力场景输电线导线散股检测数据集VOC+YOLO格式3890张1类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):3890 标注数量(xml文件个数):3890 标注数量(txt文件个数):3890 标注…

Koa商城项目-商城模块(前端)

项目地址 koa_system: 🔥🔥🔥Koa2 React商城项目前端-React Antd前端-Vue2 Element-plus后端-Koa2 Sequelizehttps://gitee.com/ah-ah-bao/koa_system 欢迎大家点击查看,方便的话点一个star~ 项目结构 Vue2Admin和Vue3Admin版本的后台还…

Deep-Live-Cam启动

实验环境 实验时间:2024年8月windows 10 专业版能跟老外对喷的网络环境基于 Anaconda 创建 Python 3.10.x 环境 其它依赖 下载生成工具:https://visualstudio.microsoft.com/zh-hans/visual-cpp-build-tools/安装单个组件:共三个。 安装ffm…

Python酷库之旅-第三方库Pandas(093)

目录 一、用法精讲 396、pandas.Series.to_frame方法 396-1、语法 396-2、参数 396-3、功能 396-4、返回值 396-5、说明 396-6、用法 396-6-1、数据准备 396-6-2、代码示例 396-6-3、结果输出 397、pandas.Series.to_xarray方法 397-1、语法 397-2、参数 397-3、…

算法的学习笔记—二叉树中和为某一值的路径

😀前言 在二叉树中寻找和为某一特定值的路径问题是一个经典的面试题,考察了对二叉树的遍历能力以及递归和回溯算法的理解和应用。本文将详细解析这一问题,并提供一个Java实现。 🏠个人主页:尘觉主页 文章目录 &#x1…

Java工具类之字符串类(超详细)

1、 字符串类 字符串是我们在编程中最常使用的一种数据类型,Java中用类来描述字符串,其中最常用的字符串处理类是String,此外还有StringBuffer和StringBuilder。在本节,我们会了解每种字符串处理类的特点,以便能在应用…

C语言基础(十二)

指针的用法&#xff1a; 测试代码1&#xff1a; #include "date.h" #include <stdio.h> // 函数声明&#xff0c;用于交换两个整数的值&#xff0c;通过指针传递 void swap(int *a, int *b); int main() { int time getTime();int nums[3] {3, 1, 4};…

CentOS 7.9 安装部署 EchoMimic

EchoMimic学习地址&#xff1a;https://github.com/BadToBest/EchoMimic CentOS 7.9 安装部署 EchoMimic 1、创建虚拟机2、基础环境准备2.1 安装驱动2.2 下载 Anaconda3-2024.06-1-Linux-x86_64.sh2.3 下载完成后执行2.4 退出客户端重新连一下2.5 查看python版本及cuda版本 3 E…

冷硬缓存——利用缓存滥用绕过 RPC 接口安全

介绍 MS-RPC 是 Windows 操作系统的基石之一。早在 20 世纪 90 年代发布,它就已扎根于系统的大部分部分。服务管理器?RPC。Lsass?RPC。COM?RPC。甚至一些针对域控制器的域操作也使用 RPC。鉴于 MS-RPC 已经变得如此普遍,您可以预料到它已经受到严格的审查、记录和研究。 …

TinyVision 使用 SyterKit 启动 Linux 6.7 主线内核

TinyVision 使用 SyterKit 启动 Linux 6.7 主线内核 SyterKit SyterKit 是一个纯裸机框架&#xff0c;用于 TinyVision 或者其他 v851se/v851s/v851s3/v853 等芯片的开发板&#xff0c;SyterKit 使用 CMake 作为构建系统构建&#xff0c;支持多种应用与多种外设驱动。同时 Sy…

dbeaver数据库工具配置连接openGauss5.0

在DBeaver数据库工具中配置连接openGauss 5.0&#xff0c;可以通过以下步骤进行&#xff1a; 一、准备工作 下载openGauss JDBC驱动&#xff1a; 访问openGauss的官方网站&#xff08;如https://opengauss.org/zh/&#xff09;&#xff0c;下载适用于您操作系统的JDBC驱动。对…