YangeIT大约 16 分钟中州养老AIIOT版本MysqlApifoxServletHTTPGETPOST

1. 软件开发和项目介绍 🍐

1.1 软件开发整体介绍 🍐

软件开发整体介绍

作为一名软件开发工程师,我们需要了解在软件开发过程中的开发流程, 以及软件开发过程中涉及到的岗位角色,角色的分工、职责, 并了解软件开发中涉及到的三种软件环境。那么这一小节,我们将从 三个方面,来整体上介绍一下软件开发。

软件开发流程 🍐

image
image
岗位/角色职责/分工
项目经理对整个项目负责,任务分配、把控进度
产品经理进行需求调研,输出需求调研文档、产品原型等
UI 设计师根据产品原型输出界面效果图
架构师项目整体架构设计、技术选型等
开发工程师功能代码实现
测试工程师编写测试用例,输出测试报告
运维工程师软件环境搭建、项目上线

角色分工是在一个项目组中比较标准的角色分工, 但是在实际的项目中, 有一些项目组由于人员配置紧张, 可能并没有专门的架构师或测试人员, 这个时候可能需要有项目经理或者程序员兼任

总结

课堂作业

  1. 请回答软件的开发流程是什么?🎤
  2. 请回答软件开发过程中,有哪些角色,以及实际工作中这些角色都需要招聘吗?
  3. 测试环境和生产环境有什么区别?

1.2 整体业务流程 🍐

整体业务流程

中国老龄化程度加深,我国老龄事业和养老服务体系的发展得到了国家的高度重视,在国家政策的支持下,我国智慧养老产业主体持续增多,产业链不断整合,发展前景较好。我国正在形成一个多元化“互联网+养老”的智慧老年护理服务系统,智慧养老是我国的必然趋势

中州养老系统为养老院量身定制开发专业的养老管理软件产品;涵盖来访管理、入退管理、在住管理、服务管理、财务管理等功能模块,涉及从来访参观到退住办理的完整流程。

1708670665257
1708670665257

项目原型地址:https://rp-java.itheima.net/zhyl/open in new window

项目后端运行地址:https://zhyl-admin.itheima.net/#/loginopen in new window

中州养老项目分为两端,一个是管理后台,另外一个是家属端

  • 管理后台:养老院员工使用,入住、退住,给老人服务记录等等
  • 家属端:养老院的老人家属使用,查看老人信息,缴费,下订单等等

数据访问流程: 👇

总结

课堂作业

  1. 微信小程序有什么优势!!🎤
  2. 如果要你设计一个养老院管理系统,你能想到什么功能?
  3. 点击阅读在线原型文档open in new window,了解中州养老的业务

1.3 实训说明和任务 🍐

实训说明和任务

业务流程图
业务流程图
  1. 整个中州养老的前后端代码要全部实现,需要三个月以上的时间
  2. 由于本次实训时间所限,没有办法将整个中州养老的所有代码实现,所以咱们会从项目中挑选部分功能进行实现,把我们本次实训所学习的技术应用起来。
  3. 本次实训选取中州养老项目家属端 的部分功能进行实现
  4. 其中前端微信小程序部分已经实现好 了,我们只需要把提供好的代码运行起来,配合后端完成测试及效果展示即可。
image
image
image
image

将来要实现的家属端的功能包含如下:👇

  1. 登录模块:✏️ 🎯

    • 登录
    • 退出
  2. 家人模块:✏️ 🎯

    • 家人列表分页查询
    • 绑定家人
    • 解绑家人
  3. 健康模块:✏️ 🎯

    • 查看健康数据
    • 按天查看健康数据
    • 按周查看健康数据
  4. 预约模块: ✏️ 🎯

    • 预约列表分页查询
    • 新增预约(新增预约和新增探访2个不同的接口)
    • 取消预约
  5. 房型模块: 🎯

    • 查询所有房型
  6. 护理服务模块: 🎯

    • 护理服务列表分页查询
    • 护理服务详情查询
  7. AI模块: 🎯

    • AI客服机器人(含智能体)

实训任务

1 边讲边练

参照接口文档,完成对应的功能

2 自己完成

参照接口文档,完成对应的功能

2. 项目构建 ✏️ ❤️

2.1 项目环境搭建 ✏️ ❤️

项目环境搭建

前端的代码将来在公司中会由前端工程师专门开发。咱们本次实训最终要完成的中州养老项目中也有前端代码,但是这些代码我们不写,因为咱们本次是java的实训,并不是前端的实训,所以这些前端的代码已经提供好了,目的是为了有更好的展示效果。咱们提供好的是一个微信小程序的代码,其本质就是用html、css、javascript开发的。在这一块我们主要讲解一下如何运行提供好的代码即可。如果将来大家想学习如何实现小程序的开发,来黑马,一定安排的明明白白

微信小程序大家都用过,只需要在微信中搜索对应的小程序名字,使用即可,无需安装。咱们本次实训中的项目并没有发布, 所以需要大家每个人拷贝一份提供好的小程序代码,并且安装小程序的开发软件,在软件中运行提供好的代码即可。

image
image

操作:👇 前提:在资料文件夹中找到”微信开发者工具安装包”安装到本地,也可以直接到官网下载​ 在当天资料文件夹中找到”mp-weixin.zip”的压缩包,解压到一个没有中文和空格的目录​ 打开微信开发者工具,需要使用微信扫描登录

image
image

登录成功后,点击“+”号,找到刚才解压的小程序代码的目录,然后打开

image
image
image
image

打开之后,需要信任该项目,加载完毕之后的效果如下:

image
image

在小程序登录的时候,需要获取微信用户的手机号,目前在开发测试阶段,如果想要获取手机号需要把开发者加入小程序的开发者团队中,一个小程序的开发者团队最多50人。所以不能让每位同学都加入开发者团队中,不过,在微信小程序中可以由个人开通测试号来进行调试,这样就可以获取更多的微信信息了,就包含了手机号。 现在大家需要每人注册一个微信小程序的测试号:​小程序AppId申请​open in new window

设置不校验合法域名

image-20221203213212370

注: 开发阶段,小程序发出请求到后端的Tomcat服务器,若不勾选,请求发送失败必须勾选 ,且调试库选择老一点的版本

总结

课堂作业

  1. 参考上述步骤完成项目环境搭建,不会多看几遍🎤

2.2 查看所有房型 🎯

查看所有房型

  1. 阅读接口文档和效果图

接口文档:

image
image

点击查看在线接口文档 👈

最终效果图:

image
image

代码操作

开发流程:

  1. 编写Controller代码
  2. 编写Mapper接口和Mapper映射配置文件
  3. 微信小程序测试

1.在Controller中添加方法

image
image

注意: 可以通过@Autowired注解,从IOC容器中获取指定类型的对象并赋值给成员变量

2.小程序测试:👇

image
image

2.3 介绍和准备工作

小程序的概要和入门案例

1️⃣ 介绍和准备工作

小程序 是一种新的开放能力,开发者可以快速地开发一个小程序。可以在微信内被便捷地获取和传播,同时具有出色的使用体验。

image-20221203204712437

官方网址: https://mp.weixin.qq.com/cgi-bin/wx?token=&lang=zh_CNopen in new window

image-20221203205305487

小程序主要运行微信内部,可通过上述网站来整体了解微信小程序的开发。前端负责

首先, 在进行小程序开发时,需要先去注册一个小程序,在注册的时候,它实际上又分成了不同的注册的主体。我们可以以个人的身份来注册一个小程序,当然,也可以以企业政府、媒体或者其他组织的方式来注册小程序。那么,不同的主体注册小程序,最终开放的权限也是不一样的。比如以个人身份来注册小程序,是无法开通支付权限个人无法开通支付的。若要提供支付功能,必须是企业、政府或者其它组织等 。所以,不同的主体注册小程序后,可开发的功能是不一样的。

image-20221203210640473

总结

  1. 小程序 是一种新的开放能力,开发者可以快速地开发一个小程序。可以在微信内被便捷地获取和传播,同时具有出色的使用体验。
  2. 小程序有多种,如微信小程序,抖音小程序,支付宝小程序等都是依附在App内的,今天主要讲解微信小程序
  3. 注意: 本次的可以申请测试号进行开发,正式上线需要申请正式号

测试号地址:https://developers.weixin.qq.com/miniprogram/dev/devtools/sandbox.htmlopen in new windowimage

课堂作业

  1. 小程序的 AppID是什么?怎么获得?有什么用?🎤
image
image

2.4 微信登录流程 🍐 ❤️

微信登录流程

在任意需要登录才能显示信息的页面点击时,都会判断当前用户是否登录,如未登录,则进入登录页面​,点击微信账号登录,弹出弹窗,需要获取用户手机号进行登录

image
image

结合下面的授权码,去官网查看微信登录流程图微信登录流程 官网介绍open in new window 重要!! 阅读时序图 👈 👈 image

微信登录业务逻辑规则:👇 image

总结

课堂作业

  1. 授权码是什么,有什么作用?
  2. OpenID是什么?有什么特点和作用? 授权码和OpenID的区别是什么?🎤
  3. 请参考官网的微信登录流程,自行绘制一下流程图。

2.5 微信登录代码集成

微信登录集成

1. 阅读接口文档和效果图

接口文档:

image
image

点击查看在线接口文档 👈

2. 根据接口文档描述,在FamilyMemberController中定义login方法,接收前端请求。同时要使用UserLoginRequestDto来接收前端请求参数。

/**
 * 微信端的用户相关接口
 */
@RestController
@RequestMapping("/customer/user")
@Api(tags = "老人家属的接口")
public class FamilyMemberController
{
    @Autowired
    private FamilyMemberService familyMemberService;

    @PostMapping("/login")
    @ApiOperation("小程序登录")
    public AjaxResult login(@RequestBody UserLoginRequestDto dto){
        LoginVo loginVo = familyMemberService.login(dto);
        return AjaxResult.success(loginVo);
    }
}

3. 打开WechatService设置好appid和appsecret,这部分可以申请测试号image

具体步骤上面的笔记有,自己找找

4. 考虑代码较多,将这部分登录的代码放到service中,方便后续的调用。注意,不要直接复制哦,参考过程写,

写代码的时候,一定要参考流程图来写哦,点击查看流图,截图贴图到右上角,边看边写

/**
 * 老人家属Service业务层处理

 */
@Service
public class FamilyMemberService {

    @Autowired
    private FamilyMemberMapper familyMemberMapper;
    @Autowired
    private WechatService wechatService;//微信服务
    //随机昵称
    static List<String> DEFAULT_NICK_NAME = ListUtil.of(
            "生活更美好",
            "大桔大利",
            "日富一日",
            "好柿开花",
            "柿柿如意",
            "一椰暴富",
            "大柚所为",
            "杨梅吐气",
            "天生荔枝");






















image
image

图中的inserOrUpdateFamilyMember方法,是新增或修改用户,代码在下面哦!!👇

    /**
     * 新增或修改用户
     * @param familyMember
     * @param phone
     */
    private void inserOrUpdateFamilyMember(FamilyMember familyMember, String phone) {

        //1. 判断新的手机跟数据库中保存的手机号是否一致
        if(ObjectUtil.notEqual(familyMember.getPhone(),phone)){
            familyMember.setPhone(phone);
        }
        //2. id是否存在,如存在,就修改
        if(ObjectUtil.isNotEmpty(familyMember.getId())){
            //todo 这里代码删了,需要你补充哦,ε=(´ο`*)))唉 也是为了防止大家直接copy
            
        }
        //3. 不存在,就新增 (拼装用户的昵称:随机字符串+手机号后4位)
        int index = (int)(Math.random() * DEFAULT_NICK_NAME.size());
        String nickName = DEFAULT_NICK_NAME.get(index)+ phone.substring(phone.length()-4);
        familyMember.setName(nickName);
        familyMemberMapper.insert(familyMember);
    }
}


测试结果:image

总结

课堂作业

  1. 参考流程图,完成代码的编写,注意,不要直接复制哦,参考过程写,🎤
  2. 代码中用到了jwt令牌,可以自己百度一下,了解一下,后续我们在讲解🎤