设备会员

This commit is contained in:
Flow 2025-09-02 16:10:55 +08:00
parent a14881754a
commit 68d07ab13e
4 changed files with 85 additions and 0 deletions

View File

@ -144,4 +144,11 @@ public class DeviceController {
return success(true);
}
@PutMapping("/updateVip")
@Operation(summary = "更新设备会员信息(开通/续费)")
public CommonResult<Boolean> updateDeviceVip(@Valid @RequestBody DeviceVipReqVO vipReqVO) {
deviceService.updateDeviceVip(vipReqVO);
return success(true);
}
}

View File

@ -0,0 +1,35 @@
package cn.iocoder.yudao.module.system.controller.admin.device.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import javax.validation.constraints.*;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
@Schema(description = "管理后台 - 设备会员信息更新 Request VO")
@Data
public class DeviceVipReqVO {
@Schema(description = "设备编号", requiredMode = Schema.RequiredMode.REQUIRED)
@NotEmpty(message = "设备编号不能为空")
private String devicecode;
@Schema(description = "机构ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1001")
@NotNull(message = "机构ID不能为空")
private Integer orgid;
@Schema(description = "会员开始时间", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "会员开始时间不能为空")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime vipstarttime;
@Schema(description = "会员结束时间", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "会员结束时间不能为空")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime vipendtime;
@Schema(description = "是否会员", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
@NotNull(message = "是否会员不能为空")
private Integer isvip;
}

View File

@ -106,4 +106,11 @@ public interface DeviceService {
* 将过期的VIP设备的isvip字段设为0devicestatus设为2
*/
void processExpiredVipDevices();
/**
* 更新设备会员信息
*
* @param vipReqVO 会员信息更新参数
*/
void updateDeviceVip(@Valid DeviceVipReqVO vipReqVO);
}

View File

@ -221,4 +221,40 @@ public class DeviceServiceImpl implements DeviceService {
log.info("成功处理 {} 个过期的VIP设备", expiredVipDevices.size());
}
@Override
public void updateDeviceVip(DeviceVipReqVO vipReqVO) {
// 校验设备是否存在
DeviceDO device = deviceMapper.selectOne(DeviceDO::getDevicecode, vipReqVO.getDevicecode());
if (device == null) {
throw exception(DEVICE_NOT_EXISTS);
}
// 记录日志
log.info("开始更新设备 {} 的VIP信息机构ID: {}", vipReqVO.getDevicecode(), vipReqVO.getOrgid());
// 创建更新对象
DeviceDO updateObj = new DeviceDO();
updateObj.setOrgid(vipReqVO.getOrgid());
updateObj.setVipstarttime(vipReqVO.getVipstarttime());
updateObj.setVipendtime(vipReqVO.getVipendtime());
updateObj.setIsvip(vipReqVO.getIsvip());
updateObj.setUpdatetime(LocalDateTime.now());
// 如果设置为VIP同时更新设备状态为在线
if (vipReqVO.getIsvip() == 1) {
updateObj.setDevicestatus(1); // 1表示在线
}
// 使用 LambdaUpdateWrapper 进行精确更新
LambdaUpdateWrapper<DeviceDO> wrapper = new LambdaUpdateWrapper<>();
wrapper.eq(DeviceDO::getDevicecode, vipReqVO.getDevicecode());
int updateCount = deviceMapper.update(updateObj, wrapper);
if (updateCount > 0) {
log.info("设备 {} VIP信息更新成功", vipReqVO.getDevicecode());
} else {
log.error("设备 {} VIP信息更新失败", vipReqVO.getDevicecode());
}
}
}