commit
This commit is contained in:
+32
-1
@@ -150,7 +150,38 @@ public class BirthdayBlessingServiceImpl extends BaseServiceImpl<Sys_user> imple
|
||||
|
||||
private Sql buildUserSql(String searchKeyword, String unionId, String unitId, String userState, String personType,
|
||||
String preparedBy, String employmentType, String birthdayStart, String birthdayEnd, boolean todayOnly) {
|
||||
Sql sql = Sqls.create("SELECT u.id, u.loginname, u.username, u.sex, u.birthday, u.mobile, u.unitName, u.unionName, u.userState, u.personType, u.preparedBy, DATEDIFF(CASE WHEN DATE_FORMAT(u.birthday, '%m-%d') >= DATE_FORMAT(CURDATE(), '%m-%d') THEN STR_TO_DATE(CONCAT(YEAR(CURDATE()), '-', DATE_FORMAT(u.birthday, '%m-%d')), '%Y-%m-%d') ELSE STR_TO_DATE(CONCAT(YEAR(CURDATE()) + 1, '-', DATE_FORMAT(u.birthday, '%m-%d')), '%Y-%m-%d') END, CURDATE()) AS daysUntilBirthday FROM vw_user u $condition");
|
||||
// 2 月 29 日仅按下一个实际闰年的 2 月 29 日计算,避免非闰年拼接无效日期导致倒计时为空。
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT u.id, u.loginname, u.username, u.sex,
|
||||
DATE_FORMAT(u.birthday, '%Y-%m-%d') AS birthday,
|
||||
u.mobile, u.unitName, u.unionName, u.userState, u.personType, u.preparedBy,
|
||||
DATEDIFF(
|
||||
CASE
|
||||
WHEN DATE_FORMAT(u.birthday, '%m-%d') = '02-29' THEN
|
||||
CASE
|
||||
WHEN (MOD(YEAR(CURDATE()), 400) = 0 OR (MOD(YEAR(CURDATE()), 4) = 0 AND MOD(YEAR(CURDATE()), 100) <> 0))
|
||||
AND DATE(CONCAT(YEAR(CURDATE()), '-02-29')) >= CURDATE()
|
||||
THEN DATE(CONCAT(YEAR(CURDATE()), '-02-29'))
|
||||
ELSE DATE(CONCAT(
|
||||
CASE
|
||||
WHEN MOD(YEAR(CURDATE()) + 1, 400) = 0 OR (MOD(YEAR(CURDATE()) + 1, 4) = 0 AND MOD(YEAR(CURDATE()) + 1, 100) <> 0) THEN YEAR(CURDATE()) + 1
|
||||
WHEN MOD(YEAR(CURDATE()) + 2, 400) = 0 OR (MOD(YEAR(CURDATE()) + 2, 4) = 0 AND MOD(YEAR(CURDATE()) + 2, 100) <> 0) THEN YEAR(CURDATE()) + 2
|
||||
WHEN MOD(YEAR(CURDATE()) + 3, 400) = 0 OR (MOD(YEAR(CURDATE()) + 3, 4) = 0 AND MOD(YEAR(CURDATE()) + 3, 100) <> 0) THEN YEAR(CURDATE()) + 3
|
||||
WHEN MOD(YEAR(CURDATE()) + 4, 400) = 0 OR (MOD(YEAR(CURDATE()) + 4, 4) = 0 AND MOD(YEAR(CURDATE()) + 4, 100) <> 0) THEN YEAR(CURDATE()) + 4
|
||||
WHEN MOD(YEAR(CURDATE()) + 5, 400) = 0 OR (MOD(YEAR(CURDATE()) + 5, 4) = 0 AND MOD(YEAR(CURDATE()) + 5, 100) <> 0) THEN YEAR(CURDATE()) + 5
|
||||
WHEN MOD(YEAR(CURDATE()) + 6, 400) = 0 OR (MOD(YEAR(CURDATE()) + 6, 4) = 0 AND MOD(YEAR(CURDATE()) + 6, 100) <> 0) THEN YEAR(CURDATE()) + 6
|
||||
WHEN MOD(YEAR(CURDATE()) + 7, 400) = 0 OR (MOD(YEAR(CURDATE()) + 7, 4) = 0 AND MOD(YEAR(CURDATE()) + 7, 100) <> 0) THEN YEAR(CURDATE()) + 7
|
||||
ELSE YEAR(CURDATE()) + 8
|
||||
END, '-02-29'))
|
||||
END
|
||||
WHEN DATE_FORMAT(u.birthday, '%m-%d') >= DATE_FORMAT(CURDATE(), '%m-%d')
|
||||
THEN STR_TO_DATE(CONCAT(YEAR(CURDATE()), '-', DATE_FORMAT(u.birthday, '%m-%d')), '%Y-%m-%d')
|
||||
ELSE STR_TO_DATE(CONCAT(YEAR(CURDATE()) + 1, '-', DATE_FORMAT(u.birthday, '%m-%d')), '%Y-%m-%d')
|
||||
END,
|
||||
CURDATE()
|
||||
) AS daysUntilBirthday
|
||||
FROM vw_user u $condition
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.and("u.member", "=", 1).and("u.disabled", "=", 0).and("u.birthday", "is not", null);
|
||||
if (StrUtil.isNotBlank(searchKeyword)) {
|
||||
|
||||
Reference in New Issue
Block a user