设备会员
This commit is contained in:
parent
a14881754a
commit
68d07ab13e
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
@ -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;
|
||||
|
||||
}
|
||||
@ -106,4 +106,11 @@ public interface DeviceService {
|
||||
* 将过期的VIP设备的isvip字段设为0,devicestatus设为2
|
||||
*/
|
||||
void processExpiredVipDevices();
|
||||
|
||||
/**
|
||||
* 更新设备会员信息
|
||||
*
|
||||
* @param vipReqVO 会员信息更新参数
|
||||
*/
|
||||
void updateDeviceVip(@Valid DeviceVipReqVO vipReqVO);
|
||||
}
|
||||
@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user