帝可得-运营管理App

运营管理App

Android模拟器

本项目的App客户端部分已经由前端团队进行开发完成,并且以apk的方式提供出来,供我们测试使用,如果要运行apk,需要先安装安卓的模拟器。

可以选择国内的安卓模拟器产品,比如:网易mumu、雷电、夜神等。课程中使用网易mumu模拟器,官网地址:http://mumu.172.com/。百度网盘中提供了mumu安装包,大家安装到非中文路径即可。

在这里插入图片描述

资料中提供了运营管理App端安装包

在这里插入图片描述

需要让模拟器中的App能够连接我们自己本地代码,需要修改下URL地址:本地环境就是搭建的后端dkd-app,运行端口就是9007。需要通过安卓访问windows环境,所以不能写localhost,访问这个环境mumu模拟器有固定的ip10.0.0.2

在这里插入图片描述

Java后端

本项目运营管理App的java后端已开发完成,在资料中已提供源码,导入idea中即可

在这里插入图片描述

本项目连接的也是dkd数据库,如果密码不是root可以进行修改

在这里插入图片描述

app端和后端的联调测试

选择一个运营或运维人员手机号进行登录,验证码默认为12345。

在这里插入图片描述

功能测试

投放工单

帝可得管理端,创建新设备

在这里插入图片描述

在这里插入图片描述

帝可得管理端,创建投放工单

在这里插入图片描述

在这里插入图片描述

运营管理App端登录负责此工单员工,即可查看待办工单,可以选择拒绝、接受

在这里插入图片描述
在这里插入图片描述

如果点击接受,帝可得管理端工单状态改为进行

在这里插入图片描述

在进行工单界面,可以点击查看详情,选择取消、完成

在这里插入图片描述
在这里插入图片描述

如果点击完成工单,帝可得管理端工单状态改为完成

在这里插入图片描述

帝可得管理端设备状态改为运营,表示设备投放成功

在这里插入图片描述

补货工单

帝可得管理端,货道关联商品。

在这里插入图片描述

帝可得管理端,创建补货工单

在这里插入图片描述

在这里插入图片描述

运营管理App端登录负责此工单员工,即可查看待办工单,可以选择拒绝、接受

在这里插入图片描述
在这里插入图片描述

如果点击接受,帝可得管理端工单状态改为进行

在这里插入图片描述

在进行工单界面,可以点击查看详情,选择取消、完成

在这里插入图片描述

在这里插入图片描述

如果点击完成工单,帝可得管理端工单状态改为完成

在这里插入图片描述

数据库货道表的库存已同步更新

在这里插入图片描述

源码介绍

运营管理App的java后端技术栈:SpringBoot+MybatisPlus+阿里云短信

在这里插入图片描述

SpringBoot做为后端得框架,MybatisPlus做为数据访问层的工具简化Mybatis的编写,阿里云短信服务用于发送短信通知。

项目分为三个核心模板:员工管理、工单管理和工单详情管理。

在这里插入图片描述

员工管理

发送短信验证码

接收app端传送的手机号。当用户在app输入手机号点击获取验证码的按钮,它就会向后台发送请求来执行此方法。通过路径参数拿到手机号,调用service实现发送短信的功能。

在这里插入图片描述

在service方法中使用RandomUtil生成5位随机的验证码,由于是开发环境,这里暂时将验证码写死位12345。但是在产品上线之前,需要将代码打开。生成完毕之后需要调用阿里云短信的工具类,实现发送短信的功能。短信发送完之后需要往redis中存储生成的验证码,设置有效时间位5分钟,在5分钟内做登录的话,就可以从redis中获取正确的验证码,与app端输入的验证码进行比对。
在这里插入图片描述

短信工具类的模板:commom/util/SmsTemplate.java

import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.dysmsapi.model.v20170525.SendSmsRequest;
import com.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse;
import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.profile.IClientProfile;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;//短信发送工具类
@Data
@Component
@ConfigurationProperties(prefix = "dkd.sms")
public class SmsTemplate {// 拿到配置文件读取的参数private String key;private String secret;private String signName;private String templateCode;// 调用阿里云平台发送短信public void sendSms(String phoneNumbers, String code) {//设置超时时间System.setProperty("sun.net.client.defaultConnectTimeout", "10000");System.setProperty("sun.net.client.defaultReadTimeout", "10000");try {//初始化acsClient,暂不支持region化IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", key, secret);DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", "Dysmsapi", "dysmsapi.aliyuncs.com");IAcsClient acsClient = new DefaultAcsClient(profile);//组装请求对象-具体描述见控制台-文档部分内容SendSmsRequest request = new SendSmsRequest();request.setPhoneNumbers(phoneNumbers);//手机号request.setSignName(signName);//短信前面request.setTemplateCode(templateCode);//短信模板request.setTemplateParam("{\"code\":\"" + code + "\"}");//验证码SendSmsResponse sendSmsResponse = acsClient.getAcsResponse(request);} catch (Exception e) {e.printStackTrace();}}
}

配置文件中指定短信的配置信息

有key和secret密钥对,sign-name短信签名和template-code短信模板编码,可以自行注册阿里云短信,输入自己的密钥对。

在这里插入图片描述

员工登录:

员工登录会设计一个接收参数,调用service。

在这里插入图片描述
在service中比对验证码、手机号,再返回一个登录的LoginVo结果,设置登录的员工参数,然后制定token令牌。最后判断维修员还是运营人员。

在这里插入图片描述

查询员工基本信息

在这里插入图片描述

上面显示的员工基本信息,对应的后端接口如下。前端会根据当前登录的员工id,查询员工的基本信息。调用的是MybatisPlus通用service功能getById(id)。拿到员工对象之后需要封装返回结果,需要把实体类转换成前端需要的Vo对象。

在这里插入图片描述

工单管理

工单查询

搜索工单对应app端的三个界面:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

全部工单有时间范围,也支持条件搜索,所以该方法的接收参数非常多。支持分页查询、设备编号、用户id、工单编号、工单状态、是否为运维工单以及时间范围。

在这里插入图片描述

在service方法中首先封装了MybatisPlus的分页查询对象,再通过LambdaQueryWrapper来构件动态sql,支持各种条件查询。最终进行分页,再根据工单类型和工单状态文字说明,返回分页结果即可。也就是一个方法支持了各种分页查询。

在这里插入图片描述

接受工单

前端会传递一个工单id,但是需要获取当前登录人的id,以这两个条件调用service完成接受。

在这里插入图片描述

service实现,首先根据工单id判断工单是否存在。判断工单的状态是否为待处理,工单状态已经为进行中、已完成、已取消就不能接受了。登录人是否有权接受工单就是登录人必须与工单的分配人保持一致。以上条件都满足的话就可以修改工单状态为进行中,调用MybatisPlus中通用service的updateById方法实现数据库的更新操作,Mapper层就可以省略不写了。

在这里插入图片描述

取消/拒绝工单

可以拿到前端的工单Id拒绝/取消的理由,再获取当前登录人的id,这三个参数调用service完成取消。

在这里插入图片描述

在这里插入图片描述

完成工单

在这里插入图片描述

工单状态更新成功以后,还需要更新设备的状态。如果是投放工单,就需要把设备状态改为运营状态。如果工单类型为撤机工单,就需要把设备状态改为撤机。如果是补货工单,就需要查询工单的明细,也就是补货工单,将明细中的数据更新到数据库的库存中。

在这里插入图片描述

工单详情管理

根据工单id查询补货列表

拿到工单id调用service。

在这里插入图片描述

通过MybatisPLus实现条件封装,执行条件查询,直接将结果返回,不需要编写mapper层。

在这里插入图片描述

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

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

相关文章

Android显示系统(07)- OpenGL ES - 纹理Texture

Android显示系统(02)- OpenGL ES - 概述 Android显示系统(03)- OpenGL ES - GLSurfaceView的使用 Android显示系统(04)- OpenGL ES - Shader绘制三角形 Android显示系统(05)- OpenGL…

二十万分之一几率:if语句变do-while卡死问题分析

背景 某次灰度发布之后没多久就收到线上ANR告警,经排查定位到是某个页面onCreate方法执行太久导致,而火焰图中的耗时堆栈指向了我们用于监控页面启动速度的一段插桩代码,反编译Apk之后发现本该是if语句的代码竟变成了一个do-while语句&#…

React v19稳定版发布12.5

🤖 作者简介:水煮白菜王 ,一位资深前端劝退师 👻 👀 文章专栏: 前端专栏 ,记录一下平时在博客写作中,总结出的一些开发技巧✍。 感谢支持💕💕💕 目…

Chrome扩展程序开发示例

项目文件夹内文件如下: manifest.json文件内容: {"manifest_version": 3,"name": "我的法宝","description": "我的有魔法的宝贝","version": "1.0","icons": {"…

前端知识1html

VScode一些快捷键 Ctrl/——注释 !——生成html框架元素 *n——生成n个标签 直接书写html的名字回车生成对应的标签 常见标签 span&#xff1a; <span style"color: red;">hello</span> <span>demo</span> span实现&#xff1a; 标题…

计算机键盘简史 | 键盘按键功能和指法

注&#xff1a;本篇为 “计算机键盘简史 | 键盘按键功能和指法” 相关文章合辑。 英文部分机翻未校。 The Evolution of Keyboards: From Typewriters to Tech Marvels 键盘的演变&#xff1a;从打字机到技术奇迹 Introduction 介绍 The keyboard has journeyed from a humb…

【C++】求第二大的数详细解析

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 &#x1f4af;前言&#x1f4af;题目描述&#x1f4af;输入描述&#x1f4af;解题思路分析1. 题目核心要求2. 代码实现与解析3. 核心逻辑逐步解析定义并初始化变量遍历并处理输入数据更新最大值与次大值输…

从零用java实现 小红书 springboot vue uniapp (1)

前言 偶尔会用小红书发一些笔记 闲来无事 想自己实现一个小红书 正好可以学习一下 帖子 留言 im 好友 推送 等功能 下面我们就从零 开发一个小红书 后台依旧用我们的会员系统的脚手架 演示 http://120.26.95.195:8889/ 客户端我们使用uniapp 我们首先对主页进行一个分解 顶部我…

Cesium 按区域生成高度图

Cesium 按区域生成高度图 Cesium 按区域生成高度图 const cmd new CustomDrawCommand({vertexArray,shaderProgram,commandType: Compute,outputTexture: bufferColor,uniformMap,postExecute: () > {const url getImageByTexture(bufferAColor, gl);viewer.scene.primiti…

SpringMVC全局异常处理

一、Java中的异常 定义&#xff1a;异常是程序在运行过程中出现的一些错误&#xff0c;使用面向对象思想把这些错误用类来描述&#xff0c;那么一旦产生一个错误&#xff0c;即创建某一个错误的对象&#xff0c;这个对象就是异常对象。 类型&#xff1a; 声明异常&#xff1…

Linux - 进程等待和进程替换

进程等待 前面我们了解了如果父进程没有回收子进程, 那么当子进程接收后, 就会一直处于僵尸状态, 导致内存泄漏, 那么我们如何让父进程来回收子进程的资源. waitpid 我们可以通过 Linux 提供的系统调用函数 wait 系列函数来等待子进程死亡, 并回收资源. #include <sys/t…

【Java】—— 图书管理系统

基于往期学习的类和对象、继承、多态、抽象类和接口来完成一个控制台版本的 “图书管理系统” 在控制台界面中实现用户与程序交互 任务目标&#xff1a; 1、系统中能够表示多本图书的信息 2、提供两种用户&#xff08;普通用户&#xff0c;管理员&#xff09; 3、普通用户…

springboot398研究生调研管理系统(论文+源码)_kaic

摘 要 互联网发展至今&#xff0c;无论是其理论还是技术都已经成熟&#xff0c;而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播&#xff0c;搭配信息管理工具可以很好地为人们提供服务。针对信息管理混乱&#xff0c;出错率高&#xff0c;信息安全性差&#…

OSCP - Proving Grounds - Zino

主要知识点 SMB知识python脚本提权 具体步骤 执行nmap Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-10-10 01:24 UTC Nmap scan report for 192.168.52.64 Host is up (0.00077s latency). Not shown: 65529 filtered tcp ports (no-response) PORT STATE SER…

JDK8新特性之Stream流03

收集Stream流中的结果 IntStream intStream = Stream.of(1, 2, 3, 4, 5).mapToInt(Integer::intValue); intStream.filter(n -> n > 3).forEach(System.out::println); intStream.filter(n -> n > 3).count; intStream.filter(n -> n > 3).reduce(0, Integer…

自制shell命令行解释器,深入理解Linux系统命令行实现原理

个人主页&#xff1a;敲上瘾-CSDN博客 个人专栏&#xff1a;Linux学习、游戏、数据结构、c语言基础、c学习、算法 目录 ​编辑 1.打印命令提示符 ​编辑 2.获取用户输入指令 3.重定向分析 4.命令行参数表与环境变量表 5.命令解析 6.命令执行 6.1.创建子进程 6.2.文件…

Mac M1 安装数据库

1. Docker下载 由于Sqlserver和达梦等数据库&#xff0c;不支持M系列的芯片&#xff0c;所以我们通过docker安装 下载并安装docker: https://www.docker.com/get-started/ 安装完成后&#xff0c;打开docker 2. SQL Server 安装 2.1 安装 打开终端&#xff0c;执行命令 doc…

渗透测试实验环境搭建

下载虚拟机镜像 5个虚拟机镜像&#xff0c;其中Linux攻击机我选择用最新的kali Linux镜像&#xff0c;其余的均使用本书配套的镜像。 网络环境配置 VMware虚拟网络编辑器配置&#xff1a; 将VMnet1和VMnet8分别设置IP为192.168.10.0/24和10.10.10.0/24。 虚拟机镜像配置 攻击机…

C# 中 Interface(接口)和 virtual(虚方法)

文章目录 前言一、Interface&#xff08;接口&#xff09;1. 什么是接口2. 接口的定义3. 实现接口4. 接口的作用 二、virtual&#xff08;虚方法&#xff09;1. 什么是虚方法2. 虚方法的定义3. 重写虚方法4. 虚方法的作用 三、Interface 和 virtual 的结合使用1. 接口中的虚方法…

阿里云ECS服务器域名解析

阿里云ECS服务器域名解析&#xff0c;以前添加两条A记录类型&#xff0c;主机记录分别为www和&#xff0c;这2条记录都解析到服务器IP地址。 1.进入阿里云域名控制台&#xff0c;找到域名 ->“解析设置”->“添加记录” 2.添加一条记录类型为A,主机记录为www&#xff0c…