manailin
2021-08-19 62d2377c27bf65a048a7c104b256efcd32ad2319
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
package com.panzhihua.timejob.jobhandler;
 
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.ActivitySignVO;
import com.panzhihua.common.model.vos.community.ComActActivityVO;
import com.panzhihua.common.model.vos.community.ComMngCarExcelVO;
import com.panzhihua.common.model.vos.community.integral.admin.ComActActivityPeopleVO;
import com.panzhihua.common.model.vos.user.SysUserNoticeVO;
import com.panzhihua.common.service.community.CommunityService;
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;
import org.springframework.stereotype.Component;
import org.springframework.util.ObjectUtils;
 
import javax.annotation.Resource;
import java.util.Date;
import java.util.List;
 
 
/**
 * @program: springcloud_k8s_panzhihuazhihuishequ
 * @description: 社区相关
 * @author: huang.hongfa weixin hhf9596 qq 959656820
 * @create: 2021-01-14 16:09
 **/
@Slf4j
@Component
public class CommunityJobHandler {
    @Resource
    private CommunityService communityService;
    @Resource
    private UserService userService;
 
    /**
     * 定时任务刷新社区动态置顶状态
     * @return 刷新个数
     * @throws Exception 出现的异常
     */
    @XxlJob("timedTaskDynIstoppingJobHandler")
    public ReturnT<String> timedTaskDynIstoppingJobHandler(String param) throws Exception {
        log.info("定时任务刷新社区动态置顶状态");
        R r=communityService.timedTaskDynIstopping();
        log.info("执行结果【{}】",r.toString());
        return ReturnT.SUCCESS;
    }
 
    /**
     * 定时任务刷新社区动态发布状态
     * @return 刷新个数
     * @throws Exception 出现的异常
     */
    @XxlJob("timedTaskDynStatusJobHandler")
    public ReturnT<String> timedTaskDynStatusJobHandler(String param) throws Exception {
        log.info("定时任务刷新社区动态发布状态");
        R r=communityService.timedTaskDynStatus();
        log.info("执行结果【{}】",r.toString());
        return ReturnT.SUCCESS;
    }
 
    /**
     * 定时任务取消社区活动
     * @return 刷新个数
     * @throws Exception 出现的异常
     */
    @XxlJob("timedTaskActActivityJobHandler")
    public ReturnT<String> timedTaskActActivityJobHandler(String param) throws Exception {
        log.info("定时任务取消社区活动");
        R r=communityService.timedTaskActActivity();
        if (R.isOk(r)) {
            Object data = r.getData();
            if (!ObjectUtils.isEmpty(data)) {
                List<ComActActivityVO> comActActivityVOS= JSONArray.parseArray(JSONArray.toJSONString(data),ComActActivityVO.class);
                if (!ObjectUtils.isEmpty(comActActivityVOS)) {
                    comActActivityVOS.forEach(comActActivityVO -> {
                        List<ActivitySignVO> activitySignVOList = comActActivityVO.getActivitySignVOList();
                        if (!ObjectUtils.isEmpty(activitySignVOList)) {
                            activitySignVOList.forEach(activitySignVO -> {
                                SysUserNoticeVO sysUserNoticeVO = new SysUserNoticeVO();
                                sysUserNoticeVO.setUserId(activitySignVO.getUserId());
                                sysUserNoticeVO.setType(1);
                                sysUserNoticeVO.setBusinessType(2);
                                sysUserNoticeVO.setBusinessTitle(comActActivityVO.getActivityName());
                                sysUserNoticeVO.setBusinessTime(new Date());
                                sysUserNoticeVO.setBusinessId(comActActivityVO.getId());
                                sysUserNoticeVO.setStatus(0);
                                sysUserNoticeVO.setTitle("活动因故取消");
                                sysUserNoticeVO.setBusinessContent("报名人数不足活动自动取消");
                                sysUserNoticeVO.setBusinessStatus(1);
                                sysUserNoticeVO.setActivityType(activitySignVO.getIsVolunteer().intValue()==1?1:2);
                                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("timedTaskActActivityAllJobHandler")
    public ReturnT<String> timedTaskActActivityAllJobHandler(String param) throws Exception {
        log.info("定时任务刷新社区活动的各个状态 除取消外");
        R r=communityService.timedTaskActActivityAll();
        if(R.isOk(r)){
            //获取待结束的活动列表
            List<Long> activityList = JSONArray.parseArray(JSONArray.toJSONString(r.getData()), Long.class);
            if(!activityList.isEmpty()){
                log.info("社区活动结束时计算积分");
                activityList.forEach(activityId -> {
                    R r1 = communityService.getTaskActivityPeopleList(activityId);
                    if (R.isOk(r1)){
                        List<ComActActivityPeopleVO> peopleList = JSONArray.parseArray(JSONArray.toJSONString(r1.getData()), ComActActivityPeopleVO.class);
                        if (!peopleList.isEmpty()){
                            peopleList.forEach(people -> {
                                if(people.getIsVolunteer().equals(1)){
                                    communityService.addIntegralTradeAdmin(new AddComActIntegralUserDTO(people.getActivityId()
                                            ,AddComActIntegralUserDTO.integralType.cyzyzhd,people.getCommunityId(),people.getUserId()));
                                }else{
                                    communityService.addIntegralTradeAdmin(new AddComActIntegralUserDTO(people.getActivityId()
                                            ,AddComActIntegralUserDTO.integralType.cysqhd,people.getCommunityId(),people.getUserId()));
                                }
                            });
                        }
                    }
                });
            }
        }
        log.info("执行结果【{}】",r.toString());
        return ReturnT.SUCCESS;
    }
 
 
    /**
     * 定时任务刷新社区活动的各个状态 除取消外
     * @return 刷新个数
     * @throws Exception 出现的异常
     */
    @XxlJob("timedTaskActMicroWishAllJobHandler")
    public ReturnT<String> timedTaskActMicroWishAllJobHandler(String param) throws Exception {
        log.info("定时任务刷新微心愿 待自动确认的状态");
        R r=communityService.timedTaskActMicroWishAll();
        log.info("执行结果【{}】",r.toString());
        return ReturnT.SUCCESS;
    }
 
    /**
     * 定时任务检测即将开始的社区活动,并使用订阅消息通知用户
     */
    @XxlJob("timedTaskActivityNoticeJobHandler")
    public ReturnT<String> timedTaskActivityNoticeJobHandler(String param){
        log.info("定时任务检测即将开始的社区活动,并使用订阅消息通知用户");
        R r=communityService.timedTaskActivityNotice();
        log.info("执行结果【{}】",r.toString());
        return ReturnT.SUCCESS;
    }
 
    /**
     * 定时任务检测待发布,调研中的问卷调查状态
     */
    @XxlJob("timedTaskQuestionnaireJobHandler")
    public ReturnT<String> timedTaskQuestionnaireJobHandler(String param){
        log.info("定时任务检测待发布,调研中的问卷调查状态");
        R r=communityService.timedTaskQuestionnaire();
        log.info("执行结果【{}】",r.toString());
        return ReturnT.SUCCESS;
    }
}