# Conflicts:
#	src/main/resources/views/platform/zhgh/staffbenefit/dsznfmtx/apply/index.html
This commit is contained in:
=
2025-09-19 09:39:00 +08:00
183 changed files with 4782 additions and 2271 deletions
@@ -347,11 +347,14 @@ public class FamilyActivityApplyController {
public Result doSignUp(FamilyUser familyUser) {
try {
lock.lock();
FamilyActivity activity = dao.fetch(FamilyActivity.class, familyUser.getActivityId());
if(Lang.isEmpty(familyUser.getMobileColumnsValue())) {
return Result.error(99,"请填写" + activity.getKeyWord() + "信息");
}
boolean courseByUser = familyActivityService.isSignCourseByUser(familyUser.getCourseId(), SecurityUtil.getUserId());
if(courseByUser) {
return Result.error(99,"您已报过该活动");
}
FamilyActivity activity = familyActivityService.fetch(familyUser.getActivityId());
boolean validFamilyCount = familyActivityService.validFamilyCount(familyUser);
if(validFamilyCount) {
return Result.error(99,activity.getKeyWord() + "人数最多为" + activity.getFamilyMaxCount());
@@ -98,7 +98,7 @@ public class FamilyActivityStatisticsServiceImpl extends BaseServiceImpl<FamilyU
family_user tsuu
LEFT JOIN `vw_user` u ON u.id = tsuu.userId
$condition
ORDER BY FIELD( tsuu.state, 1, 3, 2, 4 ),u.unionid desc, u.unitid desc
ORDER BY FIELD( tsuu.state, 1, 3, 2, 4 ),tsuu.signUpTime desc,u.unionid desc, u.unitid desc
""");
Cnd cnd = Cnd.NEW();
cnd.andEX("tsuu.courseId", "=", courseId);
@@ -150,7 +150,7 @@ public class FamilyActivityStatisticsServiceImpl extends BaseServiceImpl<FamilyU
family_user tsuu
LEFT JOIN `vw_user` u ON u.id = tsuu.userId
$condition
ORDER BY FIELD( tsuu.state, 1, 3, 2, 4 ),u.unionid desc, u.unitid desc
ORDER BY FIELD( tsuu.state, 1, 3, 2, 4 ),tsuu.signUpTime desc,u.unionid desc, u.unitid desc
""");
Cnd cnd = Cnd.NEW();
cnd.andEX("tsuu.courseId", "=", courseId);
@@ -97,7 +97,7 @@ public class TrainSignUpActivityStatisticsServiceImpl extends BaseServiceImpl<Tr
train_sign_up_user tsuu
LEFT JOIN `vw_user` u ON u.id = tsuu.userId
$condition
ORDER BY FIELD( tsuu.state, 1, 3, 2, 4 ),u.unionid desc, u.unitid desc
ORDER BY FIELD( tsuu.state, 1, 3, 2, 4 ),tsuu.signUpTime desc,u.unionid desc, u.unitid desc
""");
Cnd cnd = Cnd.NEW();
cnd.andEX("tsuu.courseId", "=", courseId);
@@ -143,7 +143,7 @@ public class TrainSignUpActivityStatisticsServiceImpl extends BaseServiceImpl<Tr
train_sign_up_user tsuu
LEFT JOIN `vw_user` u ON u.id = tsuu.userId
$condition
ORDER BY FIELD( tsuu.state, 1, 3, 2, 4 ),u.unionid desc, u.unitid desc
ORDER BY FIELD( tsuu.state, 1, 3, 2, 4 ),tsuu.signUpTime desc,u.unionid desc, u.unitid desc
""");
Cnd cnd = Cnd.NEW();
cnd.andEX("tsuu.courseId", "=", courseId);
@@ -75,7 +75,12 @@ public class ActivityWorksCollectionReadController {
up.*,
co.NAME AS activityName,
su.typeName AS subjectName,
wo.worksTypeName AS worksName
wo.worksTypeName AS worksName,
(
SELECT COUNT(*)
FROM activity_works_collection_upload_like_num likeNum
WHERE likeNum.uploadId = up.id
) AS num
from
activity_works_collection_upload up
LEFT JOIN activity_works_collection co ON up.activityId = co.id
@@ -99,6 +104,7 @@ public class ActivityWorksCollectionReadController {
if(!AuthUtil.hasRoleOr(RoleConstant.SYSADMIN.name(), RoleConstant.SCHOOL_UNION_ADMIN.name())) {
cnd.and("up.unionId", "=", SecurityUtil.getUnionId());
}
cnd.desc("up.createdAt");
sql.setCondition(cnd);
Pagination pagination = baseService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
return Result.success(pagination);
@@ -121,7 +127,12 @@ public class ActivityWorksCollectionReadController {
co.NAME AS activityName,
su.typeName AS subjectName,
wo.worksTypeName AS worksName,
u.sex
u.sex,
(
SELECT COUNT(*)
FROM activity_works_collection_upload_like_num likeNum
WHERE likeNum.uploadId = up.id
) AS num
from
activity_works_collection_upload up
LEFT JOIN activity_works_collection co ON up.activityId = co.id
@@ -145,6 +156,7 @@ public class ActivityWorksCollectionReadController {
if(!AuthUtil.hasRoleOr(RoleConstant.SYSADMIN.name(), RoleConstant.SCHOOL_UNION_ADMIN.name())) {
cnd.and("up.unionId", "=", SecurityUtil.getUnionId());
}
cnd.desc("num");
sql.setCondition(cnd);
List<NutMap> listMap = baseService.listMap(sql);
@@ -159,7 +171,7 @@ public class ActivityWorksCollectionReadController {
exportEntities.add(new ExcelExportEntity("作品类型", "worksName", 20));
exportEntities.add(new ExcelExportEntity("作品名称", "name", 20));
exportEntities.add(new ExcelExportEntity("作品描述", "description", 20));
//exportEntities.add(new ExcelExportEntity("点赞次数", "dz_num", 20));
exportEntities.add(new ExcelExportEntity("点赞次数", "num", 20));
try {
ExportParams exportParams = new ExportParams();
@@ -1,12 +1,10 @@
package com.budwk.app.zhgh.activity.workscollection.controller;
import cn.dev33.satoken.annotation.SaCheckPermission;
import cn.hutool.core.date.DateUtil;
import com.budwk.app.base.page.Pagination;
import com.budwk.app.base.param.PageForm;
import com.budwk.app.base.result.Result;
import com.budwk.app.base.service.BaseService;
import com.budwk.app.sys.models.Sys_user;
import com.budwk.app.sys.views.View_user;
import com.budwk.app.web.commons.auth.utils.SecurityUtil;
import com.budwk.app.zhgh.activity.basic.models.ActivityUserScope;
@@ -27,7 +25,6 @@ import org.nutz.mvc.annotation.Ok;
import org.nutz.mvc.annotation.Param;
import javax.validation.Valid;
import java.util.Date;
import java.util.List;
/**
@@ -50,6 +47,8 @@ public class ActivityWorksCollectionUploadController {
public void index() {
}
/**
* @param pageForm 分页
* @param activityId 活动id
@@ -63,6 +62,8 @@ public class ActivityWorksCollectionUploadController {
select
up.*,
co.NAME AS activityName,
co.startDateTime AS activityStartDateTime,
co.endDateTime AS activityEndDateTime,
su.typeName AS subjectName,
wo.worksTypeName AS worksName
from
@@ -78,6 +79,7 @@ public class ActivityWorksCollectionUploadController {
cnd.andEX("up.activityId", "=", activityId);
cnd.andEX("up.subjectId", "=", subjectId);
cnd.andEX("up.worksId", "=", worksId);
cnd.desc("up.createdAt");
sql.setCondition(cnd);
Pagination pagination = baseService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
return Result.success(pagination);
@@ -91,8 +93,12 @@ public class ActivityWorksCollectionUploadController {
@At
@SaCheckPermission("activity.workscollection.upload")
public Result insert(@Param("data") @Valid Activity_works_collection_upload upload) {
String activityId = upload.getActivityId();
Activity_works_collection activity = dao.fetch(Activity_works_collection.class, activityId);
if (activity.getEndDateTime().getTime() < System.currentTimeMillis()){
return Result.error("活动已结束!");
}
if (activity.getActivityGroupId() != null) {
int count = dao.count(ActivityUserScope.class, Cnd.where(ActivityUserScope::getGroupId, "=", activity.getActivityGroupId())
.and(ActivityUserScope::getUserId, "=", SecurityUtil.getUserId()));
@@ -119,6 +125,10 @@ public class ActivityWorksCollectionUploadController {
@At
@SaCheckPermission("activity.workscollection.upload")
public Result update(@Param("data") @Valid Activity_works_collection_upload upload) {
Activity_works_collection activity = dao.fetch(Activity_works_collection.class, upload.getActivityId());
if (activity.getEndDateTime().getTime() < System.currentTimeMillis()){
return Result.error("活动已结束!");
}
dao.updateIgnoreNull(upload);
return Result.success();
}
@@ -133,6 +143,11 @@ public class ActivityWorksCollectionUploadController {
@At
@SaCheckPermission("activity.workscollection.upload")
public Result delete(@Valid String id) {
Activity_works_collection_upload upload = dao.fetch(Activity_works_collection_upload.class, id);
Activity_works_collection activity = dao.fetch(Activity_works_collection.class, upload.getActivityId());
if (activity.getEndDateTime().getTime() < System.currentTimeMillis()){
return Result.error("活动已结束!");
}
dao.delete(Activity_works_collection_upload.class, id);
return Result.success();
}
@@ -1,42 +0,0 @@
package com.budwk.app.zhgh.activity.workscollection.controller.h5;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.mvc.annotation.At;
import org.nutz.mvc.annotation.Ok;
/**
* 手机端作品征集
*/
@IocBean
@At("/platform/h5/activity/worksCollection")
@Ok("json:full")
public class H5ActivityWorksCollectionController {
/**
* 活动列表页面
*/
@At("/activity")
@Ok("beetl:/platform/zhghh5/activity/workscollection/activity/index.html")
@SaCheckPermission("activity.workscollection.upload")
public void activity() {
}
/**
* 上传页面
*/
@At("/upload")
@Ok("beetl:/platform/zhghh5/activity/workscollection/upload/index.html")
@SaCheckPermission("activity.workscollection.upload")
public void upload() {
}
/**
* 我的上传页面
*/
@At("/upload/mine")
@Ok("beetl:/platform/zhghh5/activity/workscollection/upload/mine.html")
@SaCheckPermission("activity.workscollection.upload")
public void uploadMine() {
}
}
@@ -0,0 +1,36 @@
package com.budwk.app.zhgh.activity.workscollection.controller.h5;
import cn.dev33.satoken.annotation.SaCheckPermission;
import com.budwk.app.base.service.BaseService;
import io.swagger.annotations.ApiOperation;
import org.nutz.dao.Dao;
import org.nutz.ioc.loader.annotation.Inject;
import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.mvc.annotation.At;
import org.nutz.mvc.annotation.Ok;
/**
* @author zhf
* @date 2025/9/16 08:54
* @description 我的作品
*/
@IocBean
@At("/platform/activity/worksCollection/mine/h5")
@Ok("json:full")
@ApiOperation("手机端我的作品")
public class H5ActivityWorksMineCollectionController {
@Inject
private BaseService baseService;
@Inject
private Dao dao;
@At("")
@Ok("beetl:/platform/zhghh5/activity/workscollection/mine/index.html")
@SaCheckPermission("h5.activity.workscollection.mine")
public void index() {
}
}
@@ -0,0 +1,158 @@
package com.budwk.app.zhgh.activity.workscollection.controller.h5;
import cn.dev33.satoken.annotation.SaCheckPermission;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import com.budwk.app.base.annotation.SLog;
import com.budwk.app.base.page.Pagination;
import com.budwk.app.base.result.Result;
import com.budwk.app.base.service.BaseService;
import com.budwk.app.sys.views.View_user;
import com.budwk.app.web.commons.auth.utils.SecurityUtil;
import com.budwk.app.zhgh.activity.workscollection.models.Activity_works_collection;
import com.budwk.app.zhgh.activity.workscollection.models.Activity_works_collection_upload;
import com.budwk.app.zhgh.activity.workscollection.models.Activity_works_collection_upload_like_num;
import com.budwk.app.zhgh.activity.workscollection.param.ActivityWorksCollectionReadPageParam;
import io.swagger.annotations.ApiOperation;
import org.nutz.dao.Cnd;
import org.nutz.dao.Dao;
import org.nutz.dao.Sqls;
import org.nutz.dao.sql.Sql;
import org.nutz.dao.util.cri.SqlExpressionGroup;
import org.nutz.ioc.loader.annotation.Inject;
import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.mvc.annotation.At;
import org.nutz.mvc.annotation.Ok;
import javax.validation.Valid;
/**
* @author zhf
* @date 2025/9/18 10:00
* @description
*/
@IocBean
@At("/platform/activity/worksCollection/read/h5")
@Ok("json:full")
@ApiOperation("手机端作品阅览")
public class H5ActivityWorksReadCollectionController {
@Inject
private BaseService baseService;
@Inject
private Dao dao;
@At("")
@Ok("beetl:/platform/zhghh5/activity/workscollection/read/index.html")
@SaCheckPermission("h5.activity.workscollection.read")
public void index() {
}
@At
@SaCheckPermission("h5.activity.workscollection.read")
public Result pageData(@Valid ActivityWorksCollectionReadPageParam pageForm) {
Sql sql = Sqls.create("""
select
up.*,
co.NAME AS activityName,
co.nbCount,
su.typeName AS subjectName,
wo.worksTypeName AS worksName,
(
SELECT COUNT(*)
FROM activity_works_collection_upload_like_num likeNum
WHERE likeNum.uploadId = up.id
) AS num,
EXISTS(
SELECT 1
FROM activity_works_collection_upload_like_num thisLikeNum
WHERE thisLikeNum.uploadId = up.id
AND thisLikeNum.userId = @userId
) AS isThisLike
from
activity_works_collection_upload up
LEFT JOIN activity_works_collection co ON up.activityId = co.id
LEFT JOIN activity_works_subjecttype su ON up.subjectId = su.id
LEFT JOIN activity_works_workstype wo ON up.worksId = wo.id
$condition
""").setParam("userId", SecurityUtil.getUserId());
Cnd cnd = Cnd.NEW();
cnd.andEX("YEAR(co.startDateTime)", "=", pageForm.getYear());
cnd.andEX("up.activityId", "=", pageForm.getActivityId());
cnd.andEX("up.subjectId", "=", pageForm.getSubjectId());
cnd.andEX("up.worksId", "=", pageForm.getWorksId());
cnd.andEX("unionId", "=", pageForm.getUnionId());
cnd.andEX("unitId", "=", pageForm.getUnitId());
if (StrUtil.isAllNotBlank(pageForm.getSearchKeyword())) {
SqlExpressionGroup seg = new SqlExpressionGroup();
seg.orLike("userName", pageForm.getSearchKeyword());
seg.orLike("loginName", pageForm.getSearchKeyword());
cnd.and(seg);
}
if (pageForm.getPageOrderName().equals("num")) {
cnd.desc(pageForm.getPageOrderName()).asc("createdAt");
} else {
cnd.asc(pageForm.getPageOrderName());
}
sql.setCondition(cnd);
Pagination pagination = baseService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
return Result.success(pagination);
}
@At
@ApiOperation("点赞")
@SLog(tag = "作品点赞", msg = "作品Id:${uploadId}")
@SaCheckPermission("h5.activity.workscollection.read")
public Result doLike(@Valid String uploadId) {
Activity_works_collection_upload upload = dao.fetch(Activity_works_collection_upload.class, uploadId);
Activity_works_collection activity = dao.fetch(Activity_works_collection.class, upload.getActivityId());
if (activity.getNbStartDateTime().getTime() > System.currentTimeMillis()) {
return Result.error("点赞未开始!开始时间:" + DateUtil.format(activity.getNbStartDateTime(), "yyyy-MM-dd HH:mm:ss"));
}
if (activity.getNbEndDateTime().getTime() < System.currentTimeMillis()) {
return Result.error("点赞已结束!结束时间:" + DateUtil.format(activity.getNbEndDateTime(), "yyyy-MM-dd HH:mm:ss"));
}
int count = dao.count(Activity_works_collection_upload_like_num.class,
Cnd.where(Activity_works_collection_upload_like_num::getActivityId, "=", activity.getId())
.and("DATE(FROM_UNIXTIME(createdAt / 1000))", "=", DateUtil.today())
.and(Activity_works_collection_upload_like_num::getUserId, "=", SecurityUtil.getUserId()));
if (count >= activity.getNbCount()) {
return Result.error("当前活动每天只能点赞" + activity.getNbCount() + "次!");
}
View_user vwUser = dao.fetch(View_user.class, Cnd.where(View_user::getId, "=", SecurityUtil.getUserId()));
Activity_works_collection_upload_like_num likeNum = new Activity_works_collection_upload_like_num();
likeNum.setUploadId(uploadId);
likeNum.setActivityId(activity.getId());
likeNum.setUserId(SecurityUtil.getUserId());
likeNum.setUserName(SecurityUtil.getUserUsername());
likeNum.setLoginName(SecurityUtil.getUserLoginname());
likeNum.setUnitId(SecurityUtil.getUnitId());
likeNum.setUnitName(vwUser.getUnitName());
likeNum.setUnionId(SecurityUtil.getUnionId());
likeNum.setUnionName(vwUser.getUnionName());
dao.insert(likeNum);
return Result.success();
}
@At
@ApiOperation("取消点赞")
@SaCheckPermission("h5.activity.workscollection.read")
public Result doDeleteLike(@Valid String uploadId) {
Activity_works_collection_upload upload = dao.fetch(Activity_works_collection_upload.class, uploadId);
Activity_works_collection activity = dao.fetch(Activity_works_collection.class, upload.getActivityId());
if (activity.getNbStartDateTime().getTime() > System.currentTimeMillis()) {
return Result.error("点赞未开始!开始时间:" + DateUtil.format(activity.getNbStartDateTime(), "yyyy-MM-dd HH:mm:ss"));
}
if (activity.getNbEndDateTime().getTime() < System.currentTimeMillis()) {
return Result.error("点赞已结束!结束时间:" + DateUtil.format(activity.getNbEndDateTime(), "yyyy-MM-dd HH:mm:ss"));
}
dao.clear(Activity_works_collection_upload_like_num.class,
Cnd.where(Activity_works_collection_upload_like_num::getUploadId, "=", uploadId)
.and(Activity_works_collection_upload_like_num::getUserId, "=", SecurityUtil.getUserId()));
return Result.success();
}
}
@@ -0,0 +1,79 @@
package com.budwk.app.zhgh.activity.workscollection.controller.h5;
import cn.dev33.satoken.annotation.SaCheckPermission;
import cn.dev33.satoken.annotation.SaMode;
import com.budwk.app.base.page.Pagination;
import com.budwk.app.base.param.PageForm;
import com.budwk.app.base.result.Result;
import com.budwk.app.base.service.BaseService;
import com.budwk.app.web.commons.auth.utils.SecurityUtil;
import io.swagger.annotations.ApiOperation;
import org.nutz.dao.Cnd;
import org.nutz.dao.Dao;
import org.nutz.dao.Sqls;
import org.nutz.dao.sql.Sql;
import org.nutz.dao.util.cri.Static;
import org.nutz.ioc.loader.annotation.Inject;
import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.mvc.annotation.At;
import org.nutz.mvc.annotation.Ok;
import org.nutz.mvc.annotation.Param;
/**
* 手机端作品征集
*/
@IocBean
@At("/platform/activity/worksCollection/upload/h5")
@Ok("json:full")
@ApiOperation("手机端作品征集")
public class H5ActivityWorksUploadCollectionController {
@Inject
private BaseService baseService;
@Inject
private Dao dao;
@At("")
@Ok("beetl:/platform/zhghh5/activity/workscollection/upload/index.html")
@SaCheckPermission("h5.activity.workscollection.upload")
public void index() {
}
@At
@ApiOperation("活动查询")
@SaCheckPermission(value = {"h5.activity.workscollection.upload"}, mode = SaMode.OR)
public Result activityPageData(PageForm pageForm,
@Param(value = "year") Integer year,
@Param(value = "activityType") Integer activityType) {
Sql sql = Sqls.create("""
SELECT
awc.*,
aus.groupName activityGroupName
FROM
`activity_works_collection` awc
LEFT JOIN activity_user_scope aus ON aus.groupId = awc.activityGroupId
AND aus.userId = @userId
""").setParam("userId", SecurityUtil.getUserId());
Cnd cnd = Cnd.NEW();
cnd.andEX("YEAR(awc.startDateTime)", "=", year);
//查询报名中
if (activityType == 2) {
cnd.and(new Static("now() > awc.startDateTime and now() < awc.endDateTime"));
}//查询已结束的
else if (activityType == 3) {
cnd.and(new Static("now() > awc.startDateTime"));
} else if (activityType == 4) {
cnd.and(new Static("now() < awc.endDateTime"));
}
cnd.and("awc.enable", "=", 1);
cnd.and("awc.type", "=", 1);
sql.setCondition(cnd);
Pagination pagination = baseService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
return Result.success(pagination);
}
}
@@ -0,0 +1,72 @@
package com.budwk.app.zhgh.activity.workscollection.models;
import com.budwk.app.base.model.BaseModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.nutz.dao.entity.annotation.*;
import org.nutz.dao.interceptor.annotation.PrevInsert;
/**
* @author zhf
* @date 2025/9/18 10:46
* @description 作品点赞数量
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Table("activity_works_collection_upload_like_num")
@TableMeta("{'mysql-charset':'utf8mb4'}")
@Comment("作品点赞数量")
public class Activity_works_collection_upload_like_num extends BaseModel {
@Name
@Comment("ID")
@PrevInsert(uu32 = true)
@ColDefine(type = ColType.VARCHAR, width = 32)
private String id;
@Column
@Comment("活动Id")
@ColDefine(type = ColType.VARCHAR, width = 32, notNull = true)
private String activityId;
@Column
@Comment("作品Id")
@ColDefine(type = ColType.VARCHAR, width = 32, notNull = true)
private String uploadId;
@Column
@Comment("点赞人id")
@ColDefine(type = ColType.VARCHAR, width = 32, notNull = true)
private String userId;
@Column
@Comment("点赞人姓名")
@ColDefine(type = ColType.VARCHAR, width = 100, notNull = true)
private String userName;
@Column
@Comment("点赞人工号")
@ColDefine(type = ColType.VARCHAR, width = 100, notNull = true)
private String loginName;
@Column
@Comment("点赞人单位id")
@ColDefine(type = ColType.VARCHAR, width = 200, notNull = true)
private String unitId;
@Column
@Comment("点赞人单位")
@ColDefine(type = ColType.VARCHAR, width = 200, notNull = true)
private String unitName;
@Column
@Comment("点赞人分工会id")
@ColDefine(type = ColType.VARCHAR, width = 32, notNull = true)
private String unionId;
@Column
@Comment("点赞人分工会")
@ColDefine(type = ColType.VARCHAR, width = 50, notNull = true)
private String unionName;
}
@@ -0,0 +1,50 @@
package com.budwk.app.zhgh.dayofficework.message.example;
import com.budwk.app.zhgh.dayofficework.message.service.GlobalMessageSendService;
import lombok.extern.slf4j.Slf4j;
import org.nutz.ioc.loader.annotation.Inject;
import org.nutz.ioc.loader.annotation.IocBean;
import java.util.Arrays;
import java.util.List;
/**
* 全局消息发送使用示例
* 展示如何使用简化的API发送消息
*/
@IocBean
@Slf4j
public class MessageSendExample {
@Inject
private GlobalMessageSendService globalMessageSendService;
/**
* 示例1:发送简单的系统通知(自动发送到所有启用的渠道)
*/
public void sendSimpleNotification() {
String title = "系统维护通知";
String content = "系统将于今晚22:00-24:00进行维护,请提前保存工作内容。";
List<String> receiverIds = Arrays.asList("user1", "user2", "user3");
// 最简单的调用方式,自动发送到所有启用的渠道
globalMessageSendService.sendMessage(title, content, receiverIds);
log.info("简单系统通知发送完成");
}
/**
* 示例2:发送待办通知(自动发送到所有启用的渠道)
*/
public void sendTodoNotification() {
String title = "审批待办";
String content = "您有一个新的审批任务需要处理,请及时登录系统查看。";
List<String> receiverIds = Arrays.asList("manager1", "manager2");
// 自动发送到所有启用的渠道
globalMessageSendService.sendMessage(title, content, 2, receiverIds, null);
log.info("待办通知发送完成");
}
}
@@ -79,7 +79,7 @@ public class OutlayReimburseApplyController {
@ApiOperation("查询这个预算已经报销了的金额")
@SaCheckPermission(value = {"outlay.reimburse.apply", "h5.outlay.reimburse.apply"}, mode = SaMode.OR)
public Result getBxMoneyByBudgetId(String budgetId) {
return Result.success(outlayReimburseApplyService.getBxMoneyByActivityId(budgetId,null));
return Result.success(outlayReimburseApplyService.getBxMoneyByActivityId(budgetId));
}
@@ -24,10 +24,9 @@ public interface OutlayReimburseApplyService extends BaseService<OutlayReimburse
/**
* 查询这个预算已经报销了的金额
* @param budgetId
* @param isSchoolBudget 是否是校会预算
* @return
*/
BigDecimal getBxMoneyByActivityId(String budgetId,Boolean isSchoolBudget);
BigDecimal getBxMoneyByActivityId(String budgetId);
/**
* 判断这个报销的记录预算是否充足
@@ -136,21 +136,19 @@ public class OutlayReimburseApplyServiceImpl extends BaseServiceImpl<OutlayReimb
}
@Override
public BigDecimal getBxMoneyByActivityId(String budgetId, Boolean isSchoolBudget) {
public BigDecimal getBxMoneyByActivityId(String budgetId) {
Sql sql = Sqls.create("""
SELECT
rei.money
FROM
`outlay_reimburse` rei
LEFT JOIN wf_process_instance ins ON ins.businessNo = rei.id
WHERE
rei.budgetId = @budgetId
AND ins.state = 20
$condition
""").setParam("budgetId", budgetId);
Cnd cnd = Cnd.NEW();
if (isSchoolBudget != null) {
cnd.and("isSchoolBudget", "=", isSchoolBudget);
}
cnd.and("rei.budgetId", "=", budgetId);
cnd.and("ins.state", "=", 20);
sql.setCondition(cnd);
List<NutMap> reiList = listMap(sql);
@@ -174,7 +172,7 @@ public class OutlayReimburseApplyServiceImpl extends BaseServiceImpl<OutlayReimb
if (budget.getIsRepeatReimburse()) {
//1.查询已经报销了的总金额
if (budget.getIsSchoolBudget()) {
BigDecimal bXMoney = getBxMoneyByActivityId(budgetId, budget.getIsSchoolBudget());
BigDecimal bXMoney = getBxMoneyByActivityId(budgetId);
//如果是分工会进来并且报销的活动是校会预算
// 1. 计算本次加上之前的报销总金额
BigDecimal totalReimbursement = bXMoney.add(moneyBig);
@@ -185,7 +183,7 @@ public class OutlayReimburseApplyServiceImpl extends BaseServiceImpl<OutlayReimb
return Result.success();
}
} else {
BigDecimal bXMoney = getBxMoneyByActivityId(budgetId, budget.getIsSchoolBudget());
BigDecimal bXMoney = getBxMoneyByActivityId(budgetId);
//如果是自己的项目就能超20%
//1.算出现在还能报销多少钱
BigDecimal twentyPercent = budget.getTotalBudgetMoney().multiply(new BigDecimal("20")).divide(new BigDecimal("100"), 2, BigDecimal.ROUND_HALF_UP);
@@ -218,7 +216,7 @@ public class OutlayReimburseApplyServiceImpl extends BaseServiceImpl<OutlayReimb
//如果报销的项目是可以重复报销的
if (budget.getIsRepeatReimburse()) {
//这个预算已经报销了多少钱
BigDecimal totalMoney = getBxMoneyByActivityId(budgetId, null);
BigDecimal totalMoney = getBxMoneyByActivityId(budgetId );
//查出这个活动有没有跟其他预算关联,如果跟其他预算关联了,代表当前这条预算是分工会也能报校工会也能报,
// schoolBudgetId字段不为空就代表这条预算是使用的校工会的金额
List<ActivityBudget> budgetList = dao().query(ActivityBudget.class,
@@ -42,7 +42,7 @@ import java.util.List;
@Slf4j
@IocBean
@Ok("json:full")
@Api(tags = "慈善捐明细")
@Api(tags = "慈善捐明细")
@At("/platform/contribution/detailed")
public class ContributionDetailedController {
@@ -86,9 +86,9 @@ public class ContributionDetailedController {
List<ExcelExportEntity> entityList = new ArrayList<>();
entityList.add(new ExcelExportEntity("序号", "index", 10));
entityList.add(new ExcelExportEntity("项目", "contributionName", 20));
entityList.add(new ExcelExportEntity("人工号", "loginName", 20));
entityList.add(new ExcelExportEntity("人姓名", "userName", 20));
entityList.add(new ExcelExportEntity("项目", "contributionName", 20));
entityList.add(new ExcelExportEntity("人工号", "loginName", 20));
entityList.add(new ExcelExportEntity("人姓名", "userName", 20));
entityList.add(new ExcelExportEntity("联系方式", "mobile", 20));
entityList.add(new ExcelExportEntity("所属工会", "unionName", 20));
entityList.add(new ExcelExportEntity("所属单位", "unitName", 20));
@@ -99,6 +99,6 @@ public class ContributionDetailedController {
ExportParams exportParams = new ExportParams();
exportParams.setType(ExcelType.XSSF);
Workbook workbook = ExcelExportUtil.exportExcel(exportParams, entityList, listMap);
CommonDownloadUtil.download("明细.xlsx", workbook, response);
CommonDownloadUtil.download("明细.xlsx", workbook, response);
}
}
@@ -36,7 +36,7 @@ import java.util.List;
@Slf4j
@IocBean
@Ok("json:full")
@Api(tags = "慈善捐项目")
@Api(tags = "慈善捐项目")
@At("/platform/contribution/list")
public class ContributionProjectController {
@@ -76,9 +76,9 @@ public class ContributionProjectController {
}
@At
@ApiOperation("新增/修改慈善捐项目")
@ApiOperation("新增/修改慈善捐项目")
@SaCheckPermission("contribution.list")
@SLog(type = "contribution", tag = "新增/修改慈善捐项目", msg = "新增/修改慈善捐项目")
@SLog(type = "contribution", tag = "新增/修改慈善捐项目", msg = "新增/修改慈善捐项目")
public Object onSubmit(ContributionProject project) {
if(StrUtil.isBlank(project.getId())) {
project.setContributionCreationDate(DateUtil.now());
@@ -88,16 +88,16 @@ public class ContributionProjectController {
}
@At
@ApiOperation("删除慈善捐项目")
@ApiOperation("删除慈善捐项目")
@SaCheckPermission("contribution.list")
@SLog(type = "contribution", tag = "删除慈善捐项目", msg = "删除慈善捐项目")
@SLog(type = "contribution", tag = "删除慈善捐项目", msg = "删除慈善捐项目")
public Object onDelete(String id) {
typeService.dao().delete(ContributionProject.class, id);
return Result.success();
}
@At
@ApiOperation("查询慈善捐项目")
@ApiOperation("查询慈善捐项目")
@SaCheckPermission("contribution.list")
public Result queryContributionList() {
List<ContributionProject> list = typeService.dao().query(
@@ -34,7 +34,7 @@ import java.util.stream.Collectors;
@Slf4j
@IocBean
@Ok("json:full")
@Api(tags = "慈善捐分工会统计")
@Api(tags = "慈善捐分工会统计")
@At("/platform/contribution/statistics")
public class ContributionStatisticsController {
@@ -66,13 +66,13 @@ public class ContributionStatisticsController {
.stream()
.toList();
//这个项目每个分工会有多少个人捐
//这个项目每个分工会有多少个人捐
List<ContributionApply> list = userList.stream()
.filter(n -> n.getUnionId().equals(union.getId()) && n.getContributionId().equals(contributionId))
.toList();
map.setv("contributionUserNum", list.size());
//捐多少笔
//捐多少笔
long conCount = applyList.stream()
.filter(n -> n.getUnionId().equals(union.getId()) && n.getContributionId().equals(contributionId))
.count();
@@ -6,6 +6,8 @@ import com.budwk.app.base.annotation.SLog;
import com.budwk.app.base.page.Pagination;
import com.budwk.app.base.param.PageForm;
import com.budwk.app.base.result.Result;
import com.budwk.app.zhgh.staffbenefit.contribution.model.ContributionApply;
import com.budwk.app.zhgh.staffbenefit.contribution.model.ContributionProject;
import com.budwk.app.zhgh.staffbenefit.contribution.model.ContributionType;
import com.budwk.app.zhgh.staffbenefit.contribution.service.ContributionTypeService;
import io.swagger.annotations.Api;
@@ -13,9 +15,13 @@ import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.nutz.dao.Cnd;
import org.nutz.dao.Dao;
import org.nutz.dao.Sqls;
import org.nutz.dao.sql.Sql;
import org.nutz.dao.util.cri.SqlExpressionGroup;
import org.nutz.ioc.loader.annotation.Inject;
import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.lang.Lang;
import org.nutz.lang.util.NutMap;
import org.nutz.mvc.annotation.At;
import org.nutz.mvc.annotation.Ok;
@@ -31,7 +37,7 @@ import java.util.List;
@Slf4j
@IocBean
@Ok("json:full")
@Api(tags = "慈善捐专题")
@Api(tags = "慈善捐专题")
@At("/platform/contribution/type")
public class ContributionTypeController {
@@ -63,28 +69,47 @@ public class ContributionTypeController {
}
@At
@ApiOperation("新增/修改慈善捐专题")
@ApiOperation("新增/修改慈善捐专题")
@SaCheckPermission("contribution.type")
@SLog(type = "contribution", tag = "新增/修改慈善捐专题", msg = "新增/修改慈善捐专题")
@SLog(type = "contribution", tag = "新增/修改慈善捐专题", msg = "新增/修改慈善捐专题")
public Object onSubmit(ContributionType type) {
typeService.insertOrUpdate(type);
return Result.success();
}
@At
@ApiOperation("删除慈善捐专题")
@ApiOperation("删除慈善捐专题")
@SaCheckPermission("contribution.type")
@SLog(type = "contribution", tag = "删除慈善捐专题", msg = "删除慈善捐专题")
@SLog(type = "contribution", tag = "删除慈善捐专题", msg = "删除慈善捐专题")
public Object onDelete(String id) {
typeService.delete(id);
return Result.success();
}
@At
@ApiOperation("查询慈善捐专题")
@SaCheckPermission("contribution.type")
@ApiOperation("查询慈善捐专题")
@SaCheckPermission("contribution")
public Result queryContributionType() {
List<ContributionType> list = typeService.query(Cnd.NEW().desc(ContributionType::getTypeCode));
return Result.success(list);
}
@At
@ApiOperation("查询单个慈善捐助专题")
@SaCheckPermission("contribution")
public Result fetchOne(String id) {
ContributionType type = typeService.fetch(id);
List<ContributionProject> list = dao.query(ContributionProject.class, Cnd.where(ContributionProject::getContributionTypeCode, "=", type.getTypeCode()).and(ContributionProject::getIsContributionEnable, "=", true));
List<String> projects = list.stream().map(ContributionProject::getId).toList();
List<ContributionApply> applyList = dao.query(ContributionApply.class, Cnd.where(ContributionApply::getContributionId, "in", projects));
double sum = applyList.stream().mapToDouble(ContributionApply::getMoney).sum();
NutMap nutMap = Lang.obj2nutmap(type);
nutMap.put("projectCount", list.size());
nutMap.put("totalMoney", sum);
nutMap.put("peopleCount", applyList.size());
return Result.success(nutMap);
}
}
@@ -0,0 +1,115 @@
package com.budwk.app.zhgh.staffbenefit.contribution.h5Controller;
import cn.dev33.satoken.annotation.SaCheckPermission;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import com.budwk.app.base.annotation.SLog;
import com.budwk.app.base.page.Pagination;
import com.budwk.app.base.param.PageForm;
import com.budwk.app.base.result.Result;
import com.budwk.app.base.service.BaseService;
import com.budwk.app.zhgh.staffbenefit.contribution.model.ContributionApply;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.nutz.aop.interceptor.ioc.TransAop;
import org.nutz.dao.Cnd;
import org.nutz.dao.Dao;
import org.nutz.dao.Sqls;
import org.nutz.dao.sql.Sql;
import org.nutz.ioc.aop.Aop;
import org.nutz.ioc.loader.annotation.Inject;
import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.lang.Strings;
import org.nutz.lang.util.NutMap;
import org.nutz.mvc.annotation.At;
import org.nutz.mvc.annotation.Ok;
import org.nutz.mvc.annotation.Param;
import java.util.List;
/**
* @ClassName H5ContributionListController
* @Author JyuHsin
* @Date 2025/9/18 11:12
* @Version 1.0
* @Description TODO
*/
@Slf4j
@IocBean
@Ok("json:full")
@Api(tags = "移动端-慈善捐助项目")
@At("/platform/contribution/list/h5")
public class H5ContributionListController {
@Inject
private Dao dao;
@Inject
private BaseService baseService;
@At("")
@SaCheckPermission("h5.contribution.list")
@Ok("beetl:/platform/zhghh5/staffbenefit/contribution/list/index.html")
public void index() {
}
@At
@ApiOperation("分页查询")
@SaCheckPermission("h5.contribution.list")
public Result pageData(PageForm pageForm,
@Param(value = "year") Integer year,
@Param(value = "type") String type) {
Cnd cnd = Cnd.NEW();
Sql sql = Sqls.create("""
SELECT
con.*,
con.id as contributionId,
type.id as typeId,
type.typeName
FROM
`contribution_project` con
LEFT JOIN contribution_type type ON type.typeCode = con.contributionTypeCode
$condition
""");
cnd.andEX("con.contributionTypeCode", "=", type);
cnd.andEX("year(contributionCreationDate)", "=", year);
cnd.and("isContributionEnable", "=", true);
cnd.desc("contributionCreationDate");
cnd.asc("contributionMode");
sql.setCondition(cnd);
Pagination pagination = baseService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
return Result.success(pagination);
}
@At
@ApiOperation("移动端-慈善捐助")
@Aop(TransAop.READ_COMMITTED)
@SaCheckPermission("h5.contribution.list")
@SLog(tag = "慈善捐助-捐助", msg = "慈善捐助")
public Object submit(ContributionApply apply) {
if(StrUtil.isBlank(apply.getId())) {
apply.setContributionTime(DateUtil.now());
}
dao.insertOrUpdate(apply);
return Result.success();
}
@At
@ApiOperation("查询单个慈善捐助专题")
@SaCheckPermission("contribution")
public Result fetchOne(String id) {
Sql sql = Sqls.create("""
SELECT
con.*,
( SELECT SUM( money ) FROM contribution_apply apply WHERE apply.contributionId = con.id ) totalMoney,
( SELECT COUNT( 1 ) FROM contribution_apply apply WHERE apply.contributionId = con.id ) peopleCount
FROM
`contribution_project` con
WHERE con.id = @id
""");
sql.setParam("id", id);
sql.setCallback(Sqls.callback.map());
dao.execute(sql);
NutMap nutMap = (NutMap) sql.getResult();
return Result.success(nutMap);
}
}
@@ -0,0 +1,91 @@
package com.budwk.app.zhgh.staffbenefit.contribution.h5Controller;
import cn.dev33.satoken.annotation.SaCheckPermission;
import com.budwk.app.base.annotation.SLog;
import com.budwk.app.base.page.Pagination;
import com.budwk.app.base.param.PageForm;
import com.budwk.app.base.result.Result;
import com.budwk.app.base.service.BaseService;
import com.budwk.app.zhgh.dayofficework.meeting.model.MeetingTimePeriod;
import com.budwk.app.zhgh.dayofficework.meeting.model.MeetingTimePeriodUser;
import com.budwk.app.zhgh.staffbenefit.contribution.model.ContributionApply;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.nutz.aop.interceptor.ioc.TransAop;
import org.nutz.dao.Cnd;
import org.nutz.dao.Dao;
import org.nutz.dao.Sqls;
import org.nutz.dao.sql.Sql;
import org.nutz.ioc.aop.Aop;
import org.nutz.ioc.loader.annotation.Inject;
import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.mvc.annotation.At;
import org.nutz.mvc.annotation.Ok;
import org.nutz.mvc.annotation.Param;
/**
* @ClassName H5ContributionMineController
* @Author JyuHsin
* @Date 2025/9/18 15:17
* @Version 1.0
* @Description TODO
*/
@Slf4j
@IocBean
@Ok("json:full")
@Api(tags = "移动端-我的慈善捐助")
@At("/platform/contribution/mine/h5")
public class H5ContributionMineController {
@Inject
private Dao dao;
@Inject
private BaseService baseService;
@At("")
@SaCheckPermission("h5.contribution.mine")
@Ok("beetl:/platform/zhghh5/staffbenefit/contribution/mine/index.html")
public void index() {
}
@At
@ApiOperation("分页查询")
@SaCheckPermission("h5.contribution.mine")
public Result pageData(PageForm pageForm,
@Param(value = "year") Integer year,
@Param(value = "type") String type) {
Sql sql = Sqls.create("""
SELECT
ca.*,
ca.id as applyId,
cp.contributionName AS projectName,
cp.contributionTypeCode,
cp.contributionStartTime,
cp.contributionEndTime,
ct.id as typeId
FROM
contribution_apply ca
LEFT JOIN contribution_project cp ON ca.contributionId = cp.id
LEFT JOIN contribution_type ct ON cp.contributionTypeCode = ct.typeCode
$condition
""");
Cnd cnd = Cnd.NEW();
cnd.andEX("year(ca.contributionTime)", "=", year);
cnd.andEX("cp.contributionTypeCode", "=", type);
cnd.desc("ca.contributionTime");
sql.setCondition(cnd);
Pagination pagination = baseService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
return Result.success(pagination);
}
@At
@ApiOperation("删除慈善捐助")
@Aop(TransAop.READ_COMMITTED)
@SaCheckPermission("h5.contribution.mine")
@SLog(tag = "慈善捐助-删除慈善捐助", msg = "删除慈善捐助")
public Object delete(String id) {
dao.delete(ContributionApply.class, id);
return Result.success();
}
}
@@ -19,7 +19,7 @@ import java.util.List;
* @Description TODO
*/
@Data
@Comment("慈善捐明细")
@Comment("慈善捐明细")
@Accessors(chain = true)
@Table("contribution_apply")
@EqualsAndHashCode(callSuper = true)
@@ -82,7 +82,7 @@ public class ContributionApply extends BaseModel {
private String mobile;
@Column
@Comment("金额")
@Comment("金额")
@ColDefine(type = ColType.DOUBLE)
private double money;
@@ -92,12 +92,12 @@ public class ContributionApply extends BaseModel {
private String payMode;
@Column
@Comment("时间")
@Comment("时间")
@ColDefine(type = ColType.VARCHAR, width = 50)
private String contributionTime;
@Column
@Comment("图片")
@Comment("图片")
@ColDefine(type = ColType.MYSQL_JSON)
private List<JSONObject> contributionFiles;
}
@@ -18,7 +18,7 @@ import java.util.List;
* @Description TODO
*/
@Data
@Comment("慈善捐")
@Comment("慈善捐")
@Accessors(chain = true)
@Table("contribution_project")
@EqualsAndHashCode(callSuper = true)
@@ -41,7 +41,7 @@ public class ContributionProject extends BaseModel {
private String contributionIntroduce;
@Column
@Comment("所属捐专题")
@Comment("所属捐专题")
@ColDefine(type = ColType.VARCHAR, width = 10)
private String contributionTypeCode;
@@ -61,22 +61,22 @@ public class ContributionProject extends BaseModel {
private Boolean isContributionEnable;
@Column
@Comment("模式")
@Comment("模式")
@ColDefine(type = ColType.VARCHAR, width = 30)
private String contributionMode;
private Integer contributionMode;
@Column
@Comment("链接")
@Comment("链接")
@ColDefine(type = ColType.TEXT)
private String contributionUrl;
@Column
@Comment("开启时间")
@Comment("开启时间")
@ColDefine(type = ColType.VARCHAR, width = 40)
private String contributionStartTime;
@Column
@Comment("结束时间")
@Comment("结束时间")
@ColDefine(type = ColType.VARCHAR, width = 40)
private String contributionEndTime;
}
@@ -19,7 +19,7 @@ import java.util.List;
* @Description TODO
*/
@Data
@Comment("慈善捐专题")
@Comment("慈善捐专题")
@Accessors(chain = true)
@Table("contribution_type")
@EqualsAndHashCode(callSuper = true)
@@ -15,7 +15,7 @@ import org.nutz.dao.sql.Sql;
public interface ContributionApplyService extends BaseService<ContributionApply> {
/**
* 生成查询捐明细的sql
* 生成查询捐明细的sql
* @return
*/
Sql generateSql(String unionId, String unitId, String payMode, String contributionName);
@@ -1,23 +1,34 @@
package com.budwk.app.zhgh.staffbenefit.legal.controller;
import cn.dev33.satoken.annotation.SaCheckPermission;
import cn.dev33.satoken.annotation.SaMode;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import com.budwk.app.base.annotation.SLog;
import com.budwk.app.base.page.Pagination;
import com.budwk.app.base.param.PageForm;
import com.budwk.app.base.result.Result;
import com.budwk.app.sys.views.View_user;
import com.budwk.app.web.commons.auth.utils.SecurityUtil;
import com.budwk.app.zhgh.staffbenefit.legal.model.LegalApply;
import com.budwk.app.zhgh.staffbenefit.legal.service.LegalApplyService;
import com.budwk.app.zhgh.staffbenefit.psychology.model.PsychologyApply;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.nutz.dao.Cnd;
import org.nutz.dao.Dao;
import org.nutz.dao.Sqls;
import org.nutz.dao.sql.Sql;
import org.nutz.dao.util.cri.SqlExpressionGroup;
import org.nutz.ioc.loader.annotation.Inject;
import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.lang.util.NutMap;
import org.nutz.mvc.annotation.At;
import org.nutz.mvc.annotation.Ok;
import java.util.List;
/**
* @ClassName LegalApplyController
* @Author JyuHsin
@@ -37,17 +48,23 @@ public class LegalApplyController {
@Inject
private LegalApplyService applyService;
@At("")
@At("/")
@SaCheckPermission("legal.apply")
@Ok("beetl:/platform/zhgh/staffbenefit/legal/apply/index.html")
public void index() {
}
@At("/h5")
@SaCheckPermission("h5.legal.apply")
@Ok("beetl:/platform/zhghh5/staffbenefit/legal/apply/index.html")
public void h5Index() {
}
@At
@ApiOperation("新增/修改法律援助预约")
@SaCheckPermission("legal.apply")
@SaCheckPermission(value = {"legal.apply", "h5.legal.apply"}, mode = SaMode.OR)
@SLog(tag = "法律援助系统-援助申请", msg = "新增/修改法律援助预约")
public Object onSubmit(LegalApply apply) {
public Object submit(LegalApply apply) {
LegalApply legalApply = applyService.fetch(apply.getId());
if(StrUtil.isNotBlank(legalApply.getUserId())) {
return Result.error("该时段已被预约");
@@ -68,4 +85,39 @@ public class LegalApplyController {
//TODO:这里后面要加发短信
return Result.success();
}
@At
@ApiOperation("移动端预约查询咨询师")
@SaCheckPermission(value = {"legal.apply", "h5.legal.apply"}, mode = SaMode.OR)
@SLog(tag = "法律援助系统-移动端预约查询咨询师", msg = "移动端预约查询咨询师")
public Object h5PageData(PageForm pageForm, String sex) {
Sql sql = Sqls.create("""
SELECT
pd.*
FROM
legal_doctor pd
$condition
""");
Cnd cnd = Cnd.NEW();
cnd.and(Cnd.likeEX("pd.sex", sex));
if (StrUtil.isNotBlank(pageForm.getSearchKeyword())) {
SqlExpressionGroup seg = new SqlExpressionGroup();
seg.or("pd.userName", "like", "%" + pageForm.getSearchKeyword() + "%");
seg.or("pd.loginName", "like", "%" + pageForm.getSearchKeyword() + "%");
cnd.and(seg);
}
sql.setCondition(cnd);
Pagination pagination = applyService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
List<NutMap> list = pagination.getList(NutMap.class);
for (NutMap nutMap : list) {
List<LegalApply> applyList = dao.query(
LegalApply.class,
Cnd.where(LegalApply::getDoctorUser, "=", nutMap.getString("userId"))
.and(LegalApply::getStartTime, ">=", DateUtil.now())
.and(LegalApply::getUserId, "is", null)
);
nutMap.put("times", applyList);
}
return Result.success(pagination);
}
}
@@ -1,6 +1,7 @@
package com.budwk.app.zhgh.staffbenefit.legal.controller;
import cn.dev33.satoken.annotation.SaCheckPermission;
import cn.dev33.satoken.annotation.SaMode;
import com.budwk.app.base.annotation.SLog;
import com.budwk.app.base.constant.RoleConstant;
import com.budwk.app.base.page.Pagination;
@@ -42,15 +43,21 @@ public class LegalListController {
@Inject
private LegalApplyService applyService;
@At("")
@At("/")
@SaCheckPermission("legal.list")
@Ok("beetl:/platform/zhgh/staffbenefit/legal/list/index.html")
public void index() {
}
@At("/h5")
@SaCheckPermission("h5.legal.list")
@Ok("beetl:/platform/zhghh5/staffbenefit/legal/list/index.html")
public void h5Index() {
}
@At
@ApiOperation("分页查询")
@SaCheckPermission("legal.list")
@SaCheckPermission(value = {"legal.list", "h5.legal.list"}, mode = SaMode.OR)
public Result pageData(PageForm pageForm,
@Param(value = "year") Integer year) {
Sql sql = Sqls.create("""
@@ -87,9 +94,9 @@ public class LegalListController {
@At
@ApiOperation("删除法律援助预约")
@SaCheckPermission("legal.list")
@SaCheckPermission(value = {"legal.list", "h5.legal.list"}, mode = SaMode.OR)
@SLog(tag = "法律援助系统-法律援助预约", msg = "删除法律援助预约")
public Object onDelete(String id) {
public Object delete(String id) {
LegalApply apply = applyService.fetch(id);
apply.setUserId(null);
apply.setLoginName(null);
@@ -1,6 +1,7 @@
package com.budwk.app.zhgh.staffbenefit.legal.controller;
import cn.dev33.satoken.annotation.SaCheckPermission;
import cn.dev33.satoken.annotation.SaMode;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import com.budwk.app.base.annotation.SLog;
@@ -50,15 +51,21 @@ public class LegalOnlinePostController {
@Inject
private BaseService baseService;
@At("")
@At("/")
@SaCheckPermission("legal.onlinePost")
@Ok("beetl:/platform/zhgh/staffbenefit/legal/onlinePost/index.html")
public void index() {
}
@At("/h5")
@SaCheckPermission("h5.legal.onlinePost")
@Ok("beetl:/platform/zhghh5/staffbenefit/legal/onlinePost/index.html")
public void h5Index() {
}
@At
@ApiOperation("分页查询")
@SaCheckPermission("legal.onlinePost")
@SaCheckPermission(value = {"legal.onlinePost", "h5.legal.onlinePost"}, mode = SaMode.OR)
public Result pageData(PageForm pageForm,
@Param(value = "year") Integer year,
@Param(value = "isReply") Boolean isReply) {
@@ -78,6 +85,7 @@ public class LegalOnlinePostController {
cnd.andEX("YEAR(pop.postingTime)", "=", year);
cnd.groupBy("pop.id");
cnd.having(Cnd.where("count(por.id)", isReply == null ? ">=" : isReply ? ">" : "=", 0));
cnd.desc("pop.postingTime");
sql.setCondition(cnd);
Pagination pagination = baseService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
return Result.success(pagination);
@@ -85,9 +93,9 @@ public class LegalOnlinePostController {
@At
@ApiOperation("新增/修改法律援助线上发帖")
@SaCheckPermission("legal.onlinePost")
@SaCheckPermission(value = {"legal.onlinePost", "h5.legal.onlinePost"}, mode = SaMode.OR)
@SLog(tag = "法律援助系统-线上发帖", msg = "新增/修改法律援助线上发帖")
public Object onSubmit(LegalOnlinePost post) {
public Object submit(LegalOnlinePost post) {
if(StrUtil.isBlank(post.getId())) {
View_user user = dao.fetch(View_user.class, Cnd.where("id", "=", SecurityUtil.getUserId()));
post.setPoster(user.getId());
@@ -106,16 +114,16 @@ public class LegalOnlinePostController {
@At
@ApiOperation("删除法律援助线上发帖")
@SaCheckPermission("legal.onlinePost")
@SaCheckPermission(value = {"legal.onlinePost", "h5.legal.onlinePost"}, mode = SaMode.OR)
@SLog(tag = "法律援助系统-线上发帖", msg = "删除法律援助线上发帖")
public Object onDelete(String id) {
public Object delete(String id) {
dao.delete(LegalOnlinePost.class, id);
return Result.success();
}
@At
@ApiOperation("查询法律援助线上发帖")
@SaCheckPermission("legal.onlinePost")
@SaCheckPermission(value = {"legal.onlinePost", "h5.legal.onlinePost"}, mode = SaMode.OR)
public Result fetchOne(String id) {
LegalOnlinePost onlinePost = dao.fetch(LegalOnlinePost.class, id);
List<LegalOnlineReply> replyList = dao.query(
@@ -1,6 +1,7 @@
package com.budwk.app.zhgh.staffbenefit.legal.controller;
import cn.dev33.satoken.annotation.SaCheckPermission;
import cn.dev33.satoken.annotation.SaMode;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import com.budwk.app.base.annotation.SLog;
@@ -48,15 +49,21 @@ public class LegalOnlineReplyController {
@Inject
private BaseService baseService;
@At("")
@At("/")
@SaCheckPermission("legal.onlineReply")
@Ok("beetl:/platform/zhgh/staffbenefit/legal/onlineReply/index.html")
public void index() {
}
@At("/h5")
@SaCheckPermission("h5.legal.onlineReply")
@Ok("beetl:/platform/zhghh5/staffbenefit/legal/onlineReply/index.html")
public void h5Index() {
}
@At
@ApiOperation("分页查询")
@SaCheckPermission("legal.onlineReply")
@SaCheckPermission(value = {"legal.onlineReply", "h5.legal.onlineReply"}, mode = SaMode.OR)
public Result pageData(PageForm pageForm,
@Param(value = "year") Integer year,
@Param(value = "isReply") Boolean isReply) {
@@ -86,9 +93,9 @@ public class LegalOnlineReplyController {
@At
@ApiOperation("新增/修改法律援助线上回复")
@SaCheckPermission("legal.onlineReply")
@SaCheckPermission(value = {"legal.onlineReply", "h5.legal.onlineReply"}, mode = SaMode.OR)
@SLog(tag = "法律援助系统-线上回复", msg = "新增/修改法律援助线上回复")
public Object onSubmit(LegalOnlineReply reply) {
public Object submit(LegalOnlineReply reply) {
if (StrUtil.isBlank(reply.getId())) {
View_user user = dao.fetch(View_user.class, Cnd.where("id", "=", SecurityUtil.getUserId()));
reply.setReplyUserId(user.getId());
@@ -107,7 +114,7 @@ public class LegalOnlineReplyController {
@At
@ApiOperation("查询法律援助线上回复")
@SaCheckPermission("legal.onlineReply")
@SaCheckPermission(value = {"legal.onlineReply", "h5.legal.onlineReply"}, mode = SaMode.OR)
public Result fetchOne(String id) {
LegalOnlinePost onlinePost = dao.fetch(LegalOnlinePost.class, id);
List<LegalOnlineReply> replyList = dao.query(
@@ -1,11 +1,16 @@
package com.budwk.app.zhgh.staffbenefit.psychology.controller;
import cn.dev33.satoken.annotation.SaCheckPermission;
import cn.dev33.satoken.annotation.SaMode;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import com.budwk.app.base.annotation.SLog;
import com.budwk.app.base.page.Pagination;
import com.budwk.app.base.param.PageForm;
import com.budwk.app.base.result.Result;
import com.budwk.app.sys.views.View_user;
import com.budwk.app.web.commons.auth.utils.SecurityUtil;
import com.budwk.app.zhgh.staffbenefit.condolence.model.Condolence;
import com.budwk.app.zhgh.staffbenefit.psychology.model.PsychologyApply;
import com.budwk.app.zhgh.staffbenefit.psychology.service.PsychologyApplyService;
import io.swagger.annotations.Api;
@@ -13,11 +18,17 @@ import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.nutz.dao.Cnd;
import org.nutz.dao.Dao;
import org.nutz.dao.Sqls;
import org.nutz.dao.sql.Sql;
import org.nutz.dao.util.cri.SqlExpressionGroup;
import org.nutz.ioc.loader.annotation.Inject;
import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.lang.util.NutMap;
import org.nutz.mvc.annotation.At;
import org.nutz.mvc.annotation.Ok;
import java.util.List;
/**
* @ClassName PsychologyApplyController
* @Author JyuHsin
@@ -37,17 +48,23 @@ public class PsychologyApplyController {
@Inject
private PsychologyApplyService applyService;
@At("")
@At("/")
@SaCheckPermission("psychology.apply")
@Ok("beetl:/platform/zhgh/staffbenefit/psychology/apply/index.html")
public void index() {
}
@At("/h5")
@SaCheckPermission("h5.psychology.apply")
@Ok("beetl:/platform/zhghh5/staffbenefit/psychology/apply/index.html")
public void h5Index() {
}
@At
@ApiOperation("新增/修改心理咨询预约")
@SaCheckPermission("psychology.apply")
@SaCheckPermission(value = {"psychology.apply", "h5.psychology.apply"}, mode = SaMode.OR)
@SLog(tag = "心理咨询系统-心理咨询预约", msg = "新增/修改心理咨询预约")
public Object onSubmit(PsychologyApply apply) {
public Object submit(PsychologyApply apply) {
PsychologyApply psychologyApply = applyService.fetch(apply.getId());
if(StrUtil.isNotBlank(psychologyApply.getUserId())) {
return Result.error("该时段已被预约");
@@ -67,4 +84,39 @@ public class PsychologyApplyController {
//TODO:这里后面要加发短信
return Result.success();
}
@At
@ApiOperation("移动端预约查询咨询师")
@SaCheckPermission(value = {"psychology.apply", "h5.psychology.apply"}, mode = SaMode.OR)
@SLog(tag = "心理咨询系统-移动端预约查询咨询师", msg = "移动端预约查询咨询师")
public Object h5PageData(PageForm pageForm, String sex) {
Sql sql = Sqls.create("""
SELECT
pd.*
FROM
psychology_doctor pd
$condition
""");
Cnd cnd = Cnd.NEW();
cnd.and(Cnd.likeEX("pd.sex", sex));
if (StrUtil.isNotBlank(pageForm.getSearchKeyword())) {
SqlExpressionGroup seg = new SqlExpressionGroup();
seg.or("pd.userName", "like", "%" + pageForm.getSearchKeyword() + "%");
seg.or("pd.loginName", "like", "%" + pageForm.getSearchKeyword() + "%");
cnd.and(seg);
}
sql.setCondition(cnd);
Pagination pagination = applyService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
List<NutMap> list = pagination.getList(NutMap.class);
for (NutMap nutMap : list) {
List<PsychologyApply> applyList = dao.query(
PsychologyApply.class,
Cnd.where(PsychologyApply::getDoctorUser, "=", nutMap.getString("userId"))
.and(PsychologyApply::getStartTime, ">=", DateUtil.now())
.and(PsychologyApply::getUserId, "is", null)
);
nutMap.put("times", applyList);
}
return Result.success(pagination);
}
}
@@ -74,9 +74,9 @@ public class PsychologyDoctorController {
@At
@Aop(TransAop.READ_COMMITTED)
@ApiOperation("新增/修改心理咨询师")
@ApiOperation("新增/修改咨询师")
@SaCheckPermission("psychology.doctorManage")
@SLog(tag = "心理咨询系统-心理咨询师", msg = "新增/修改心理咨询师")
@SLog(tag = "心理咨询系统-咨询师", msg = "新增/修改咨询师")
public Object onSubmit(PsychologyDoctor doctor) {
Sys_role role = sysRoleService.getByCode(RoleConstant.PSYCHOLOGY_DOCTOR);
if(StrUtil.isBlank(doctor.getId())) {
@@ -102,9 +102,9 @@ public class PsychologyDoctorController {
}
@At
@ApiOperation("删除心理咨询师")
@ApiOperation("删除咨询师")
@SaCheckPermission("psychology.doctorManage")
@SLog(tag = "心理咨询系统-心理咨询师", msg = "删除心理咨询师")
@SLog(tag = "心理咨询系统-咨询师", msg = "删除咨询师")
public Object onDelete(String id) {
doctorService.delete(id);
return Result.success();
@@ -1,67 +0,0 @@
package com.budwk.app.zhgh.staffbenefit.psychology.controller;
import cn.dev33.satoken.annotation.SaCheckPermission;
import com.budwk.app.base.page.Pagination;
import com.budwk.app.base.result.Result;
import com.budwk.app.zhgh.staffbenefit.psychology.model.PsychologyDoctor;
import com.budwk.app.zhgh.staffbenefit.psychology.service.PsychologyDoctorService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.nutz.dao.Cnd;
import org.nutz.ioc.loader.annotation.Inject;
import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.lang.Lang;
import org.nutz.mvc.annotation.At;
import org.nutz.mvc.annotation.Ok;
import java.util.ArrayList;
import java.util.List;
/**
* @Author zzr
* @namePsychologyIndexController
* @Date 2025/9/12 10:54
* @version 1.0
* @注释
*/
@Slf4j
@IocBean
@Ok("json:full")
@Api(tags = "心理咨询")
@At("/platform/psychology/index")
public class PsychologyIndexController {
@Inject
private PsychologyDoctorService psychologyDoctorService;
@At("")
// @SaCheckPermission("psychology.index")
@Ok("beetl:/platform/zhgh/staffbenefit/psychology/index/index.html")
public void index() {
}
@At
// @SaCheckPermission("psychology.index")
@Ok("beetl:/platform/zhghh5/staffbenefit/psychology/index/index.html")
public void h5() {
}
@At
@ApiOperation("手机端咨询师列表展示")
// @SaCheckPermission("psychology.index")
public Result listConsultantByH5(){
Pagination<PsychologyDoctor> pagination = psychologyDoctorService.listPage(1, 4, Cnd.NEW());
List<PsychologyDoctor> list = pagination.getList();
// 判断有没有咨询师,并且咨询师数量小于4的话,要顺序填充到4个,便于前端展示
if (Lang.isNotEmpty(list) && list.size() < 4) {
List<PsychologyDoctor> filledList = new ArrayList<>(4);
for (int i = 0; i < 4; i++) {
filledList.add(list.get(i % list.size()));
}
pagination.setList(filledList);
}
return Result.success(pagination.getList());
}
}
@@ -1,6 +1,7 @@
package com.budwk.app.zhgh.staffbenefit.psychology.controller;
import cn.dev33.satoken.annotation.SaCheckPermission;
import cn.dev33.satoken.annotation.SaMode;
import com.budwk.app.base.annotation.SLog;
import com.budwk.app.base.constant.RoleConstant;
import com.budwk.app.base.page.Pagination;
@@ -43,15 +44,21 @@ public class PsychologyListController {
@Inject
private PsychologyApplyService applyService;
@At("")
@At("/")
@SaCheckPermission("psychology.list")
@Ok("beetl:/platform/zhgh/staffbenefit/psychology/list/index.html")
public void index() {
}
@At("/h5")
@SaCheckPermission("h5.psychology.list")
@Ok("beetl:/platform/zhghh5/staffbenefit/psychology/list/index.html")
public void h5Index() {
}
@At
@ApiOperation("分页查询")
@SaCheckPermission("psychology.list")
@SaCheckPermission(value = {"psychology.list", "h5.psychology.list"}, mode = SaMode.OR)
public Result pageData(PageForm pageForm,
@Param(value = "year") Integer year) {
Sql sql = Sqls.create("""
@@ -88,9 +95,9 @@ public class PsychologyListController {
@At
@ApiOperation("删除心理咨询预约")
@SaCheckPermission("psychology.list")
@SaCheckPermission(value = {"psychology.list", "h5.psychology.list"}, mode = SaMode.OR)
@SLog(tag = "心理咨询系统-心理咨询预约", msg = "删除心理咨询预约")
public Object onDelete(String id) {
public Object delete(String id) {
PsychologyApply apply = applyService.fetch(id);
apply.setUserId(null);
apply.setLoginName(null);
@@ -1,6 +1,7 @@
package com.budwk.app.zhgh.staffbenefit.psychology.controller;
import cn.dev33.satoken.annotation.SaCheckPermission;
import cn.dev33.satoken.annotation.SaMode;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import com.budwk.app.base.annotation.SLog;
@@ -50,15 +51,21 @@ public class PsychologyOnlinePostController {
@Inject
private BaseService baseService;
@At("")
@At("/")
@SaCheckPermission("psychology.onlinePost")
@Ok("beetl:/platform/zhgh/staffbenefit/psychology/onlinePost/index.html")
public void index() {
}
@At("/h5")
@SaCheckPermission("h5.psychology.onlinePost")
@Ok("beetl:/platform/zhghh5/staffbenefit/psychology/onlinePost/index.html")
public void h5Index() {
}
@At
@ApiOperation("分页查询")
@SaCheckPermission("psychology.onlinePost")
@SaCheckPermission(value = {"psychology.onlinePost", "h5.psychology.onlinePost"}, mode = SaMode.OR)
public Result pageData(PageForm pageForm,
@Param(value = "year") Integer year,
@Param(value = "isReply") Boolean isReply) {
@@ -78,6 +85,7 @@ public class PsychologyOnlinePostController {
cnd.andEX("YEAR(pop.postingTime)", "=", year);
cnd.groupBy("pop.id");
cnd.having(Cnd.where("count(por.id)", isReply == null ? ">=" : isReply ? ">" : "=", 0));
cnd.desc("pop.postingTime");
sql.setCondition(cnd);
Pagination pagination = baseService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
return Result.success(pagination);
@@ -85,9 +93,9 @@ public class PsychologyOnlinePostController {
@At
@ApiOperation("新增/修改心理咨询线上发帖")
@SaCheckPermission("psychology.onlinePost")
@SaCheckPermission(value = {"psychology.onlinePost", "h5.psychology.onlinePost"}, mode = SaMode.OR)
@SLog(tag = "心理咨询系统-线上发帖", msg = "新增/修改心理咨询线上发帖")
public Object onSubmit(PsychologyOnlinePost post) {
public Object submit(PsychologyOnlinePost post) {
if(StrUtil.isBlank(post.getId())) {
View_user user = dao.fetch(View_user.class, Cnd.where("id", "=", SecurityUtil.getUserId()));
post.setPoster(user.getId());
@@ -106,16 +114,16 @@ public class PsychologyOnlinePostController {
@At
@ApiOperation("删除心理咨询线上发帖")
@SaCheckPermission("psychology.onlinePost")
@SaCheckPermission(value = {"psychology.onlinePost", "h5.psychology.onlinePost"}, mode = SaMode.OR)
@SLog(tag = "心理咨询系统-线上发帖", msg = "删除心理咨询线上发帖")
public Object onDelete(String id) {
public Object delete(String id) {
dao.delete(PsychologyOnlinePost.class, id);
return Result.success();
}
@At
@ApiOperation("查询心理咨询线上发帖")
@SaCheckPermission("psychology.onlinePost")
@SaCheckPermission(value = {"psychology.onlinePost", "h5.psychology.onlinePost"}, mode = SaMode.OR)
public Result fetchOne(String id) {
PsychologyOnlinePost onlinePost = dao.fetch(PsychologyOnlinePost.class, id);
List<PsychologyOnlineReply> replyList = dao.query(
@@ -1,6 +1,7 @@
package com.budwk.app.zhgh.staffbenefit.psychology.controller;
import cn.dev33.satoken.annotation.SaCheckPermission;
import cn.dev33.satoken.annotation.SaMode;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import com.budwk.app.base.annotation.SLog;
@@ -48,15 +49,21 @@ public class PsychologyOnlineReplyController {
@Inject
private BaseService baseService;
@At("")
@At("/")
@SaCheckPermission("psychology.onlineReply")
@Ok("beetl:/platform/zhgh/staffbenefit/psychology/onlineReply/index.html")
public void index() {
}
@At("/h5")
@SaCheckPermission("h5.psychology.onlineReply")
@Ok("beetl:/platform/zhghh5/staffbenefit/psychology/onlineReply/index.html")
public void h5Index() {
}
@At
@ApiOperation("分页查询")
@SaCheckPermission("psychology.onlineReply")
@SaCheckPermission(value = {"psychology.onlineReply", "h5.psychology.onlineReply"}, mode = SaMode.OR)
public Result pageData(PageForm pageForm,
@Param(value = "year") Integer year,
@Param(value = "isReply") Boolean isReply) {
@@ -86,9 +93,9 @@ public class PsychologyOnlineReplyController {
@At
@ApiOperation("新增/修改心理咨询线上回复")
@SaCheckPermission("psychology.onlineReply")
@SaCheckPermission(value = {"psychology.onlineReply", "h5.psychology.onlineReply"}, mode = SaMode.OR)
@SLog(tag = "心理咨询系统-线上回复", msg = "新增/修改心理咨询线上回复")
public Object onSubmit(PsychologyOnlineReply reply) {
public Object submit(PsychologyOnlineReply reply) {
if (StrUtil.isBlank(reply.getId())) {
View_user user = dao.fetch(View_user.class, Cnd.where("id", "=", SecurityUtil.getUserId()));
reply.setReplyUserId(user.getId());
@@ -107,7 +114,7 @@ public class PsychologyOnlineReplyController {
@At
@ApiOperation("查询心理咨询线上回复")
@SaCheckPermission("psychology.onlineReply")
@SaCheckPermission(value = {"psychology.onlineReply", "h5.psychology.onlineReply"}, mode = SaMode.OR)
public Result fetchOne(String id) {
PsychologyOnlinePost onlinePost = dao.fetch(PsychologyOnlinePost.class, id);
List<PsychologyOnlineReply> replyList = dao.query(