bug调整:智享惠生活、体检管理

This commit is contained in:
2026-04-13 18:00:38 +08:00
parent 59f53af704
commit 607204910f
12 changed files with 43 additions and 18 deletions
@@ -16,6 +16,7 @@ import com.budwk.app.zhgh.activity.smartbenefits.service.SmartBenefitsActivitySt
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.nutz.dao.Chain;
import org.nutz.dao.Cnd; import org.nutz.dao.Cnd;
import org.nutz.dao.Dao; import org.nutz.dao.Dao;
import org.nutz.dao.Sqls; import org.nutz.dao.Sqls;
@@ -137,7 +138,11 @@ public class SmartBenefitsAdjustController {
SmartBenefitsUser oldSmartBenefitsUser = dao.fetch(SmartBenefitsUser.class, oldCnd); SmartBenefitsUser oldSmartBenefitsUser = dao.fetch(SmartBenefitsUser.class, oldCnd);
oldSmartBenefitsUser.setCourseId(newCourseId); oldSmartBenefitsUser.setCourseId(newCourseId);
oldSmartBenefitsUser.setSignUpTime(DateUtil.date()); oldSmartBenefitsUser.setSignUpTime(DateUtil.date());
dao.update(oldSmartBenefitsUser); dao.update(
SmartBenefitsUser.class,
Chain.make("courseId", newCourseId).add("signUpTime", DateUtil.date()),
Cnd.NEW().and("id","=",oldSmartBenefitsUser.getId())
);
//新的课程的信息,上课时间 //新的课程的信息,上课时间
List<SmartBenefitsActivityCourse> activityCourseList = dao.query(SmartBenefitsActivityCourse.class, Cnd.where("activityId", "=", activityId) List<SmartBenefitsActivityCourse> activityCourseList = dao.query(SmartBenefitsActivityCourse.class, Cnd.where("activityId", "=", activityId)
@@ -217,13 +217,15 @@ public class SmartBenefitsApplyController {
@ApiOperation("验证是否能报名") @ApiOperation("验证是否能报名")
@SaCheckPermission(value = {"smartbenefits.apply", "h5.smartbenefits.apply"}, mode = SaMode.OR) @SaCheckPermission(value = {"smartbenefits.apply", "h5.smartbenefits.apply"}, mode = SaMode.OR)
public Result validateSignUp(String courseId, public Result validateSignUp(String courseId,
@Param(value = "currentFamilyNumber") Integer currentFamilyNumber,String IsVerifyUserApply) { @Param(value = "currentFamilyNumber") Integer currentFamilyNumber,
String IsVerifyUserApply,
String userId) {
try { try {
lock.lock(); lock.lock();
if (StrUtil.isBlank(courseId)) { if (StrUtil.isBlank(courseId)) {
return Result.error("报名信息为空"); return Result.error("报名信息为空");
} }
userId = StringUtils.defaultIfBlank(userId, SecurityUtil.getUserId());
currentFamilyNumber = currentFamilyNumber != null ? currentFamilyNumber : 0; currentFamilyNumber = currentFamilyNumber != null ? currentFamilyNumber : 0;
SmartBenefitsCourse course = dao.fetch(SmartBenefitsCourse.class, courseId); SmartBenefitsCourse course = dao.fetch(SmartBenefitsCourse.class, courseId);
SmartBenefitsActivity activity = dao.fetch(SmartBenefitsActivity.class, course.getActivityId()); SmartBenefitsActivity activity = dao.fetch(SmartBenefitsActivity.class, course.getActivityId());
@@ -237,14 +239,14 @@ public class SmartBenefitsApplyController {
} }
//判断活动组别 //判断活动组别
int count = dao.count(ActivityUserScope.class, Cnd.where("groupId", "=", activity.getActivityGroupId()).and("userId", "=", SecurityUtil.getUserId())); int count = dao.count(ActivityUserScope.class, Cnd.where("groupId", "=", activity.getActivityGroupId()).and("userId", "=", userId));
if (count == 0) { if (count == 0) {
return Result.error("抱歉,您没有此次活动的权限"); return Result.error("抱歉,您没有此次活动的权限");
} }
//判断是否报名 //判断是否报名
if(StringUtils.defaultString(IsVerifyUserApply,"0").equals("0")){ if(StringUtils.defaultString(IsVerifyUserApply,"0").equals("0")){
boolean courseByUser = smartBenefitsActivityService.isSignCourseByUser(courseId, SecurityUtil.getUserId()); boolean courseByUser = smartBenefitsActivityService.isSignCourseByUser(courseId, userId);
if (courseByUser) { if (courseByUser) {
return Result.error("抱歉,您已经报名"); return Result.error("抱歉,您已经报名");
} }
@@ -257,7 +259,7 @@ public class SmartBenefitsApplyController {
} }
//判断活动限制 //判断活动限制
boolean signCourse = smartBenefitsActivityService.isSignCourse(course, activity); boolean signCourse = smartBenefitsActivityService.isSignCourse(course, activity, userId);
if (!signCourse) { if (!signCourse) {
if (activity.getRestrictLimit() != 3) { if (activity.getRestrictLimit() != 3) {
return Result.error("您选择的类型已达上限,不能再报该类型的了"); return Result.error("您选择的类型已达上限,不能再报该类型的了");
@@ -233,7 +233,7 @@ public class SmartBenefitsActivityStatisticsController {
excelCommonExportEntity.add(new ExcelExportEntity("性别", "sex", 20)); excelCommonExportEntity.add(new ExcelExportEntity("性别", "sex", 20));
excelCommonExportEntity.add(new ExcelExportEntity("手机号", "mobile", 20)); excelCommonExportEntity.add(new ExcelExportEntity("手机号", "mobile", 20));
excelCommonExportEntity.add(new ExcelExportEntity("生日", "birthday", 20)); excelCommonExportEntity.add(new ExcelExportEntity("生日", "birthday", 20));
excelCommonExportEntity.add(new ExcelExportEntity("报名时", "courseTime", 20)); excelCommonExportEntity.add(new ExcelExportEntity("报名时", "signUpTime", 20));
for (SmartBenefitsCourse c : courseList) { for (SmartBenefitsCourse c : courseList) {
String k = c.getCourseName(); String k = c.getCourseName();
@@ -99,7 +99,7 @@ public interface SmartBenefitsActivityService extends BaseService<SmartBenefitsA
* 还能报该类型的培训班吗 比如书画班最多报一项 健身班两项 * 还能报该类型的培训班吗 比如书画班最多报一项 健身班两项
* @return * @return
*/ */
boolean isSignCourse(SmartBenefitsCourse course, SmartBenefitsActivity activity); boolean isSignCourse(SmartBenefitsCourse course, SmartBenefitsActivity activity, String userId);
/** /**
* 当前用户是否已报过该培训班 * 当前用户是否已报过该培训班
@@ -12,6 +12,7 @@ import com.budwk.app.zhgh.activity.smartbenefits.service.SmartBenefitsActivitySe
import com.budwk.app.zhgh.activity.smartbenefits.service.SmartBenefitsActivityStatisticsService; import com.budwk.app.zhgh.activity.smartbenefits.service.SmartBenefitsActivityStatisticsService;
import com.google.common.collect.Sets; import com.google.common.collect.Sets;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.nutz.aop.interceptor.async.Async; import org.nutz.aop.interceptor.async.Async;
import org.nutz.aop.interceptor.ioc.TransAop; import org.nutz.aop.interceptor.ioc.TransAop;
import org.nutz.dao.Chain; import org.nutz.dao.Chain;
@@ -439,7 +440,8 @@ public class SmartBenefitsActivityServiceImpl extends BaseServiceImpl<SmartBenef
} }
@Override @Override
public boolean isSignCourse(SmartBenefitsCourse course, SmartBenefitsActivity activity) { public boolean isSignCourse(SmartBenefitsCourse course, SmartBenefitsActivity activity, String userId) {
userId = StringUtils.defaultIfBlank(userId, SecurityUtil.getUserId());
//培训班类型 //培训班类型
String courseType = course.getCourseType(); String courseType = course.getCourseType();
@@ -456,7 +458,7 @@ public class SmartBenefitsActivityServiceImpl extends BaseServiceImpl<SmartBenef
"""); """);
sql.setParam("courseType", courseType); sql.setParam("courseType", courseType);
sql.setParam("activityId", activity.getId()); sql.setParam("activityId", activity.getId());
sql.setParam("userId", SecurityUtil.getUserId()); sql.setParam("userId", userId);
int hasRegisterNum = count(sql); int hasRegisterNum = count(sql);
//第一种无限制报名 //第一种无限制报名
@@ -475,7 +477,7 @@ public class SmartBenefitsActivityServiceImpl extends BaseServiceImpl<SmartBenef
return hasRegisterNum < personMaxRegisterNum; return hasRegisterNum < personMaxRegisterNum;
} else if (activity.getRestrictLimit() == 3) { } else if (activity.getRestrictLimit() == 3) {
//第三种,限制报几个,不跟类型挂钩 //第三种,限制报几个,不跟类型挂钩
int aCount = dao().count(SmartBenefitsUser.class, Cnd.where("activityId", "=", activity.getId()).and("userId", "=", SecurityUtil.getUserId())); int aCount = dao().count(SmartBenefitsUser.class, Cnd.where("activityId", "=", activity.getId()).and("userId", "=", userId));
return aCount < activity.getLimitNum(); return aCount < activity.getLimitNum();
} }
return false; return false;
@@ -233,7 +233,7 @@ public class TrainSignUpActivityStatisticsController {
excelCommonExportEntity.add(new ExcelExportEntity("性别", "sex", 20)); excelCommonExportEntity.add(new ExcelExportEntity("性别", "sex", 20));
excelCommonExportEntity.add(new ExcelExportEntity("手机号", "mobile", 20)); excelCommonExportEntity.add(new ExcelExportEntity("手机号", "mobile", 20));
excelCommonExportEntity.add(new ExcelExportEntity("生日", "birthday", 20)); excelCommonExportEntity.add(new ExcelExportEntity("生日", "birthday", 20));
excelCommonExportEntity.add(new ExcelExportEntity("报名时", "courseTime", 20)); excelCommonExportEntity.add(new ExcelExportEntity("报名时", "signUpTime", 20));
for (TrainSignUpCourse c : courseList) { for (TrainSignUpCourse c : courseList) {
String k = c.getCourseName(); String k = c.getCourseName();
@@ -3,6 +3,7 @@ package com.budwk.app.zhgh.dayofficework.healthCheckup.h5controller;
import cn.dev33.satoken.annotation.SaCheckPermission; import cn.dev33.satoken.annotation.SaCheckPermission;
import cn.dev33.satoken.annotation.SaMode; import cn.dev33.satoken.annotation.SaMode;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.budwk.app.base.annotation.SLog; import com.budwk.app.base.annotation.SLog;
import com.budwk.app.base.page.Pagination; import com.budwk.app.base.page.Pagination;
@@ -153,6 +154,18 @@ public class H5HealthCheckupController {
if (money.compareTo(BigDecimal.ZERO) <= 0) { // 小于等于0 if (money.compareTo(BigDecimal.ZERO) <= 0) { // 小于等于0
return Result.error("金额必须大于0,当前医院没有符合您的选项!"); return Result.error("金额必须大于0,当前医院没有符合您的选项!");
} }
HealthCheckupUser healthCheckupUser = baseService.dao().fetch(HealthCheckupUser.class,
Cnd.NEW().and("projectId", "=", userSelection.getProjectId())
.and("userId", "=", SecurityUtil.getUserId()));
if (ObjectUtil.isEmpty(healthCheckupUser)) {
return Result.error("请确认您的身份信息是否无误!");
} else {
if (StringUtils.isBlank(healthCheckupUser.getPhone())) {
return Result.error("基础信息中,\"手机号\" 不能为空!");
} else if (StringUtils.isBlank(healthCheckupUser.getCard())) {
return Result.error("基础信息中,\"身份证号码\" 不能为空!");
}
}
if (StrUtil.isNotBlank(userSelection.getId())) { if (StrUtil.isNotBlank(userSelection.getId())) {
baseService.dao().clearLinks(userSelection, "companionList"); baseService.dao().clearLinks(userSelection, "companionList");
baseService.dao().delete(HealthCheckupUserSelection.class, userSelection.getId()); baseService.dao().delete(HealthCheckupUserSelection.class, userSelection.getId());
@@ -163,7 +163,8 @@ const applyForm = {
const res = await this.$axios.post("/platform/smartbenefits/apply/validateSignUp", { const res = await this.$axios.post("/platform/smartbenefits/apply/validateSignUp", {
courseId: this.formData.courseId, courseId: this.formData.courseId,
currentFamilyNumber: familyCount, currentFamilyNumber: familyCount,
IsVerifyUserApply: "1" IsVerifyUserApply: "1",
userId: this.formData.userId
}) })
return res.code === 0 return res.code === 0
}, },
@@ -63,8 +63,8 @@ layout("/layouts/platform.html"){
<el-table-column label="操作" width="200px"> <el-table-column label="操作" width="200px">
<template v-slot="{row}"> <template v-slot="{row}">
<el-button @click="openView(row)" size="mini" type="primary">调整</el-button> <el-button @click="openView(row)" size="mini" type="primary">调整</el-button>
<!-- <el-button type="primary" size="mini" @click="onSign(row)"--> <el-button type="primary" size="mini" @click="onSign(row)"
<!-- v-if="$auth.hasRoleOr(['SYSADMIN'])">代人报名</el-button>--> v-if="$auth.hasRoleOr(['SYSADMIN'])">代人报名</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@@ -145,7 +145,7 @@ layout("/layouts/platform.html"){
编辑备注 编辑备注
</el-button> </el-button>
<el-button @click="openEditHealthCheckup(row)" size="mini" <el-button @click="openEditHealthCheckup(row)" size="mini"
v-if="$auth.hasRoleOr(['SYSADMIN','HEALTH_ADMIN'])" v-if="$auth.hasRoleOr(['HEALTH_ADMIN'])"
type="primary"> type="primary">
编辑 编辑
</el-button> </el-button>
@@ -57,7 +57,7 @@ const applyForm = {
} }
}, },
components: { components: {
"train-dynamic-form": httpVueLoader("/components/module/smartBenefits/TrainDynamicForm.vue") "train-dynamic-form": httpVueLoader("/components/module/trainSignUp/TrainDynamicForm.vue")
}, },
methods: { methods: {
async onOpen(row, courseType) { async onOpen(row, courseType) {
@@ -436,10 +436,12 @@ layout("/layouts/platform_h5.html"){
userSelection: JSON.stringify(formData), userSelection: JSON.stringify(formData),
}).then(resp => { }).then(resp => {
if (resp.code === 0) { if (resp.code === 0) {
toast.clear(); toast.clear();
this.$toast.success(resp.msg) this.$toast.success(resp.msg)
this.historyBack() this.historyBack()
} }
}).catch(() => {
toast.clear();
}) })
}).catch(() => { }).catch(() => {
}); });