第80讲订单管理功能实现

后端

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.java1234.mapper.OrderMapper"><resultMap id="orderResult" type="com.java1234.entity.Order"><association property="wxUserInfo" column="userId" select="com.java1234.mapper.WxUserInfoMapper.findByOpenId"></association></resultMap><select id="list" parameterType="Map" resultMap="orderResult">select * from t_order<where><if test="orderNo!=null and orderNo!='' ">and orderNo like concat('%',#{orderNo},'%')</if></where>order by createDate desc<if test="start!=null and pageSize!=null ">limit #{start},#{pageSize}</if></select><select id="getTotal" parameterType="Map" resultType="Long">select count(*) from t_order<where><if test="orderNo!=null and orderNo!='' ">and orderNo like concat('%',#{orderNo},'%')</if></where></select></mapper>
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.java1234.mapper.WxUserInfoMapper"><resultMap id="wxUserInfoResult" type="com.java1234.entity.WxUserInfo"></resultMap><select id="findByOpenId" parameterType="String" resultMap="wxUserInfoResult">select * from t_wxuserinfo where openid=#{openid}</select></mapper>
package com.java1234.mapper;import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.java1234.entity.Order;import java.util.List;
import java.util.Map;/*** 订单Mapper接口* @author java1234_小锋* @site www.java1234.com* @company 南通小锋网络科技有限公司* @create 2022-02-23 22:00*/
public interface OrderMapper extends BaseMapper<Order> {List<Order> list(Map<String,Object> map);Long getTotal(Map<String,Object> map);
}
package com.java1234.mapper;import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.java1234.entity.BigType;
import com.java1234.entity.WxUserInfo;/*** 微信用户Mapper接口* @author java1234_小锋* @site www.java1234.com* @company 南通小锋网络科技有限公司* @create 2022-02-23 22:00*/
public interface WxUserInfoMapper extends BaseMapper<WxUserInfo> {public WxUserInfo findByOpenId(String openId);
}
package com.java1234.service;import com.baomidou.mybatisplus.extension.service.IService;
import com.java1234.entity.Order;import java.util.List;
import java.util.Map;/*** 订单Service接口* @author java1234_小锋* @site www.java1234.com* @company 南通小锋网络科技有限公司* @create 2022-02-23 22:01*/
public interface IOrderService extends IService<Order> {/*** 根据条件分页查询订单数据* @param map* @return*/List<Order> list(Map<String,Object> map);/*** 根据条件查询订单总记录数* @param map* @return*/Long getTotal(Map<String,Object> map);
}
package com.java1234.service.impl;import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.java1234.entity.Order;
import com.java1234.mapper.OrderMapper;
import com.java1234.service.IOrderService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;import java.util.List;
import java.util.Map;/*** 订单Service实现类* @author java1234_小锋* @site www.java1234.com* @company 南通小锋网络科技有限公司* @create 2022-02-23 22:02*/
@Service("orderService")
public class IOrderServiceImpl extends ServiceImpl<OrderMapper,Order> implements IOrderService {@Autowiredprivate OrderMapper orderMapper;@Overridepublic List<Order> list(Map<String, Object> map) {return orderMapper.list(map);}@Overridepublic Long getTotal(Map<String, Object> map) {return orderMapper.getTotal(map);}
}
package com.java1234.controller.admin;import com.java1234.entity.Order;
import com.java1234.entity.PageBean;
import com.java1234.entity.R;
import com.java1234.service.IOrderService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;import java.util.HashMap;
import java.util.List;
import java.util.Map;/*** 管理员-订单Controller控制器* @author java1234_小锋* @site www.java1234.com* @company 南通小锋网络科技有限公司* @create 2022-05-21 21:07*/
@RestController
@RequestMapping("/admin/order")
public class AdminOrderController {@Autowiredprivate IOrderService orderService;/*** 根据条件分页查询* @param pageBean* @return*/@RequestMapping("/list")public R list(@RequestBody PageBean pageBean){System.out.println(pageBean);Map<String,Object> map=new HashMap<>();map.put("orderNo",pageBean.getQuery().trim());map.put("start",pageBean.getStart());map.put("pageSize",pageBean.getPageSize());List<Order> orderList=orderService.list(map);Long total=orderService.getTotal(map);Map<String,Object> resultMap=new HashMap<>();resultMap.put("orderList",orderList);resultMap.put("total",total);return R.ok(resultMap);}
}

前端

<template><el-card><el-row :gutter="20" class="header"><el-col :span="7"><el-input placeholder="请输入订单号..." v-model="queryForm.query" clearable></el-input></el-col><el-button type="primary" :icon="Search" @click="initOrderList">搜索</el-button></el-row><el-table :data="tableData" stripe style="width: 100%"><el-table-column prop="orderNo" label="订单号" width="250" fixed/><el-table-column prop="wxUserInfo" label="用户昵称" width="200" :formatter="wxUserInfoNickNameFormatter"/><el-table-column prop="totalPrice" label="订单总价" width="100" /><el-table-column prop="status" label="订单状态" width="100" :formatter="statusFormatter"/><el-table-column prop="createDate" label="订单创建日期" width="200" /><el-table-column prop="payDate" label="订单支付日期" width="200" /><el-table-column prop="consignee" label="收货人" width="80" /><el-table-column prop="telNumber" label="联系电话" width="150" /><el-table-column prop="address" label="收货地址" width="400" /><el-table-column prop="action" label="操作" width="300" fixed="right"><template v-slot="scope"><el-button type="success">详情</el-button><el-button type="primary">发货</el-button><el-button type="primary">退货</el-button><el-button type="danger" :icon="Delete"/></template></el-table-column></el-table><el-paginationv-model:currentPage="queryForm.pageNum"v-model:page-size="queryForm.pageSize":page-sizes="[10, 20, 30, 40,50]"layout="total, sizes, prev, pager, next, jumper":total="total"@size-change="handleSizeChange"@current-change="handleCurrentChange"/></el-card>
</template><script setup>
import { Search ,Delete } from '@element-plus/icons-vue'
import { ref } from 'vue'
import axios from "@/util/axios";const queryForm=ref({query:'',pageNum:1,pageSize:10
})const total=ref(0)const tableData = ref([])const initOrderList=async()=>{const res=await axios.post("admin/order/list",queryForm.value)tableData.value=res.data.orderList;total.value=res.data.total;
}initOrderList();const handleSizeChange=(pageSize)=>{queryForm.value.pageNum=1;queryForm.value.pageSize=pageSize;initOrderList();
}const handleCurrentChange=(pageNum)=>{queryForm.value.pageNum=pageNum;initOrderList();
}const wxUserInfoNickNameFormatter=(row)=>{return row.wxUserInfo.nickName;
}const statusFormatter=(row)=>{switch (row.status){case 1:return "待支付"case 2:return "待发货"case 3:return "退款/退货"}
}</script><style lang="scss" scoped>.header{padding-bottom: 16px;box-sizing: border-box;
}.el-pagination{padding-top: 15px;box-sizing: border-box;
}</style>

在这里插入图片描述

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

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

相关文章

深入学习Pandas:数据连接、合并、加入、添加、重构函数的全面指南【第72篇—python:数据连接】

深入学习Pandas&#xff1a;数据连接、合并、加入、添加、重构函数的全面指南 Pandas是Python中最强大且广泛使用的数据处理库之一&#xff0c;提供了丰富的函数和工具&#xff0c;以便更轻松地处理和分析数据。在本文中&#xff0c;我们将深入探讨Pandas中一系列数据连接、合…

python中的数组和list的异同

在Python中&#xff0c;数组和列表&#xff08;list&#xff09;是两个非常相似但又不完全一样的数据结构。实际上&#xff0c;Python本身并没有原生的数组类型&#xff0c;而列表&#xff08;list&#xff09;是Python提供的一种非常灵活且常用的序列类型。下面我将简要介绍它…

【教程】autojs使用Intent打开相机拍照并指定存储路径

转载请注明出处&#xff1a;小锋学长生活大爆炸[xfxuezhang.cn] var photoPath "/sdcard/a.jpg"; var photoFile new java.io.File(photoPath); if (!photoFile.exists()) {photoFile.getParentFile().mkdirs();} try {photoFile.createNewFile(); } catch (e) {to…

React18原理: 再聊Fiber架构下的时间分片

时间分片 react的任务可以被打断&#xff0c;其实就是基于时间分片的人眼最高能识别的帧数不超过30帧&#xff0c;电影的帧数差不多是在24浏览器的帧率一般来说是60帧&#xff0c;也就是每秒60个画面, 平均一个画面大概是16.5毫秒左右浏览器正常的工作流程是运算渲染&#xff…

【iOS操作系统——讲解】

iOS操作系统 iOS操作系统 iOS操作系统 iOS是苹果公司开发的移动操作系统&#xff0c;最初在2007年推出&#xff0c;当时伴随着第一代iPhone一起亮相&#xff0c;iOS是基于Darwin (BSD)操作系统核心的&#xff0c;并且具有对多点触控手势的原生支持&#xff0c;这些手势在iOS界…

UVA11181条件概率 Probability|Given

条件概率 Probability|Given - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 样例解释&#xff1a; 需要学习条件概率和贝叶斯定理 //1 2 - 0.1*0.2*(1-0.3) 0.014 //1 - 3 0.1*0.8*0.3 0.024 //- 2 3 0.9*0.2*0.3 0.054 // 0.092//(0.0140.024)/0.092 0.4…

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之QRCode组件

鸿蒙&#xff08;HarmonyOS&#xff09;项目方舟框架&#xff08;ArkUI&#xff09;之QRCode组件 一、操作环境 操作系统: Windows 10 专业版、IDE:DevEco Studio 3.1、SDK:HarmonyOS 3.1 二、QRCode组件 用于显示单个二维码的组件。 子组件 无。 接口 QRCode(value: st…

python-分享篇-GUI界面开发-PyQt5-对QListWidget列表进行数据绑定

代码 # -*- coding: utf-8 -*-# Form implementation generated from reading ui file bindlist.ui # # Created by: PyQt5 UI code generator 5.11.3 # # WARNING! All changes made in this file will be lost! 对QListWidget列表进行数据绑定from PyQt5 import QtCore, QtG…

Elasticsearch:混合搜索是 GenAI 应用的未来

在这个竞争激烈的人工智能时代&#xff0c;自动化和数据为王。 从庞大的存储库中有效地自动化搜索和检索信息的过程的能力变得至关重要。 随着技术的进步&#xff0c;信息检索方法也在不断进步&#xff0c;从而导致了各种搜索机制的发展。 随着生成式人工智能模型成为吸引力的中…

华为云ModelBox实战:体感小游戏应用实操

目录 一、VsCode插件注册ModelBox设备二、Windows SDK安装1.安装Git for Windows2.下载ModelBox SDK3.相关插件安装 三、体感小游戏应用开发1.技能模板使用2.AI应用示例3.体感小游戏体验 参与华为云活动【HCSD】ModelBox实战营邀请活动&#xff0c;呼朋唤友学AIoT&#xff0c;完…

flask+python企业产品订单管理系统938re

在设计中采用“自下而上”的思想&#xff0c;在创新型产品提前购模块实现了个人中心、个体管理、发布企业管理、投资企业管理、项目分类管理、产品项目管理、个体投资管理、企业投资管理、个体订单管理、企业订单管理、系统管理等的功能性进行操作。最终&#xff0c;对基本系统…

Java学习-常用API(二)

Math类及其常用API&#xff1a; 演示&#xff1a; StringBuilder的认识及其常用方法&#xff1a; StringBuilder支持链式编程 StringBuilder sbnew StringBuilder&#xff08;&#xff09;&#xff1b;sb.append&#xff08;12&#xff09;.append.&#xff08;“itHeima”&am…

synchronized关键字以及底层实现

目录 基本使用 底层实现 synchronized锁升级 对象的内存结构 ⅰ. 对象头 1. ① 运行时元数据 (Mark Word) (占64位) a. 哈希值 (HashCode) b. GC分代年龄 c. 锁状态标记 2. ② 类型指针: (Klass Point) (占 32位) ⅱ. 实例数据 ⅲ. 对齐填充 Moniter重量级锁 轻量…

[ai笔记3] ai春晚观后感-谈谈ai与艺术

欢迎来到文思源想的ai空间&#xff0c;这是技术老兵重学ai以及成长思考的第3篇分享&#xff01; 今天我们不聊技术&#xff0c;只聊感受&#xff01; 1 关于ai春晚 期待许久的ai春晚&#xff0c;但是等初一晚上观看的时候&#xff0c;或多或少还是有些失望。 首先是观看人数…

前端工程化面试题 | 06.精选前端工程化高频面试题

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

(三)相机的分类与选型

preface 相机的选择不仅直接决定所采集到的图像的分辨率、图像质量等&#xff0c;同时也与整个系统的运行模式直接相关。 一、相机分类 分类方式相机名称特点概要成像过程传统/胶片相机景物成像聚焦在胶片上&#xff0c;形成的像是实像数码相机景物成像聚焦在CCD或CMOS上&…

【二叉树】构建销毁二叉树

目录 创建二叉树 整体思路 代码实现 图示理解​ 销毁二叉树 判断二叉树是否是完全二叉树&层序 整体思路 代码实现 图是理解 二叉树的性质 题目 创建二叉树 整体思路 通过前序遍历的数组"ABD##E#H##CF##G##"构建二叉树遇到#就回退&#xff0c;返回…

浅谈路由器交换结构

一、路由器技术概述 路由器&#xff08;Router&#xff09;是连接两个或多个网络的硬件设备&#xff0c;在网络间起网关的作用&#xff0c;是读取每一个数据包中的地址然后决定如何传送的专用智能性的网络设备。它能够理解不同的协议&#xff0c;例如某个局域网使用的以太网协议…

文章页的上下篇功能是否有必要?boke112百科取消上下篇功能

也不知道是从什么时候开始&#xff0c;我们很多站长的博客网站文章页都会在文末添加上“上一篇”和“下一篇”功能&#xff0c;目的是进行站内SEO优化和方便用户阅读上下篇文章。 boke112百科不管是以前使用的Three主题还是现在使用的YIA主题&#xff0c;刚开始的文章页都是有…

git安装及使用

1、下载git 官网 Windows系统Git安装教程&#xff08;详解Git安装过程&#xff09; 官网打不开的话&#xff0c;可以使用镜像地址 镜像地址 2、使用git Git的下载、安装与使用(Windows) 30分钟带你精通git使用 3、注册github https://github.com/ 4、github文档 h…