TienChin 活动管理-修改活动接口

简介: 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

2105804-20230922012224176-1717810897.png

@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 包当中自己改下


目录
相关文章
|
7月前
|
JSON 数据格式
基于 PAI-ArtLab 使用 ComfyUI 生成服装面料迁移
本文介绍了通过PAI ArtLab平台将服装印花迁移到模特穿上的实验过程。首先,用户需登录阿里云并完成实名认证,访问PAI ArtLab平台领取免费试用资源。接着,在ComfyUI(专享版)中加载Json工作流文件,上传衣服版型、印花和模特图片,添加提示词队列等待生成结果。最后,提供了常见问题解答,如语言切换和任务进度查看方法。
|
8月前
|
人工智能 Java 程序员
一文彻底拿下HarmonyOS实战开发之HMRouter实现跳转
本文介绍HarmonyOS页面跳转的两种方式:组件导航(Navigation)和页面路由(@ohos.router)。重点推荐使用组件导航,因其灵活性和多端部署能力更强。此外,还介绍了HMRouter,一个简化页面跳转的工具,支持自定义注解、路由拦截、动画配置等功能。通过详细步骤,展示了如何在项目中集成HMRouter并实现页面跳转,帮助开发者更高效地开发鸿蒙应用。君志所向,一往无前!关注我,带你起飞鸿蒙开发!
684 0
|
算法
以太网CSMA/CD协议:通信原理、碰撞检测与退避机制深度解析
以太网CSMA/CD协议:通信原理、碰撞检测与退避机制深度解析
1759 1
|
7月前
|
NoSQL Redis
Redis的数据淘汰策略有哪些 ?
Redis 提供 8 种数据淘汰策略: 淘汰易失数据(具有过期时间的数据) 1. volatile-lru(least recently used):从已设置过期时间的数据集(server.db[i].expires)中挑选最近最少使用的数据淘汰 2. volatile-lfu(least frequently used):从已设置过期时间的数据集(server.db[i].expires)中挑选最不经常使用的数据淘汰 3. volatile-ttl:从已设置过期时间的数据集(server.db[i].expires)中挑选将要过期的数据淘汰 4. volatile-random:从已设置过期
|
设计模式 开发框架 前端开发
循序渐进介绍基于CommunityToolkit.Mvvm 和HandyControl的WPF应用端开发(6) -- 窗口控件脏数据状态IsDirty的跟踪处理
循序渐进介绍基于CommunityToolkit.Mvvm 和HandyControl的WPF应用端开发(6) -- 窗口控件脏数据状态IsDirty的跟踪处理
|
10月前
|
API
icp备案查询免费API接口教程
该接口用于查询指定域名的ICP备案信息,支持POST或GET请求方式。请求时需提供用户ID、用户KEY及待查询的域名,可选参数为查询通道。响应中包含状态码、消息内容、备案号、备案主体、域名及审核时间等信息。示例中提供了GET和POST请求方式及返回数据样例。
1380 4
|
域名解析 存储 Linux
Mac M1 搭建虚拟机节点集群过程及软件分享
Mac M1 搭建虚拟机节点集群过程及软件分享
635 0
Elasticsearch 查看磁盘占用 查看指定索引磁盘占用
【7月更文挑战第2天】Elasticsearch 查看磁盘占用 查看指定索引磁盘占用
|
Windows
Windows——WMIC命令简单使用[windows获取private bytes]
Windows——WMIC命令简单使用[windows获取private bytes]
187 0
|
前端开发 JavaScript API
< 谈谈对 SPA(单页面应用)的理解 >
浅谈 SPA 相关知识,了解SPA相关优缺点 及 实现原理等。
243 1
< 谈谈对 SPA(单页面应用)的理解 >