123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195 |
- package com.szwl.controller;
- import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
- import com.baomidou.mybatisplus.core.toolkit.Wrappers;
- import com.szwl.constant.ResponseCodesEnum;
- import com.szwl.model.bo.R;
- import com.szwl.model.bo.ResponseModel;
- import com.szwl.model.entity.TAdmin;
- import com.szwl.model.entity.TAlarmClean;
- import com.szwl.model.entity.TEquipment;
- import com.szwl.model.param.AlarmCleanParam;
- import com.szwl.model.utils.YunPianSms;
- import com.szwl.service.TAdminService;
- import com.szwl.service.TAlarmCleanService;
- import com.szwl.service.TEquipmentService;
- import com.szwl.util.IDGenerator;
- import io.swagger.annotations.ApiModelProperty;
- import io.swagger.annotations.ApiOperation;
- import org.apache.commons.lang3.StringUtils;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.web.bind.annotation.*;
- import java.util.Date;
- import java.util.Objects;
- import java.util.concurrent.TimeUnit;
- /**
- * <p>
- * 前端控制器
- * </p>
- *
- * @author wuhs
- * @since 2024-04-26
- */
- @RestController
- @RequestMapping("/tAlarmClean")
- public class TAlarmCleanController {
- @Autowired
- TAlarmCleanService alarmCleanService;
- @Autowired
- TEquipmentService equipmentService;
- @Autowired
- TAdminService adminService;
- /**
- * 超过7d,且做糖大于等于15个,发送提醒,重置时间和数量
- * 超过7d, 但做糖小于15个,不发提醒,仅重置时间
- * 不超过7d,做糖量大于等于200,发提醒,重置时间和数量
- * 国内发短信,海外发邮件
- */
- @ApiOperation("清洗提醒")
- @PostMapping("/alarmClean")
- public ResponseModel<TAlarmClean> alarmClean(@RequestBody AlarmCleanParam params) {
- String clientId = params.getClientId();
- Integer makeCandyNum = params.getMakeCandyNum();
- String isOversea = params.getIsOversea();
- // 根据 clientId 查找清洗提醒信息
- LambdaQueryWrapper<TAlarmClean> queryWrapper = Wrappers.lambdaQuery();
- queryWrapper.eq(TAlarmClean::getClientId, clientId);
- TAlarmClean alarmClean = alarmCleanService.getOne(queryWrapper);
- Integer candyNum = null;
- // 首次调用
- if (Objects.isNull(alarmClean)) {
- TAlarmClean tAlarmClean = new TAlarmClean();
- LambdaQueryWrapper<TEquipment> qw = Wrappers.lambdaQuery();
- qw.eq(TEquipment::getClientId, clientId);
- TEquipment equipment = equipmentService.getOne(qw);
- Long equipmentId = equipment.getId();
- Long adminId = equipment.getAdminId();
- LambdaQueryWrapper<TAdmin> wrapper = Wrappers.lambdaQuery();
- wrapper.eq(TAdmin::getId, adminId);
- TAdmin admin = adminService.getOne(wrapper);
- String phone = admin.getPhone();
- String email = admin.getEmail();
- tAlarmClean.setId(IDGenerator.commonID());
- tAlarmClean.setClientId(clientId);
- tAlarmClean.setEquipmentId(equipmentId);
- tAlarmClean.setAdminId(adminId);
- tAlarmClean.setPhone(phone);
- tAlarmClean.setEmail(email);
- tAlarmClean.setIsOversea(isOversea);
- tAlarmClean.setLastSendTime(new Date());
- tAlarmClean.setCandyNum(makeCandyNum);
- alarmCleanService.save(tAlarmClean);
- } else {
- candyNum = alarmClean.getCandyNum();
- candyNum += makeCandyNum;
- alarmClean.setCandyNum(candyNum);
- alarmCleanService.saveOrUpdate(alarmClean);
- }
- LambdaQueryWrapper<TAlarmClean> wrapper = Wrappers.lambdaQuery();
- wrapper.eq(TAlarmClean::getClientId, clientId);
- TAlarmClean alarmCleanOne = alarmCleanService.getOne(wrapper);
- Date lastSendTime = alarmCleanOne.getLastSendTime();
- Integer candyNumNow = alarmCleanOne.getCandyNum();
- switch (isOversea) {
- case "0": { // 国内
- String phone = alarmCleanOne.getPhone();
- if (StringUtils.isEmpty(phone)) {
- return R.fail(ResponseCodesEnum.A0100, "手机号不存在");
- }
- if (moreThan7d(lastSendTime)) { // 超过7d
- if (candyNumNow >= 15) { // 做糖>=15个
- // 发送短信
- alarmCleanService.sendNote(phone, clientId);
- // 重置时间
- alarmCleanOne.setLastSendTime(new Date());
- // 清零
- alarmCleanOne.setCandyNum(0);
- } else {
- // 仅重置时间
- alarmCleanOne.setLastSendTime(new Date());
- }
- alarmCleanService.saveOrUpdate(alarmCleanOne);
- } else { // 不超过7d
- if (candyNumNow >= 200) { // 做糖>=200个
- // 发送短信
- alarmCleanService.sendNote(phone, clientId);
- // 重置时间
- alarmClean.setLastSendTime(new Date());
- // 清零
- alarmClean.setCandyNum(0);
- alarmCleanService.saveOrUpdate(alarmCleanOne);
- }
- }
- break;
- }
- case "1": { // 海外
- String email = alarmCleanOne.getEmail();
- if (StringUtils.isEmpty(email)) {
- return R.fail(ResponseCodesEnum.A0001, "邮箱地址不存在");
- }
- if (moreThan7d(lastSendTime)) {
- if (candyNumNow >= 15) {
- // 发送邮件
- alarmCleanService.sendEmail(email, clientId);
- // 重置时间
- alarmCleanOne.setLastSendTime(new Date());
- // 清零
- alarmCleanOne.setCandyNum(0);
- } else {
- // 仅重置时间
- alarmCleanOne.setLastSendTime(new Date());
- }
- alarmCleanService.saveOrUpdate(alarmCleanOne);
- } else { // 不超过7d
- if (candyNumNow >= 200) { // 做糖>=200个
- // 发送邮件
- alarmCleanService.sendEmail(email, clientId);
- // 重置时间
- alarmCleanOne.setLastSendTime(new Date());
- // 清零
- alarmCleanOne.setCandyNum(0);
- alarmCleanService.saveOrUpdate(alarmCleanOne);
- }
- }
- break;
- }
- default:
- return R.fail(ResponseCodesEnum.A0001, "地区参数有误" + isOversea);
- }
- return R.ok();
- }
- /**
- * 是否超过7天
- */
- public Boolean moreThan7d (Date lastSendTime) {
- Date now = new Date();
- // 计算两个日期之间的时间差,单位为毫秒
- long timeDifference = now.getTime() - lastSendTime.getTime();
- // 将时间差转换为小时
- long hoursDifference = TimeUnit.HOURS.convert(timeDifference, TimeUnit.MILLISECONDS);
- // 判断时间差是否大于168小时(7天)
- return hoursDifference >= 168;
- }
- }
|