Jelajahi Sumber

feat: 小程序年满60周岁提醒

lixuesong 1 tahun lalu
induk
melakukan
b10262fc1d

+ 5 - 1
db/v2.0/230906.sql

@@ -1,2 +1,6 @@
 alter table sys_user
-    add sign_agreement varchar(1024) null comment '小程序签署协议信息';
+    add sign_agreement varchar(1024) null comment '小程序签署协议信息';
+
+
+alter table sys_user
+    add age_reminder tinyint default 1 null comment '年龄超60周岁提醒';

+ 5 - 0
hnqz-upms/hnqz-upms-api/src/main/java/com/qunzhixinxi/hnqz/admin/api/entity/SysUser.java

@@ -291,4 +291,9 @@ public class SysUser implements Serializable {
 	 */
 	private String signAgreement;
 
+	/**
+	 * 是否提醒年龄超60周岁
+	 */
+	private Boolean ageReminder;
+
 }

+ 5 - 0
hnqz-upms/hnqz-upms-api/src/main/java/com/qunzhixinxi/hnqz/admin/api/vo/UserVO.java

@@ -275,4 +275,9 @@ public class UserVO implements Serializable {
 	 */
 	private String signAgreement;
 
+	/**
+	 * 是否提醒年龄超60周岁
+	 */
+	private Boolean ageReminder;
+
 }

+ 57 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/ApiController.java

@@ -4,6 +4,7 @@ import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.bean.copier.CopyOptions;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.io.FileUtil;
 import cn.hutool.core.lang.Assert;
@@ -897,6 +898,11 @@ public class ApiController {
                 }
 			}
 
+			// 超60周岁是否提醒
+			String ageReminderInfo = this.sixtyYearsOldReminder(sysU);
+			mapOne.put("ageReminder", Boolean.TRUE.equals(sysU.getAgeReminder()) && StrUtil.isNotBlank(ageReminderInfo));
+			mapOne.put("ageReminderInfo", ageReminderInfo);
+
 			// 获取发起认证的令牌
 			String randomStr;
 
@@ -4644,4 +4650,55 @@ public class ApiController {
 
 		return R.ok(sysUserService.updateById(user));
 	}
+
+	/**
+	 * 关闭年满60周岁提醒
+	 *
+	 * @return {@link R}<{@link Boolean}>
+	 */
+	@PostMapping("/stop-sixtyyearsold-reminder")
+	public R<Boolean> stopSixtyYearsOldReminder() {
+		Integer userId = SecurityUtils.getUser().getId();
+		log.info("关闭年满60周岁提醒:userId={}", userId);
+
+		SysUser user = new SysUser();
+		user.setUserId(userId);
+		user.setAgeReminder(Boolean.FALSE);
+		user.setUpdateTime(LocalDateTime.now());
+
+		return R.ok(sysUserService.updateById(user));
+	}
+
+	/**
+	 * 年龄超60周岁提醒
+	 *
+	 * @param userVO
+	 * @return {@link String}
+	 */
+	private String sixtyYearsOldReminder(UserVO userVO) {
+		String idCardNumber = userVO.getIdCardNumber();
+		if (IdcardUtil.isValidCard(idCardNumber)) {
+			// 当前日期
+			Calendar nowCal = Calendar.getInstance();
+			// 基于生日的日期,60周岁提前半年的时间
+			Calendar halfYearCal = IdcardUtil.getBirthDate(idCardNumber).toCalendar();
+			halfYearCal.add(Calendar.YEAR, 59);
+			halfYearCal.add(Calendar.MONTH, 6);
+			// 基于生日的日期,60周岁的时间
+			Calendar sixtyYearsOldYearCal = IdcardUtil.getBirthDate(idCardNumber).toCalendar();
+			sixtyYearsOldYearCal.add(Calendar.YEAR, 60);
+
+			if (sixtyYearsOldYearCal.compareTo(nowCal) > 0 && halfYearCal.compareTo(nowCal) <= 0) {
+				// 提前半年提醒,不满60周岁,但距离60周岁在半年内
+				return String.format("平台要求人员年龄在年满18岁未满60岁之间,您的账号将于%s年%s月%s日被停用,停用后将无法做任务或者资金结算,请知悉!",
+						sixtyYearsOldYearCal.get(Calendar.YEAR), sixtyYearsOldYearCal.get(Calendar.MONTH) + 1, sixtyYearsOldYearCal.get(Calendar.DAY_OF_MONTH));
+			} else if (sixtyYearsOldYearCal.compareTo(nowCal) <= 0) {
+				// 已超过60周岁
+				return String.format("您的账号已于%s年%s月%s日因年龄超限被停用,请知悉",
+						sixtyYearsOldYearCal.get(Calendar.YEAR), sixtyYearsOldYearCal.get(Calendar.MONTH) + 1, sixtyYearsOldYearCal.get(Calendar.DAY_OF_MONTH));
+			}
+		}
+
+		return null;
+	}
 }

+ 4 - 1
hnqz-upms/hnqz-upms-biz/src/main/resources/mapper/SysUserMapper.xml

@@ -102,6 +102,8 @@
 		<result column="user_type" property="userType"/>
 		<result column="bank_phone" property="bankPhone"/>
 		<result column="bank_card_number" property="bankCardNumber"/>
+		<result column="sign_agreement" property="signAgreement"/>
+		<result column="age_reminder" property="ageReminder"/>
 		<collection property="roleList" ofType="com.qunzhixinxi.hnqz.admin.api.entity.SysRole"
 					select="com.qunzhixinxi.hnqz.admin.mapper.SysRoleMapper.listRolesByUserId" column="user_id">
 		</collection>
@@ -643,7 +645,8 @@
 	  	u.bank_phone,
 	  	u.bank_name,
 		u.tax_helper_agreement_signature,
-		u.sign_agreement
+		u.sign_agreement,
+		u.age_reminder
 		FROM
 		sys_user  u
 		LEFT JOIN sys_dept  d ON d.dept_id = u.dept_id