package com.panzhihua.timejob.jobhandler; import java.util.Date; import java.util.List; import javax.annotation.Resource; import org.springframework.stereotype.Component; import org.springframework.util.ObjectUtils; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.panzhihua.common.model.dtos.community.integral.admin.AddComActIntegralUserDTO; import com.panzhihua.common.model.vos.R; import com.panzhihua.common.model.vos.community.integral.admin.ComActActivityPeopleVO; import com.panzhihua.common.model.vos.partybuilding.PartyBuildingActivityVO; import com.panzhihua.common.model.vos.user.SysUserNoticeVO; import com.panzhihua.common.service.community.CommunityService; import com.panzhihua.common.service.partybuilding.PartyBuildingService; import com.panzhihua.common.service.user.UserService; import com.xxl.job.core.biz.model.ReturnT; import com.xxl.job.core.handler.annotation.XxlJob; import lombok.extern.slf4j.Slf4j; /** * @program: springcloud_k8s_panzhihuazhihuishequ * @description: 党建相关 * @author: huang.hongfa weixin hhf9596 qq 959656820 * @create: 2021-01-14 16:09 **/ @Slf4j @Component public class PartyBuildingJobHandler { @Resource private PartyBuildingService partyBuildingService; @Resource private UserService userService; @Resource private CommunityService communityService; /** * 定时任务刷新党建动态发布状态 * * @return 刷新个数 * @throws Exception * 出现的异常 */ @XxlJob("timedtaskpartybuildingstatusJobHandler") public ReturnT timedtaskpartybuildingstatusJobHandler(String param) throws Exception { log.info("定时任务刷新党建动态发布状态"); R r = partyBuildingService.timedTaskPartyBuildingStatus(); log.info("执行结果【{}】", r.toString()); return ReturnT.SUCCESS; } /** * 定时任务取消党建活动 * * @return 取消个数 * @throws Exception * 出现的异常 */ @XxlJob("timedTaskPartyBuildingActivityJobHandler") public ReturnT timedTaskPartyBuildingActivityJobHandler(String param) throws Exception { log.info("定时任务取消党建活动"); R r = partyBuildingService.timedTaskPartyBuildingActivity(); if (R.isOk(r)) { Object data = r.getData(); if (!ObjectUtils.isEmpty(data)) { List partyBuildingActivityVOS = JSONArray.parseArray(JSONArray.toJSONString(data), PartyBuildingActivityVO.class); if (!ObjectUtils.isEmpty(partyBuildingActivityVOS)) { partyBuildingActivityVOS.forEach(partyBuildingActivityVO -> { List userIds = partyBuildingActivityVO.getUserIds(); if (!ObjectUtils.isEmpty(userIds)) { userIds.forEach(aLong -> { SysUserNoticeVO sysUserNoticeVO = new SysUserNoticeVO(); sysUserNoticeVO.setUserId(aLong); sysUserNoticeVO.setType(1); sysUserNoticeVO.setBusinessType(2); sysUserNoticeVO.setBusinessTitle(partyBuildingActivityVO.getName()); sysUserNoticeVO.setBusinessTime(new Date()); sysUserNoticeVO.setBusinessId(partyBuildingActivityVO.getId()); sysUserNoticeVO.setStatus(0); sysUserNoticeVO.setTitle("活动因故取消"); sysUserNoticeVO.setBusinessContent("报名人数不足活动自动取消"); sysUserNoticeVO.setBusinessStatus(1); R r2 = userService.addNotice(sysUserNoticeVO); if (R.isOk(r2)) { log.info("新增党建活动取消通知成功【{}】", JSONObject.toJSONString(sysUserNoticeVO)); } }); } }); } } } log.info("执行结果【{}】", r.toString()); return ReturnT.SUCCESS; } /** * 定时任务刷新党建活动的各个状态 除取消外 * * @return 刷新个数 * @throws Exception * 出现的异常 */ @XxlJob("timedTaskPartyBuildingActivityAllJobHandler") public ReturnT timedTaskPartyBuildingActivityAllJobHandler(String param) throws Exception { log.info("定时任务刷新党建活动的各个状态 除取消外"); R r = partyBuildingService.timedTaskPartyBuildingActivityAll(); if (R.isOk(r)) { // 获取待结束的活动列表 List activityList = JSONArray.parseArray(JSONArray.toJSONString(r.getData()), Long.class); if (!activityList.isEmpty()) { log.info("党员活动结束计算积分"); activityList.forEach(activityId -> { R r1 = partyBuildingService.getTaskPbActivityPeopleList(activityId); if (R.isOk(r1)) { List peopleList = JSONArray.parseArray(JSONArray.toJSONString(r1.getData()), ComActActivityPeopleVO.class); if (!peopleList.isEmpty()) { peopleList.forEach(people -> { communityService.addIntegralTradeAdmin(new AddComActIntegralUserDTO( people.getActivityId(), AddComActIntegralUserDTO.integralType.cydyhd, people.getCommunityId(), people.getUserId())); }); } } }); } } log.info("执行结果【{}】", r.toString()); return ReturnT.SUCCESS; } }