帝可得-运营管理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.rhkb.cn/news/487271.html

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

相关文章

案例-商品列表(组件封装)

标签组件封装 1.双击显示,自动聚焦 2.失去焦点,隐藏输入框 标签一列,不同行的标签内容不同,但是除此之外其他基本一致,所以选择用 标签组件 将这一部分封装为一个组件,需要时组件标签展示。 首先标签处一进…

Linux socket编程

目录 基础概念端口和端口号Socket(套接字)UDP和TCP的概念 Socket编程实战socket的类型struct sockaddrstruct sockaddr_in网络字节序socket APITCP网络编程流程分析UDP Demo样例 other概念补充setsockopt函数心跳机制面向字节流与面向报文的理解 参考 基…

Linux update-alternatives 命令详解

1、查看所有候选项 sudo update-alternatives --list (java筛选​​​​​​​sudo update-alternatives --list java) 2、​​​​​​​更换候选项 sudo update-alternatives --config java 3、自动选择优先级最高的作为默认项 sudo update-alterna…

unity3d—demo(2d人物左右移动发射子弹)

目录 人物代码示例: 子弹代码示例: 总结上面代码: 注意点: 人物代码示例: using System.Collections; using System.Collections.Generic; using UnityEngine;public class PlayerTiao : MonoBehaviour {public f…

JSP技术发展现状

多年前,Java入门时学习的JSP可谓时风光无限,J2EE如日中天,短短数年,技术迭代更新光速般发展,有些技术慢慢就退出历史舞台。 JSP(Java Server Pages) 技术在早期 Java Web 开发中曾是构建动态网…

科技绽放-EtherCAT转Profinet网关智能连接项目

一、项目名称 备选名称及含义:开疆智能EtherCAT转Profinet网关智能连接项目:直接体现了从Profinet到EtherCAT的连接核心内容,智能连接突出了该项目的技术特点。工业互联方案强调了该项目在工业领域实现不同协议设备互联的目标,方案…

《计算机网络》(408大题)

2009 路由转发和静态路由的计算 子网划分、路由聚合的计算 注:CIDR中的子网号可以全为0或1,但是其主机号不允许。 注: 这里其实是把到互联网的路由当做了一个默认路由(当一个目的网络地址与路由表中其他都不匹配时,…

matlab读取NetCDF文件

matlab对NetCDF文件进行信息获取和读取数据 文章目录 前言一、什么是NetCDF文件二、读取NetCDF文件数据 1.引入库 2.读入数据总结 前言 在气象学中,许多气象数据存储在NetCDF文件中,后缀为.nc,通常可以用NCL、python和MATLAB等对该…

MySQL用户管理、权限管理练习

1.使用root用户登录MySQL客户端,创建一个名为userl的用户,初始密码为123456; 创建一个名为user2的用户,无初始密码。然后,分别使用uesr1、user2登录MySQL 客户端。 2.使用root用户登录,将user2用户的密码修改为abcabc。…

SpringAOP手动模拟实现反射注解Jdk动态代理

代理 package com.xtq.aop.proxy;import com.xtq.annotations.After; import com.xtq.annotations.Before; import com.xtq.annotations.Pointcut;import java.lang.annotation.Annotation; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Invocation…

算法-字符串-3.无重复字符的最长子串

一、思路&#xff1a; 无重复针对唯一的元素首选哈希表方法 在字符串中找出最长字串——动态数组 二、使用的一些常见方法 1.HashMap a.声明 HashMap<Character,Integer> mapnew HashMap(); b.添加元素 map.put(s.charAt(i),i); c.查询是否有对应的元素存在并获取 m…

Ubuntu中安装配置交叉编译工具并进行测试

01-下载获取交叉编译工具的源码 按照博文 https://blog.csdn.net/wenhao_ir/article/details/144325141的方法&#xff0c;把imx6ull的BSP下载好后&#xff0c;其中就有交叉编译工具。 当然&#xff0c;为了将来使用方便&#xff0c;我已经把它压缩并传到了百度网盘&#xff…

Idea实现定时任务

定时任务 什么是定时任务&#xff1f; 可以自动在项目中根据设定的时长定期执行对应的操作 实现方式 Spring 3.0 版本之后自带定时任务&#xff0c;提供了EnableScheduling注解和Scheduled注解来实现定时任务功能。 使用SpringBoot创建定时任务非常简单&#xff0c;目前主要…

Cesium 问题: 添加billboard后移动或缩放地球,标记点位置会左右偏移

文章目录 问题分析原先的:添加属性——解决漂移移动问题产生新的问题:所选的经纬度坐标和应放置的位置有偏差解决坐标位置偏差的问题完整代码问题 添加 billboard 后, 分析 原先的: // 图标加载 function addStation ({lon, lat, el, testName

PHP中GD库的使用

由于我要用到php的验证码 <?php session_start();// 生成验证码 $random_code substr(md5(uniqid(mt_rand(), true)), 0, 6);// 将验证码保存到 session 中 $_SESSION[captcha] $random_code;// 创建图片 $font 6; $image_width 100; $image_height 40;// 创建图像 $…

精确的单向延迟测量:使用普通硬件和软件

论文标题&#xff1a;Precise One-way Delay Measurement with Common Hardware and Software&#xff08;精确的单向延迟测量&#xff1a;使用普通硬件和软件&#xff09; 作者信息&#xff1a;Maciej Muehleisen 和 Mazen Abdel Latif&#xff0c;来自Ericsson Research Eri…

数据挖掘:一、Weka软件的基本操作

实验目的和要求 了解Weka软件的使用 实验环境 Windows11 Weka3.8.6 实验内容与过程 实验内容 1、了解Weka使用的一般步骤 2、利用Weka,对数据集进行关联规则挖掘及数据分类 3、记录操作步骤、使用的数据、最终的结果 实验过程 首先打开weka下载官网,选择合适

【Notepad++】---设置背景为护眼色(豆沙绿)最新最详细

在编程的艺术世界里&#xff0c;代码和灵感需要寻找到最佳的交融点&#xff0c;才能打造出令人为之惊叹的作品。而在这座秋知叶i博客的殿堂里&#xff0c;我们将共同追寻这种完美结合&#xff0c;为未来的世界留下属于我们的独特印记。 【Notepad】---设置背景为护眼色&#xf…

【微服务】SpringBoot 对接飞书多维表格事件回调监听流程详解

目录 一、前言 二、前置准备 2.1 创建一个应用 2.2 准备一张测试使用的多维表 2.3 获取对接文档 2.4 工程中添加SDK 三、对接过程 3.1 配置Encrypt Key 和 Verification Token 3.2 配置订阅方式 3.3 添加事件 3.4 申请权限 3.5 编写订阅代码 3.6 订阅文档事件 3.…

从0开始边做边学,用vue和python做一个博客,非规范化项目,怎么简单怎么弄,跑的起来有啥毛病解决啥毛病(三)

基础的内容都差不多了&#xff0c;开始研究文章详情页的内容设计&#xff0c;程序员嘛肯定要用markdown编辑了&#xff0c;找了一些发现这个md-editor看着还不错&#xff0c;文档介绍页比较清晰&#xff0c;用着也比较简单。 md-editor安装配置使用Mock.js模拟请求接口mock.js …