帝可得-运营管理App

news2024/12/12 17:24:16

运营管理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.coloradmin.cn/o/2256884.html

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

相关文章

用 Python 从零开始创建神经网络(十六):二元 Logistic 回归

二元 Logistic 回归 引言1. Sigmoid 激活函数2. Sigmoid 函数导数3. Sigmoid 函数代码4. 二元交叉熵损失(Binary Cross-Entropy Loss)5. 二元交叉熵损失导数(Binary Cross-Entropy Loss Derivative)6. 二进制交叉熵代码&#xff0…

高质量阅读微信小程序ssm+论文源码调试讲解

第2章 开发环境与技术 高质量阅读微信小程序的编码实现需要搭建一定的环境和使用相应的技术,接下来的内容就是对高质量阅读微信小程序用到的技术和工具进行介绍。 2.1 MYSQL数据库 本课题所开发的应用程序在数据操作方面是不可预知的,是经常变动的&…

AI 学习框架:开启智能未来的钥匙

一、热门人工智能学习框架概述 人工智能学习框架在当今的科技发展中占据着至关重要的地位,它为开发者提供了强大的工具,有力地推动了人工智能的发展,同时也极大地降低了开发的难度。 人工智能学习框架是帮助开发者和研究人员快速构建、训练…

go-blueprint create exit status 1

1. 异常信息 2024/12/06 10:59:19 Could not initialize go.mod in new project exit status 1 2024/12/06 10:59:19 Problem creating files for project. exit status 1 Error: exit status 12. 排查思路 手动进行go mod init查看手动的报错解决报错 3. 解决问题 发现是GO11…

Python利用海龟画图turtle库做一个篮球比赛计时画面

Python利用海龟画图turtle库做一个篮球比赛计时画面,代码如下 import turtle import time import random r random.random() g random.random() b random.random() turtle.speed(0) for j in range(1,2,1):for i in range(1,60,1):print(i)time.sleep(0.1)turtl…

若依集成更好用的easyexcel

背景 若依使用的是apach poi并在此基础上进行封装apach poi的原生的api是很复杂的,若依简化了了此操作apach poi的上传速率和下载速率都是没有优化的,依赖于文件大小的限制在此前提下,如果没法满足客户的需求(超大型文件的上传&am…

代码随想录算法训练营day51|动态规划part13

回文子串 回文子串这里的递推式不太一样,dp[i] 和 dp[i-1] ,dp[i 1] 看上去都没啥关系。所以要回归到回文的定义 而我们发现,判断一个子字符串(字符串下标范围[i,j])是否回文,依赖于,子字符串…

SRS 服务器入门:实时流媒体传输的理想选择

在当今视频流媒体需求爆炸式增长的时代,如何选择一款高效、稳定且功能强大的流媒体服务器成为了许多开发者和企业关注的焦点。而 SRS(Simple Realtime Server)作为一款开源的流媒体服务器,以其卓越的性能和灵活的功能,…

VRRP的知识点总结及实验

1、VRRP VRRP(Virtual Router Redundancy Protocol,虚拟路由器冗余协议)既能够实现网关的备份,又能解决多个网关之间互相冲突的问题,从而提高网络可靠性。 2、VRRP技术概述: 通过把几台路由设备联合组成一台虚拟的“路由设备”…

【设计模式系列】状态模式(二十三)

一、什么是状态模式 状态模式(State Pattern)是一种行为设计模式,其核心目的是管理一个对象在其内部状态改变时的行为变化,其核心理念是将对象的行为和状态分离。这种模式通过将每个状态相关的行为封装在独立的类中,使…

使用 LlamaFactory 结合开源大语言模型实现文本分类:从数据集构建到 LoRA 微调与推理评估

文章目录 背景介绍文本分类数据集Lora 微调模型部署与推理期待模型的输出结果 文本分类评估代码 背景介绍 本文将一步一步地,介绍如何使用llamafactory框架利用开源大语言模型完成文本分类的实验,以 LoRA微调 qwen/Qwen2.5-7B-Instruct 为例。 文本分类…

AI大模型赋能医学诊疗与药学服务——课题基金申请辅导项目成功举办

2024年11月23日,北京整合医学学会在线上成功举办了“AI大模型赋能医学诊疗与药学服务——课题基金申请辅导项目”。此次会议吸引了来自全国各地的医学、药学及人工智能领域的专家学者和科研人员积极参与,共同探讨AI大模型在医学诊疗与药学服务中的应用&a…

Java8 CompletableFuture异步编程

文章目录 CompletableFuturede介绍CompletableFuturede使用场景常用异步编程实现方案- Thread- ExecutorService- CountDownLatch- CyclicBarrier- ForkJoinPool- CompletableFuture各种实现方案总结 CompletableFuturede结构结构梳理- Future接口- CompletionStage接口常用方法…

el-thee懒加载删除某条数据 ,el-thee懒加载重置,el-thee刷新某个节点

一、懒加载的tree已经全部展开&#xff0c;外部点击删除的时候不需要重新展开点击获取下一层数据 <template> <el-treeref"tree":data"treeData":props"defaultProps"render-after-expandhighlight-currentlazy:expand-on-click-node&q…

计算机网络-IPSec VPN工作原理

一、IPSec VPN工作原理 昨天我们大致了解了IPSec是什么&#xff0c;今天来学习下它的工作原理。 IPsec的基本工作流程如下&#xff1a; 通过IKE协商第一阶段协商出IKE SA。 使用IKE SA加密IKE协商第二阶段的报文&#xff0c;即IPsec SA。 使用IPsec SA加密数据。 IPsec基本工作…

国际荐酒师Peter助力第六届地博会,推动地理标志产品国际化发展

国际荐酒师Peter Lisicky助力第六届知交会暨地博会&#xff0c;推动地理标志产品国际化发展 第六届粤港澳大湾区知识产权交易博览会暨国际地理标志产品交易博览会于2024年12月9日至11日在中新广州知识城盛大举行&#xff0c;吸引了全球众多行业专家、企业代表及相关机构齐聚一…

Android显示系统(05)- OpenGL ES - Shader绘制三角形(使用glsl文件)

Android显示系统&#xff08;02&#xff09;- OpenGL ES - 概述 Android显示系统&#xff08;03&#xff09;- OpenGL ES - GLSurfaceView的使用 Android显示系统&#xff08;04&#xff09;- OpenGL ES - Shader绘制三角形 Android显示系统&#xff08;05&#xff09;- OpenGL…

【Golang】Go语言编程思想(六):Channel,第一节,介绍Channel

Channel 下面的几个例子将会展示如何定义一个 channel&#xff1a; func chanDemo() {var c chan int // chan int 的含义是, c 是一个 channel, 里面的内容是 int// 上面的声明语句将会创建一个 nil channel, c nil, 它的作用将在 select 当// 中体现 }创建一个非 nil 的 c…

怎么获取Java高并发经验与系统设计技能?

如何获得高并发经验&#xff1f; 这是系统邀请我回答的一个问题&#xff0c;由此也引发了我的一些思考&#xff1a;为什么人人都想要获得高并发经验&#xff1b;想拥有高并发系统设计技能&#xff1f; 其原因LZ认为主要有以下三点&#xff1a; 涨薪&#xff1a;有高并发系统设…

Spherical Harmonics (SH)球谐函数的原理及应用【3DGS】

Spherical Harmonics &#xff08;SH&#xff09;球谐函数的原理及应用【3DGS】 前言球谐函数&#xff08;Spherical Harmonics, SH&#xff09;球谐函数不同阶的表达式以及有什么不同&#xff1f;具体介绍球谐函数基函数球谐函数 前言 高斯泼溅Gaussian Splatting (GS) GS 模…