十二、市场活动:修改

news2024/11/28 23:34:45

功能需求

①、用户在市场活动主页面,选择要修改的市场活动,点击"修改"按钮,弹出修改市场活动的模态窗口;

②、用户在修改市场活动的模态窗口填写表单,点击"更新"按钮,完成修改市场活动的功能.

③、  *每次能且只能修改一条市场活动

④、*所有者 动态的

⑤、*表单验证(同创建)

⑥、 *修改成功之后,关闭模态窗口,刷新市场活动列表,保持页号和每页显示条数都不变

⑦、*修改失败,提示信息,模态窗口不关闭,列表也不刷新

一、实现id查询

ActivityMapper

1.activityMapper接口

  /**
     * 根据id查询市场活动
     */
    Activity selectActivityById(String id);

2.activityMapper映射文件

根据id查询的sql语句

    <!--  Activity selectCountOfActivityById(String id);-->
    <select id="selectActivityById" resultMap="BaseResultMap" parameterType="java.lang.String">
        select
        <include refid="Base_Column_List"/>
        from tbl_activity
        where id = #{id}
    </select>

ActivityService

	/**
	 * 根据id查询市场活动
	 */
	Activity queryActivityById(String id);
	@Override
	public Activity queryActivityById(String id) {
		return activityMapper.selectActivityById(id);
	}

ActivityController

异步查询返回一个json对象

	/**
	 * 根据id修改--1查询
	 */
	@RequestMapping("/workbench/activity/selectActivityById.do")
	public @ResponseBody
	Object selectActivityById(String id) {
		Activity activity = activityService.queryActivityById(id);
		return activity;
	}

前端workbench/activity/index.jsp

1.点击修改按钮,绑定单击事件,进行请求查询

  • var checkedIds = $("#tBody input[type='checkbox']:checked");点击选中的checkbox,存放到checkedIds数组里面
  • checkedIds.size()选中的数量。如果是1进行查询
  • var id = checkedIds[0].value;获取选中的id值
  • $("#id").val(data.属性)向选中id赋值,进行文本填充
 $("#editActivityBtn").click(function () {
                //收集参数获取选中的checkbox
                var checkedIds = $("#tBody input[type='checkbox']:checked");
                if (checkedIds.size() == 0) {
                    alert("请选择修改的事件");
                    return;
                }
                //只能选择1个
                if (checkedIds.size() == 1) {
                    var id = checkedIds[0].value;
                    //1发送请求
                    $.ajax({
                        url: 'workbench/activity/selectActivityById.do',
                        data: {
                            id: id
                        },
                        type: 'post',
                        // 2处理响应
                        dataType: 'json',
                        success: function (data) {
                            //查询成功
                            $("#edit-id").val(data.id);
                            $("#edit-marketActivityOwner").val(data.owner);
                            $("#edit-marketActivityName").val(data.name);
                            $("#edit-startTime").val(data.startDate);
                            $("#edit-endTime").val(data.endDate);
                            $("#edit-cost").val(data.cost);
                            $("#edit-describe").val(data.description);
                            // 弹出创建市场模态窗口
                            $("#editActivityModal").modal("show");
                        }
                    });
                } else {
                    alert("只能选择一条修改");
                    return;
                }
            });

二、点击保存按钮

流程图

 ActivityMapper

 根据填写的表单,需要更新的字段是所有者ower,名称name,开始日期,结束日期,成本,描述,修改事件,修改者

    /**
     * 根据id修改市场活动
     */
    int updateActivity(Activity activity);
  <!-- int updateActivity(Map<String,Object>map);-->
    <update id="updateActivity">
        update tbl_activity
        set owner       = #{owner,jdbcType=CHAR},
            name        = #{name,jdbcType=VARCHAR},
            start_date  = #{startDate,jdbcType=CHAR},
            end_date    = #{endDate,jdbcType=CHAR},
            cost        = #{cost,jdbcType=VARCHAR},
            description = #{description,jdbcType=VARCHAR},
            edit_time   = #{editTime,jdbcType=CHAR},
            edit_by     = #{editBy,jdbcType=VARCHAR}
        where id = #{id,jdbcType=CHAR}
    </update>

 ActivityService

	/**
	 * 根据id修改市场活动
	 */
	int editActivityById(Activity activity);
	@Override
	public int editActivityById(Activity activity) {
		return activityMapper.updateActivity(activity);
	}

 ActivityController

  • 封装参数,获取当前的时间和创建者的id
  • 通过实体类接收对应的参数
/**
	 * 根据id修改--2保存
	 */
	@RequestMapping("/workbench/activity/editActivityById.do")
	public @ResponseBody
	Object editActivityById(Activity activity,HttpSession session) {
		//封装参数
		//获取当前时间
		activity.setEditTime(DateUtils.formateDateTime(new Date()));
		//获取session的id
		User user = (User) session.getAttribute(Contants.SESSION_USER);
		activity.setEditBy(user.getId());
		//调用Service
		ReturnObject returnObject = new ReturnObject();
		try {
			int ret = activityService.editActivityById(activity);
			if (ret>0){
				returnObject.setCode(Contants.RETURN_OBJECT_CODE_SUCCESS);
			}else {
				returnObject.setCode(Contants.RETURN_OBJECT_CODE_FAIL);
				returnObject.setMessage("系统繁忙,稍后再试");
			}
		} catch (Exception e) {
			e.printStackTrace();
			returnObject.setCode(Contants.RETURN_OBJECT_CODE_FAIL);
			returnObject.setMessage("系统繁忙,稍后再试");
		}
		return returnObject;


	}

前端

  • $("#pagDiv").bs_pagination('getOption', 'currentPage'),获取当前页
    
  • $("#pagDiv").bs_pagination('getOption', 'rowsPerPage'),获取每页显示的数量
  • 调用的翻页函数
            //修改 2 保存
            $("#updateSaveBtn").click(function () {
                //2.1封装参数
                var id = $("#edit-id").val();
                var name = $.trim($("#edit-marketActivityName").val());
                var owner = $("#edit-marketActivityOwner").val();
                var startDate = $("#edit-startTime").val();
                var endDate = $("#edit-endTime").val();
                var cost = $("#edit-cost").val();
                var description = $.trim($("#edit-describe").val());
                //2.2表单验证
                if (owner == "") {
                    alert("所有者不能为空");
                    return;
                }
                if (name == "") {
                    alert("名称不能为空");
                    return;
                }
                if (startDate != "" && endDate != "") {
                    // 使用字符串大小进行日期比较
                    if (startDate > endDate) {
                        alert("开始日期不能大于结束日期");
                        return;
                    }
                }
                // 正则表达式验证成本:成本只能为非负整数
                var regExp = /^(([1-9]\d*)|0)$/;
                if (!regExp.test(cost)) {
                    alert("成本只能为非负整数");
                    return;
                }

                //2.2 发送请求
                $.ajax({
                    url: 'workbench/activity/editActivityById.do',
                    data: {
                        id: id,
                        name: name,
                        owner: owner,
                        startDate: startDate,
                        endDate: endDate,
                        cost: cost,
                        description: description
                    },
                    type: 'post',
                    //做出响应
                    dataType: 'json',
                    success: function (data) {
                        if (data.code == '1') {
                            // 当前页
                            $("#editActivityModal").modal("hide");
                            queryActivityByConditionForPage($("#pagDiv").bs_pagination('getOption', 'currentPage'),
                                $("#pagDiv").bs_pagination('getOption', 'rowsPerPage'));
                        } else {
                            alert(data.message);
                        }
                    }
                });
            });

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

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

相关文章

电脑组装教程分享!

案例&#xff1a;如何自己组装电脑&#xff1f; 【看到身边的小伙伴组装一台自己的电脑&#xff0c;我也想试试。但是我对电脑并不是很熟悉&#xff0c;不太了解具体的电脑组装步骤&#xff0c;求一份详细的教程&#xff01;】 电脑已经成为我们日常生活中不可或缺的一部分&a…

Nginx用作 内网CDN / edge cache 服务

文章目录什么是CDN&#xff1f;为什么需要 内网CDN/edge cache?Nginx配置Edge Cache服务配置简单静态文件缓存服务配置缓存控制$upstream_cache_statusGzip压缩参考什么是CDN&#xff1f; 首先要明白什么是CDN&#xff1f; CDN英文全称Content Delivery Network&#xff0c;…

Springboot基础学习之(十七):通过Shiro实现用户得到登录认证和授权

前几篇文章讲解了关于信息安全的另一框架Spring security &#xff0c;今天趁热打铁基础的了解以下shiro这一框架。 什么是shiro&#xff1f; Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码和会话管理。使用Shiro的易于理解的API,您可以快速、轻松地获得任何应…

c++11 标准模板(STL)(std::stack)(二)

定义于头文件 <stack> template< class T, class Container std::deque<T> > class stack;std::stack 类是容器适配器&#xff0c;它给予程序员栈的功能——特别是 FILO &#xff08;先进后出&#xff09;数据结构。 该类模板表现为底层容器的包装…

线索二叉树(前序,中序,后序线索化以及遍历)

其实在这之前我想了很久&#xff0c;这个线索化二叉树我个人感觉是比实现二叉链表要难&#xff0c;很抽象的一个东西。好了&#xff0c;话先不多说&#xff0c;老规矩&#xff0c;先上代码&#xff1a; #pragma once #include<stdio.h> #include<stdlib.h> #inclu…

std::inner_product与std::accumulate初始值设置踩坑

std::inner_product函数可以用于计算两个序列的内积。在这个函数中&#xff0c;我们需要传递四个参数&#xff1a;两个源序列的起始迭代器、一个初始值和一个二元函数对象。 std::inner_product函数将对两个源序列中的每个元素进行乘法运算&#xff0c;并将结果累加到初始值中…

FPGA基于XDMA实现PCIE X4通信方案 提供工程源码和QT上位机程序和技术支持

目录1、前言2、我已有的PCIE方案3、PCIE理论4、总体设计思路和方案5、vivado工程详解6、驱动安装7、QT上位机软件8、上板调试验证9、福利&#xff1a;工程代码的获取1、前言 PCIE&#xff08;PCI Express&#xff09;采用了目前业内流行的点对点串行连接&#xff0c;比起 PCI …

桥接设计模式解读

目录 问题引进 手机操作问题 传统方案解决手机操作问题 传统方案解决手机操作问题分析 桥接模式(Bridge)概述 基本介绍 原理类图 主要角色 桥接模式解决手机操作问题 桥接模式的注意事项和细节 常见的应用场景 问题引进 手机操作问题 现在对不同手机类型的不同品牌…

Mybatis(七)Mybatis的日志体系

在介绍Mybatis日志实现前&#xff0c;我们先了解下java的日志体系以及日志框架的发展&#xff0c;目前比较常用的日志框架有下面几个&#xff1a; 而JCL和SLF4J属于日志接口&#xff08;没有日志具体实现&#xff09;&#xff0c;提供统一的日志操作规范&#xff0c;而日志的实…

Halo博客建站实战以及问题汇总

目录 简介 特性 快速开始 安装步骤 环境准备 Docker-compose方式部署 问题汇总 mac端无法访问页面 页面登录提示账号密码错误 重装注意点 资料 官方文档 简介 Halo 强大易用的开源建站工具 特性 代码开源 我们的所有代码开源在 GitHub 上且处于积极维护状态&…

stata数据处理

stata数据处理–潘登同学的stata笔记 文章目录stata数据处理--潘登同学的stata笔记数据导入、导出使表格第一行成为变量标注(label)数据合并横向与纵向合并一对多与多对一横向合并缺失值处理查看缺失值替换缺失值缺失值填充离群值处理取对数的方法截尾处理、缩尾处理分组统计列…

银行数字化转型导师坚鹏:银行数字化转型痛点、路径与对策

银行数字化转型痛点、路径与对策课程背景&#xff1a; 很多银行存在以下问题&#xff1a; 不知道银行数字化转型&#xff1f; 不清楚数字化转型对银行发展有什么影响&#xff1f; 不知道数字化转型对银行有什么机遇&#xff1f; 学员收获: 学习银行数字化转型的发展现状与成…

2021四川省icpc省赛H题 Nihongo wa Muzukashii Desu 日本語は難しいです!

日本語は難しいです&#xff01; それは難しくないと思うだけど 传送门 一些吐槽 这题好像恶心了不少学弟啊 其实只要读懂了题就很好做, 对于我这种日语高考生来说确实是有点犯规了不过当时我写的时候不能用翻译一看题面一大串英文就被我pass掉, 后面看到一大堆人过了我才去写…

迅为RK3568开发平台人工智能人脸识别全国产解决方案赋能NVR

人脸识别服务&#xff0c;能够在图像中快速检测人脸、分析人脸关键点信息、获取人脸属性、实现人脸的精确比对和检索。可应用于身份验证、电子考勤、客流分析等场景人脸检测、比对、搜索&#xff0c;人脸库管理等。 为什么使用它呢&#xff1f; 维持公众聚集场所的秩序 在餐厅…

Apache的配置与运用

1. web虚拟主机的构建 虚拟Web主机指的是在同一台服务器中运行多个Web站点&#xff0c;其中每一个站点实际上并不独立占用整个服务器&#xff0c;因此被称为“虚拟”Web 主机。通过虚拟 Web 主机服务可以充分利用服务器的硬件资源&#xff0c;从而大大降低网站构建及运行成本。…

2.3.2 单链表的插入结点操作

--单链表示意图 一、按位序插入&#xff08;带头结点&#xff09; ①表头插入 注意点 1.i1&#xff0c;while循环不执行 2.时间复杂度为O&#xff08;1&#xff09; 3.p&#xff01;NULL表示指针p有指向结点 4.头结点为第0个结点 5.pL表示指针p和L指向位置相同&#xff0…

ORB_SLAM3_优化方法 Pose优化

PoseOptimization PoseOptimization主要的作用是利用重投影优化单帧的位姿,主要用在Tracking的几种跟踪模式TrackWithMotionModel、TrackReferenceKeyFrame、 TrackLocalMap、Relocalization中 输入 优化变量观测帧的Pose帧的MapPoint帧的KeyPoint初始化 //创建优化器 g2o…

4.Java逻辑控制语句

Java逻辑控制语句 在实际生活中&#xff0c;我们的生活不是一成不变的&#xff0c;很多时候需要我们去选择&#xff0c;大到人生的十字路口&#xff0c;小到今天晚上吃什么&#xff0c;选择无处不在。小的选择决定了我们一件小事的走向&#xff0c;大的选择可能会改变我们人生…

大模型“云上经济”之权力游戏

文丨谭婧光阴者百代之过客。世人皆过客&#xff0c;软件亦如此。人工智能已有新旧之分。网友戏称&#xff0c;新人工智能是ChatGPT&#xff0c;旧人工智能是“之前那些”。历史在重演。云计算在美国问世的时候&#xff0c;否定论调居多。一个常见的否定论调是「做生意不用上云」…

vite+vue3使用UEditorPlus ,后端PHP

vitevue3使用UEditorPlus什么是UEditorPlus功能亮点前端安装安装vue-ueditor-wrap3.x下载 UEditorPlus在main.js注册组件v-model 绑定数据后端配置效果百度富文本编辑器是目前所有编辑器中功能最丰富的&#xff0c;但长时间不进行维护了。之前写了一篇使用UEditor的教程&#x…