TienChin 活动管理-修改活动接口
前端
activity.js
直接替换现有的,最求速度了,后面在详细一个个记录,不在过多解释了。
import request from '@/utils/request'
/**
* 查询活动列表
* @param query 查询条件参数
* @returns {*} 查询结果
*/
export function listActivity(query) {
return request({
url: '/tienchin/activity/list',
method: 'get',
params: query
})
}
/**
* 查询渠道列表
* @returns {*} 查询结果
*/
export function listChannel() {
return request({
url: '/tienchin/activity/channel/list',
method: 'get'
})
}
/**
* 查询活动详细
* @param activityId 活动ID
* @returns {*} 查询结果
*/
export function getInfo(activityId) {
return request({
url: '/tienchin/activity/' + activityId,
method: 'get'
})
}
// 查询活动详细
export function getActivity(activityId) {
return request({
url: '/tienchin/activity/' + activityId,
method: 'get'
})
}
// 新增活动
export function addActivity(data) {
return request({
url: '/tienchin/activity',
method: 'post',
data: data
})
}
// 修改活动
export function updateActivity(data) {
return request({
url: '/tienchin/activity',
method: 'put',
data: data
})
}
// 删除活动
export function delActivity(activityIds) {
return request({
url: '/tienchin/activity/' + activityIds,
method: 'delete'
})
}
后端
我们在进行数据修改的时候,有的数据在新增的时候是需要校验必填项的,但是在编辑的时候却不需要,这个时候可以使用校验分组的方式进行区分实现方式如下。
新建一个 validator 包,在当中分别创建,CreateGroup,EditGroup:
/**
* @author BNTang
* @version 1.0
* @description 添加活动校验分组
* @since 2023-09-10
**/
public interface CreateGroup {
}
/**
* @author BNTang
* @version 1.0
* @description 编辑活动校验分组
* @since 2023-09-10
**/
public interface EditGroup {
}
ActivityController.java

@PreAuthorize("hasPermission('tienchin:activity:create')")
@Log(title = "活动管理", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@Validated(CreateGroup.class) @RequestBody ActivityVO activityVO) {
return AjaxResult.success(iActivityService.addActivity(activityVO) > 0 ? "添加成功" : "添加失败");
}
/**
* 修改活动
*/
@PreAuthorize("hasPermission('tienchin:activity:edit')")
@Log(title = "活动管理", businessType = BusinessType.UPDATE)
@PutMapping
AjaxResult edit(@Validated(EditGroup.class) @RequestBody ActivityVO activityVO) {
return AjaxResult.success(iActivityService.updateActivity(activityVO) > 0 ? "更新成功" : "更新失败");
}
ValidationMessages.properties
添加一个活动id不能为空的校验信息:
activity.id.notnull=活动ID不能为空
ActivityVO
/**
* 活动ID
*/
@NotNull(message = "{activity.id.notnull}", groups = {EditGroup.class})
private Integer activityId;
/**
* 活动名称
*/
@NotBlank(message = "{activity.name.notBlank}", groups = {EditGroup.class, CreateGroup.class})
@Size(max = 20, message = "{activity.name.size}", groups = {EditGroup.class, CreateGroup.class})
private String activityName;
/**
* 渠道ID
*/
@NotNull(message = "{activity.channelId.notnull}", groups = {EditGroup.class, CreateGroup.class})
private Integer channelId;
/**
* 活动简介
*/
@NotBlank(message = "{activity.info.notBlank}", groups = {EditGroup.class, CreateGroup.class})
@Size(max = 255, message = "{activity.info.size}", groups = {EditGroup.class, CreateGroup.class})
private String activityInfo;
/**
* 活动类型,1.折扣券、2.代金券
*/
@NotNull(message = "{activity.type.notnull}", groups = {EditGroup.class, CreateGroup.class})
private Integer activityType;
/**
* 活动状态,0.表示禁用、1.表示正常
*/
@Max(value = 1, message = "{activity.status.max}", groups = {EditGroup.class, CreateGroup.class})
@Min(value = 0, message = "{activity.status.min}", groups = {EditGroup.class, CreateGroup.class})
private Integer activityStatus;
/**
* 折扣券
*/
@Max(value = 10, message = "{activity.discount.max}", groups = {EditGroup.class, CreateGroup.class})
@Min(value = 0, message = "{activity.discount.min}", groups = {EditGroup.class, CreateGroup.class})
private Double discount;
/**
* 代金券
*/
@Min(value = 0, message = "{activity.voucher.min}", groups = {EditGroup.class, CreateGroup.class})
private Double voucher;
/**
* 活动开始时间
*/
@NotNull(message = "{activity.beginTime.notnull}", groups = {EditGroup.class, CreateGroup.class})
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
private LocalDateTime beginTime;
/**
* 活动结束时间
*/
@NotNull(message = "{activity.endTime.notnull}", groups = {EditGroup.class, CreateGroup.class})
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
private LocalDateTime endTime;
IActivityService
/**
* 修改活动
*
* @param activityVO 活动信息
* @return 结果
*/
int updateActivity(ActivityVO activityVO);
ActivityServiceImpl
@Override
public int updateActivity(ActivityVO activityVO) {
Activity activity = new Activity();
BeanUtils.copyProperties(activityVO, activity);
activity.setUpdateBy(SecurityUtils.getUsername());
activity.setUpdateTime(LocalDateTime.now());
// 将来更新的时候,不修改为 null 的字段
activity.setCreateBy(null);
activity.setCreateTime(null);
activity.setDelFlag(null);
return updateById(activity) ? 1 : 0;
}
!> 将实体类都统一放入到 domain 包当中自己改下

TienChin 活动管理-修改活动接口的更多相关文章
- Alpha2版本-组织管理、党员管理、活动管理测试
小程序组织管理.党员管理.活动管理测试-测试报告 一.测试工具的选择 微信安卓版v7.0.8 微擎工具v1.7.0 PHPstorm Google Chrome 76.0.3623 二.测试用例 ...
- ERP渠道活动管理(二十六)
设计意义: 渠道活动的方式方法多种多样.不过,大至可分为销售型促销与市场型促销(一般来说,销售型促销以完成销售额为唯一目的,以奖励返点为唯一手段,以增大经销商库存为最终结果,短期行为明显.而市场型促销 ...
- Android笔记:管理所有活动
以关闭所有活动为例 public class ActivityCollector { public static List<Activity> activities = new Array ...
- 谈谈如何用eoLinker管理各类API接口及分享API接口管理小技巧教程
在前后端分离的开发模式下,前后端往往需要接口文档来进行交互.我的上一篇随笔中已经写到用传统的文档写接口时,由于需求经常变动,接口文档也会随之变动.一开始,某接口信息已经写入文档,但后期因为需求变动,发 ...
- Vue之状态管理(vuex)与接口调用
Vue之状态管理(vuex)与接口调用 一,介绍与需求 1.1,介绍 1,状态管理(vuex) Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式.它采用集中式存储管理应用的所有组件的状态 ...
- 电商管理后台 API 接口文档
1. 电商管理后台 API 接口文档 1.1. API V1 接口说明 接口基准地址:http://127.0.0.1:8888/api/private/v1/ 服务端已开启 CORS 跨域支持 AP ...
- Ruby操作VBA的注意事项和技巧(1):乱码、获取VBA活动和非活动窗口的名称与路径、文件路径的智能拼接与截取(写入日期)
1.VBA编辑器复制粘贴出来的代码乱码 解决方法:切换到中文输入模式再复制出来就行了 2.获取VBA活动和非活动窗口的名称与路径 Dim wbpath, filename As String ...
- git(工作区,暂存区,管理修改,撤销修改,删除文件)
工作区和暂存区 984次阅读 Git和其他版本控制系统如SVN的一个不同之处就是有暂存区的概念. 先来看名词解释. 工作区(Working Directory) 就是你在电脑里能看到的目录,比如我的l ...
- git教程:管理修改
转载:管理修改 现在,假定你已经完全掌握了暂存区的概念.下面,我们要讨论的就是,为什么Git比其他版本控制系统设计得优秀,因为Git跟踪并管理的是修改,而非文件. 你会问,什么是修改?比如你新增了一行 ...
- Linux 下修改网卡接口名
Linux下修改网卡接口名 by:授客 QQ:1033553122 (测试环境:CentOS-6.0-x86_64-bin-DVD1.iso+Vmware) 作用 可以用于解决类似如下Device n ...
随机推荐
- Chrome 护眼模式 - 黑暗模式 - 夜眼(Night Eye) 插件
Chrome 地址栏里输入: chrome://extensions/ 打开插件商城:
- Go--Println、Printf区别
Println:打印字符串.变量: 同函数输出多项,之间存在空格 不同函数输出自动换行 Printf:打印需要格式化的字符串,可以输出字符串类型的变量:不可以输出整型变量和整型 同函数 ...
- 【每日一题】36. 小AA的数列 (二进制DP)
补题链接:Here 算法涉及:位运算,DP 这道题想了很久但实在没想什么巧妙的解法,暴力的代码就不放,这里引用Kur1su 的思路 异或问题优先考虑二进制位,对于这个问题,我们需要考虑偶数长度的区间, ...
- 第六届蓝桥杯C++A组 A~F题题解
蓝桥杯历年国赛真题汇总:Here 1.方格填数 在2行5列的格子中填入1到10的数字. 要求: 相邻的格子中的数,右边的大于左边的,下边的大于上边的. 如[图1.png]所示的2种,就是合格的填法. ...
- Nginx 代理后,打开新窗口,报404,开发环境下没有问题
解决办法: router/index.js文件中, 将 router 的 mode 属性设置为 hash,不要使用 history
- 【内核】深入分析内核panic(三)--内核错误处理流程
1 内核错误处理方式 当内核出现致命错误时,只要cpu还能正常运行,那么最重要的就是向用户输出详细的错误信息,以及保存问题出现时的错误现场.以上致命错误可包含以下两种类型: (1)硬件能检测到的错误, ...
- 小微信小程序开发相关网站
微信公众平台 https://mp.weixin.qq.com/ 开发者官方文档 https://developers.weixin.qq.com/miniprogram/dev/framework/
- .NET CORE实战项目之CMS 部署篇 思维导图
.NET Core实战项目之CMS 第十七章 CMS网站系统的部署 如何优雅的利用Windows服务来部署ASP.NET Core程序
- Spring AOP原来是这样实现的
Spring AOP 技术实现原理 在Spring框架中,AOP(面向切面编程)是通过代理模式和反射机制来实现的.本文将详细介绍Spring AOP的技术实现原理,包括JDK动态代理和CGLIB代理的 ...
- LaTex · overleaf | 使用技巧存档
如何使用 bibtex:http://www.taodudu.cc/news/show-5832925.html?action=onClick bibtex 格式:https://blog.csdn. ...