当前位置: 首页 > article >正文

Java学习Day51:紫云山金丹培育基地(移动端开发之多表联查,发送短信验证码)

移动端开发主要有三种方式:

1、基于手机API开发(原生APP)

2、基于手机浏览器开发(移动web)

3、混合开发(混合APP)

1.发送短信验证码

<dependency>
  <groupId>com.aliyun</groupId>
  <artifactId>aliyun-java-sdk-core</artifactId>
  <version>3.3.1</version>
</dependency>
<dependency>
  <groupId>com.aliyun</groupId>
  <artifactId>aliyun-java-sdk-dysmsapi</artifactId>
  <version>1.0.0</version>
</dependency>

在health_common工程中导入如下通用组件

1.ValidateCodeUtils工具类:用来生成随机验证码

2.SMSUtils工具类:用来发送验证码

3.RedisMessageConstant常量类:

package com.easthome.constant;

public class RedisMessageConstant {
    public static final String SENDTYPE_ORDER = "001";//用于缓存体检预约时发送的验证码
    public static final String SENDTYPE_LOGIN = "002";//用于缓存手机号快速登录时发送的验证码
    public static final String SENDTYPE_GETPWD = "003";//用于缓存找回密码时发送的验证码
}

2.多表联查

多表联查还是基于前端数据结构,前端如下:

   <!-- 页面内容 -->
    <div class="contentBox">
        <div class="card">
            <!--套餐详情-->
            <div class="project-img">
                <img :src="imgUrl" width="100%" height="100%" />
            </div>
            <div class="project-text"><!--套餐名字-->
                <h4 class="tit">{{setmeal.name}}</h4>
                <!--套餐备注-->
                <p class="subtit">{{setmeal.remark}}</p>
                <p class="keywords">
                    <!--套餐性别和年龄-->
                    <span>{{setmeal.sex == '0' ? '性别不限' : setmeal.sex == '1' ? '男':'女'}}</span>
                    <span>{{setmeal.age}}</span>
                </p>
            </div>
            <!--<div class="project-know">
                <a href="orderNotice.html" class="link-page">
                    <i class="icon-ask-circle"><span class="path1"></span><span class="path2"></span></i>
                    <span class="word">预约须知</span>
                    <span class="arrow"><i class="icon-rit-arrow"></i></span>
                </a>
            </div>-->
        </div>
        <div class="table-listbox">
            <div class="box-title">
                <i class="icon-zhen"><span class="path1"></span><span class="path2"></span></i>
                <span>套餐详情</span>
            </div>
            <div class="box-table">
                <div class="table-title">
                    <div class="tit-item flex2">项目名称</div>
                    <div class="tit-item  flex3">项目内容</div>
                    <div class="tit-item  flex3">项目解读</div>
                </div>
                <div class="table-content">
                    <ul class="table-list">
                        <!--
                            套餐对应的检查组
                            遍历当前套餐对象中的检查组
                        -->
                        <li class="table-item" v-for="checkgroup in setmeal.checkGroups">
                            <div class="item flex2">{{checkgroup.name}}</div>
                            <div class="item flex3">
                                <!--套餐的检查组对应的检查项-->
                                <label v-for="checkitem in checkgroup.checkItems">
                                    {{checkitem.name}}
                                </label>
                            </div>
                            <div class="item flex3">&nbsp;&nbsp; {{checkgroup.remark}}</div>
                        </li>
                    </ul>
                </div>
                <div class="box-button">
                    <a @click="toOrderInfo()" class="order-btn">立即预约</a>
                </div>
            </div>
        </div>
    </div>

前端代码中,使用遍历获取数据,得到steMeal,setMeal中的checkGroup以及checkGroup中的checkItem,因为三者都是后端javaBean,所以可以在前两者中设置后者的List<JavaBean>,

再使用循环赋值,得到一条套餐数据对应多条查询组再对应多条查询项!

@Override
    public SetMeal querySetMealById(Integer id) {
        //先查询套餐
        SetMeal setMeal = setMealMapper.querySetMealById(id);

        //根据套餐的id,查询对应的检查组
        List<CheckGroup> checkGroupList = checkGroupMapper.queryCheckGroupBySetMealId(id);
        //检查组集合,存储到套餐对象中
        setMeal.setCheckGroups(checkGroupList);

        //循环遍历检查组的集合
        for (CheckGroup checkGroup :checkGroupList) {
            //checkGroup.getId();//获取检查组的ID
            //查询检查组对应的检查项
            List<CheckItem> checkItemList = checkItemMapper.queryCheckItemByCheckGroupId(checkGroup.getId());
            //检查项集合,存储到检查组对象
            checkGroup.setCheckItems(checkItemList);
        }

        return setMeal;
    }


http://www.kler.cn/a/370657.html

相关文章:

  • Spring Task—定时任务
  • 钉钉日常报销单与金蝶云星空集成技术详解
  • springboot配置websocket
  • 2025秋招八股文--RPC篇
  • 深入理解TCP——面试20问
  • win docker desktop踩坑及解决方案(拉取镜像失败)
  • 前端对一个增删改查的思考
  • 【机器学习】多项式回归
  • 实战OpenCV之深度学习
  • <大厂实战场景> ~ flutter鸿蒙next处理后端返回来的数据的转义问题
  • 大数据-186 Elasticsearch - ELK 家族 Logstash Input插件 JDBC syslog
  • SSRF服务端请求伪造
  • Pandas 数据分析基础操作:从创建到统计的实用指南
  • 人工智能与机器学习相关算法介绍
  • 掌握机器学习中的偏差与方差:模型性能的关键
  • DAPT: Distribution-Aware Prompt Tuning for Vision-Language Models
  • 实现梦想:Spring Boot驱动的摄影工作室网站
  • GeoWebCache1.26调用ArcGIS切片
  • 【数据集】2015-2100年8种情景(SSPs-RCP)下中国土地利用数据
  • 命令模式(C++)三分钟读懂