package com.xy.controller;
import com.xy.annotate.RestMappingController;
import com.xy.dto.DeviceInfoDto;
import com.xy.dto.MercMiniDeviceDto;
import com.xy.dto.be.MercDto;
import com.xy.entity.DeviceInfo;
import com.xy.enums.MercStatus;
import com.xy.service.DeviceInfoServiceImpl;
import com.xy.service.be.MercFeignService;
import com.xy.utils.MercAuthUtils;
import com.xy.utils.PageBean;
import com.xy.utils.R;
import com.xy.utils.enums.DictSonEnum;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import javax.validation.Valid;
import java.time.LocalDateTime;
/**
*
* 小程序-设备
*
*
* @author hechunping
* @since 2023/3/4
*/
@RestMappingController("merc-mini/device")
@AllArgsConstructor
@Api(tags = "小程序-设备")
public class MercMiniDeviceController {
private final MercFeignService mercFeignService;
private final DeviceInfoServiceImpl deviceInfoService;
@ApiOperation("商户设备首页统计")
@PostMapping("mercHomeStatistical")
public R mercHomeStatistical(@RequestBody @Valid DeviceInfoDto.MercHomeQueryDTO dto) {
dto.setMercId(MercAuthUtils.getMercId());
return deviceInfoService.mercHomeStatistical(dto);
}
@PostMapping("searchPage")
@ApiOperation("小程序商户设备搜索")
public R> mercDeviceSearchPage(@RequestBody DeviceInfoDto.Page page) {
page.setMercId(MercAuthUtils.getMercId());
return deviceInfoService.mercDeviceSearchPage(page);
}
@ApiOperation("小程序商户设备详情-设备信息")
@PostMapping("detail")
R detail(@RequestBody DeviceInfoDto.Obj obj) {
obj.setMercId(MercAuthUtils.getMercId());
return deviceInfoService.obj(obj);
}
@ApiOperation("小程序商户设备详情-数据统计")
@PostMapping("dataCount")
R dataCount(@RequestBody DeviceInfoDto.DeviceDataCountDTO dto) {
dto.setMercId(MercAuthUtils.getMercId());
return deviceInfoService.dataCount(dto);
}
@PostMapping("active")
@ApiOperation("激活设备")
public R active(@RequestBody MercMiniDeviceDto.Active active) {
DeviceInfo deviceInfo = deviceInfoService.getById(active.getDeviceId());
if (deviceInfo.getActiveState().equals(Integer.valueOf(DictSonEnum.DEVICE_ACTIVE_STATUS_1.getKey()))) {
return R.fail("机器已激活");
}
Long mercId = MercAuthUtils.getMercId();
//商户是否已通过审核
MercDto.Vo mercInfo = mercFeignService.obj(new MercDto.ListDTO().setId(mercId)).getData();
if (!mercInfo.getStatus().equals(String.valueOf(MercStatus.APPROVED.getCode()))) {
return R.fail("商户未通过审核");
}
//机器是否已授权给该商户
if (!deviceInfo.getMercId().equals(mercId)) {
return R.fail("机器未授权给商户");
}
//机器是否冻结
if (deviceInfo.getFreezeStatus().equals(Integer.valueOf(DictSonEnum.DEVICE_FREEZE_STATUS_2.getKey()))) {
return R.fail("机器已冻结");
}
//激活设备
DeviceInfo updateDeviceInfo = new DeviceInfo()
.setDeviceId(active.getDeviceId())
.setActiveState(Integer.valueOf(DictSonEnum.DEVICE_ACTIVE_STATUS_1.getKey()))
.setBusyState(Integer.valueOf(DictSonEnum.DEVICE_BUSY_STATUS_1.getKey()))
.setActiveTime(LocalDateTime.now())
.setShowStatus(true);
deviceInfoService.updateById(updateDeviceInfo);
return R.ok();
}
@PostMapping("modifyBusyStage")
@ApiOperation("运营状态修改")
public R modifyBusyStage(@RequestBody @Validated MercMiniDeviceDto.BusySate busySate) {
Long mercId = MercAuthUtils.getMercId();
Long deviceId = busySate.getDeviceId();
DeviceInfo updateDeviceInfo = new DeviceInfo()
.setDeviceId(deviceId)
.setMercId(mercId)
.setBusyState(busySate.getBusyState());
deviceInfoService.updateById(updateDeviceInfo);
return R.ok();
}
}