TienChin 活动管理-修改活动接口
1.TienChin 开篇-运行 RuoYiVue2.TienChin 代码格式化-项目结构大改造3.TienChin 项目改造完善&项目结构分析4.TienChin 验证码响应结果分析&验证码生成接口分析5.TienChin 运行 RuoYi-Vue36.TienChin-系统功能介绍7.TienChin 新建业务菜单8.TienChin 创建菜单页面9.TienChin 引入 MyBatisPlus10.TienChin 渠道管理-表创建11.TienChin 渠道管理-渠道类型12.TienChin 渠道管理-工程创建13.TienChin 渠道管理-查看渠道接口14.TienChin 渠道管理-前端展示渠道信息15.TienChin 渠道管理-配置字典常量16.TienChin 渠道管理-字典原理分析17.TienChin 渠道管理-权限分配18.TienChin 渠道管理-添加渠道19.TienChin 渠道管理-配置校验失败信息20.TienChin 渠道管理-添加渠道页面开发21.TienChin 渠道管理-更新渠道接口开发22.TienChin 渠道管理-删除渠道23.TienChin 渠道管理-渠道搜索24.TienChin 渠道管理-渠道导出25.TienChin 渠道管理-渠道导入26.TienChin 渠道管理-渠道页面完善27.TienChin 活动管理-准备工作28.TienChin 活动管理-工程创建29.TienChin 活动管理-活动列表展示30.TienChin 活动管理-活动状态完善31.TienChin 活动管理-添加活动页面32.TienChin 活动管理-添加活动接口33.TienChin 活动管理-设置活动的默认状态34.TienChin 活动管理-完成添加活动
35.TienChin 活动管理-修改活动接口
36.TienChin 活动管理-修改活动37.TienChin 活动管理-删除活动38.TienChin 活动管理-搜索活动39.TienChin 活动管理-活动导出40.TienChin-课程管理-数据表创建41.TienChin-课程管理-创建工程42.TienChin-课程管理-配置课程字典43.TienChin-课程管理-展示课程列表44.TienChin-课程管理-添加课程接口45.TienChin-课程管理-添加课程页面46.TienChin-课程管理-课程更新接口47.TienChin-课程管理-删除课程48.TienChin-课程管理-课程搜索49.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 包当中自己改下
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具