优化短信发送策略:

1、被删除的用户不发短信
2、被禁用的用户不发短信
3、关掉开关的用户不发短信
4、过期用户不发短信
5、管理员用户不发短信
This commit is contained in:
liuchengqian 2022-06-03 18:52:10 +08:00
parent 68b514d815
commit ea418a7cfa
5 changed files with 45 additions and 9 deletions

View File

@ -2,7 +2,6 @@ package com.xkrs.controller;
import com.xkrs.common.encapsulation.PromptMessageEnum; import com.xkrs.common.encapsulation.PromptMessageEnum;
import com.xkrs.common.tool.TokenUtil; import com.xkrs.common.tool.TokenUtil;
import com.xkrs.dao.CountyCodeWeiXinDao;
import com.xkrs.dao.FirePointDao; import com.xkrs.dao.FirePointDao;
import com.xkrs.dao.ShanDongFirePointDao; import com.xkrs.dao.ShanDongFirePointDao;
import com.xkrs.dao.SysUserDao; import com.xkrs.dao.SysUserDao;
@ -58,9 +57,6 @@ public class FirePointController {
@Resource @Resource
private StreetService streetService; private StreetService streetService;
@Resource
private CountyCodeWeiXinDao countyCodeWeiXinDao;
/** /**
* 添加火点数据 * 添加火点数据
* *

View File

@ -1,6 +1,7 @@
package com.xkrs.controller; package com.xkrs.controller;
import com.xkrs.common.encapsulation.PromptMessageEnum; import com.xkrs.common.encapsulation.PromptMessageEnum;
import com.xkrs.dao.CountyCodeWeiXinDao;
import com.xkrs.dao.SettingDao; import com.xkrs.dao.SettingDao;
import com.xkrs.model.entity.SettingEntity; import com.xkrs.model.entity.SettingEntity;
import com.xkrs.model.qo.SettingQo; import com.xkrs.model.qo.SettingQo;
@ -27,6 +28,9 @@ public class SettingController {
@Resource @Resource
private SettingDao settingDao; private SettingDao settingDao;
@Resource
private CountyCodeWeiXinDao countyCodeWeiXinDao;
@Transactional(rollbackOn = Exception.class) @Transactional(rollbackOn = Exception.class)
@PostMapping("/updateswitchstate") @PostMapping("/updateswitchstate")
public String updateSwitchState(@RequestBody SettingQo settingQo) { public String updateSwitchState(@RequestBody SettingQo settingQo) {

View File

@ -2,6 +2,7 @@ package com.xkrs.dao;
import com.xkrs.model.entity.RelRoleAuthorityEntity; import com.xkrs.model.entity.RelRoleAuthorityEntity;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query; import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param; import org.springframework.data.repository.query.Param;
@ -10,13 +11,18 @@ import java.util.List;
/** /**
* @author XinYi Song * @author XinYi Song
*/ */
public interface RelRoleAuthorityDao extends JpaRepository<RelRoleAuthorityEntity,Long> { public interface RelRoleAuthorityDao extends JpaRepository<RelRoleAuthorityEntity, Long>, JpaSpecificationExecutor<RelRoleAuthorityEntity> {
/** /**
* 根据userId查询出权限的id * 根据userId查询出权限的id
*
* @param userId * @param userId
* @return * @return
*/ */
@Query(value = "select authority_id from rel_role_authority where user_id = ?",nativeQuery = true) @Query(value = "select authority_id from rel_role_authority where user_id = ?", nativeQuery = true)
List<Integer> selectAuthorityByUserId(@Param("userId") Integer userId); List<Integer> selectAuthorityByUserId(@Param("userId") Integer userId);
@Query(value = "SELECT * FROM rel_role_authority WHERE authority_id = ?1", nativeQuery = true)
List<RelRoleAuthorityEntity> selectByAuthorityId(Integer authorityId);
} }

View File

@ -2,9 +2,11 @@ package com.xkrs.dao;
import com.xkrs.model.entity.RelUserRoleEntity; import com.xkrs.model.entity.RelUserRoleEntity;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
/** /**
* @author XinYi Song * @author XinYi Song
*/ */
public interface RelUserRoleDao extends JpaRepository<RelUserRoleEntity,Long> { public interface RelUserRoleDao extends JpaRepository<RelUserRoleEntity, Long>, JpaSpecificationExecutor<RelUserRoleEntity> {
} }

View File

@ -95,6 +95,9 @@ public class FirePointServiceImpl implements FirePointService {
@Resource @Resource
private CountyCodeWeiXinDao countyCodeWeiXinDao; private CountyCodeWeiXinDao countyCodeWeiXinDao;
@Resource
private RelRoleAuthorityDao relRoleAuthorityDao;
/** /**
* 添加火点信息 * 添加火点信息
* *
@ -383,17 +386,27 @@ public class FirePointServiceImpl implements FirePointService {
if (sysUserList.isEmpty()) { if (sysUserList.isEmpty()) {
return; return;
} }
List<RelRoleAuthorityEntity> administratorList = relRoleAuthorityDao.selectByAuthorityId(1);
List<String> telephoneList = new ArrayList<>(); List<String> telephoneList = new ArrayList<>();
for (SysUserEntity sysUser : sysUserList) { for (SysUserEntity sysUser : sysUserList) {
try { try {
String countyCode = sysUser.getCountyCode(); String countyCode = sysUser.getCountyCode();
String startCountyCode = getStartCountyCode(countyCode); String startCountyCode = getStartCountyCode(countyCode);
if (firePointEntity.getStreetCode().startsWith(startCountyCode)) { if (firePointEntity.getStreetCode().startsWith(startCountyCode)) {
if (sysUser.getReceiveSms() != 1) { if (sysUser.getDeleteFlag() != 0) {//被删除的用户不发短信
continue;
}
if (sysUser.getActiveFlag() != 0) {//被禁用的用户不发短信
continue;
}
if (sysUser.getReceiveSms() != 1) {//关掉开关的用户不发短信
continue; continue;
} }
LocalDateTime sysUserOverDateTime = DateTimeUtil.stringToDateTimeFormatter(sysUser.getOverTime(), DateTimeUtil.COMMON_FORMATTER_DATETIME); LocalDateTime sysUserOverDateTime = DateTimeUtil.stringToDateTimeFormatter(sysUser.getOverTime(), DateTimeUtil.COMMON_FORMATTER_DATETIME);
if (sysUserOverDateTime.isBefore(DateTimeUtil.getNowTime())) { if (sysUserOverDateTime.isBefore(DateTimeUtil.getNowTime())) {//过期用户不发短信
continue;
}
if (isAdministrator(administratorList, sysUser)) {//管理员用户不发短信
continue; continue;
} }
telephoneList.add("86" + sysUser.getUserName()); telephoneList.add("86" + sysUser.getUserName());
@ -409,6 +422,21 @@ public class FirePointServiceImpl implements FirePointService {
} }
} }
/**
* 判断是否是管理员
*/
private boolean isAdministrator(List<RelRoleAuthorityEntity> administratorList, SysUserEntity sysUser) {
if (administratorList == null || administratorList.size() == 0) {
return false;
}
for (RelRoleAuthorityEntity administrator : administratorList) {
if (administrator.getUserId() == sysUser.getId()) {
return true;
}
}
return false;
}
private String getStartCountyCode(String countyCode) { private String getStartCountyCode(String countyCode) {
try { try {
String temp = countyCode; String temp = countyCode;