云岚到家 第一天

2024-08-24 06: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.chinasem.cn/article/1101704

相关文章

Java基础回顾系列-第一天-基本语法

基本语法 Java基础回顾系列-第一天-基本语法基础常识人机交互方式常用的DOS命令什么是计算机语言(编程语言) Java语言简介Java程序运行机制Java虚拟机(Java Virtual Machine)垃圾收集机制(Garbage Collection) Java语言的特点面向对象健壮性跨平台性 编写第一个Java程序什么是JDK, JRE下载及安装 JDK配置环境变量 pathHe

《C++标准库》读书笔记/第一天(C++新特性(1))

C++11新特性(1) 以auto完成类型自动推导 auto i=42; //以auto声明的变量,其类型会根据其初值被自动推倒出来,因此一定需要一个初始化操作; static auto a=0.19;//可以用额外限定符修饰 vector<string> v;  auto pos=v.begin();//如果类型很长或类型表达式复杂 auto很有用; auto l=[] (int

Android--第一天

创建AVD: 启动AVD: 点击按钮:Launch如下: 更换来电铃声: Window-->Show View-->Other... 点击进入:展开Android文件夹-->选择File Explorer:操作如下图 要想在音乐播放器上有该音乐,必须先“卸载SD卡,在安装SD卡”这样就可以了,声音--

Oracle第一天之sql

SQL 支持下列类别的命令:  数据定义语言(DDL)  数据操纵语言(DML)  事务控制语言(TCL)  数据控制语言(DCL) 数据类型 字符数据类型    :long   char  varchar2 CHAR: 当需要固定长度的字符串时,使用 CHAR 数据类型。          CHAR 数据类型存储字母

Oracle第一天之Oracle介绍

Oracle数据库由操作系统文件组成,这些文件提供数据库信息提供实际物理存储区 物理组件  : 数据文件+控制文件+日志文件 逻辑组件  :         数据库 | 表空间     至少一个:  名为 SYSTEM的系统表空间,由数据文件组成,一一对应;表空间的大小=所有构成该表空间的

mysql 获取本月/上月/下月第一天/最后一天

select curdate(); -- 获取当前日期select last_day(curdate()); -- 获取当月最后一天。select DATE_ADD(curdate(),interval -day(curdate())+1 day); -- 获取本月第一天select date_add

寒假集训第一天——结构体

期待已久的寒假集训终于开始了,第一天讲的内容比较简单——结构体,之前就学了点。。。 表示普通的结构体会用,涉及到指针都不大会,今天算是学了点指针的用法。。。 作业描述如下: 结构体 今天作业  1.定义一个acmer结构体,包括以下信息:姓名,学号,手机号,做题数,出生日期,其中出生日期date也是一个结构体,包括年、月、日  2.建立结构体数组,实现对多个同学

java 获取周、月、年的第一天以及最后一天的详细代码

public class MyCalendar { public static Date getDate(Calendar c) {      return new Date(c.getTimeInMillis());   }   /** * 得到本周第一天 * @return */ public static Calendar getFir

迎接开学第一天!请查收这份2024开学必备好物清单!

新的学期正悄然来临,开学第一天校园里即将迎来一张张充满朝气的面孔。无论是重返课堂的老生还是满怀期待的新生,开学季总是充满了新的希望与挑战。为了帮助学生们更好地适应即将到来的学习生活,我们精心准备了这份2024开学必备好物清单。从提高学习效率的智能设备到保护视力的健康科技产品,再到提升日常便利性的实用小物,请查收这份2024开学必备好物清单!接下来,让我们一起探索那些能够让学习变得更加轻松愉快的好物

idea插件开发的第一天-写一个小Demo

介绍 Demo说明 本文基于maven项目开发,idea版本为2022.3以上,jdk为1.8本文在Tools插件之上进行开发 Tools插件说明 Tools插件是一个Idea插件,此插件提供统一Spi规范,极大的降低了idea插件的开发难度,并提供开发者模块,可以极大的为开发者开发此插件提供便利Tools插件安装需要idea2022.3以上版本插件下载连接: https://downlo