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
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
package cn.wisenergy.service.app.impl;
import cn.wisenergy.mapper.*;
import cn.wisenergy.model.app.*;
import cn.wisenergy.service.app.LastMonthUserInfoService;
import cn.wisenergy.service.app.MonthUserLevelService;
import cn.wisenergy.service.app.UserLevelService;
import cn.wisenergy.service.app.UserLevelTaskService;
import com.sun.org.apache.bcel.internal.generic.ARRAYLENGTH;
import com.xxl.job.core.handler.annotation.XxlJob;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.xssf.model.IndexedUDFFinder;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
@Service
@Slf4j
public class UserLevelTaskServiceImpl implements UserLevelTaskService {
@Autowired
private OrderMapper orderMapper;
@Autowired
private UsersMapper usersMapper;
@Autowired
private UserLevelService userLevelService;
@Autowired
private MonthUserLevelService monthUserLevelService;
@Autowired
private LastMonthUserInfoMapper lastMonthUserInfoMapper;
@Autowired
private LastMonthRecommendUserMapper lastMonthRecommendUserMapper;
@Autowired
private LastMonthTeamUserInfoMapper lastMonthTeamUserInfoMapper;
@Autowired
private LastMonthUserInfoService lastMonthUserInfoService;
@Autowired
private UserDataInfoMapper userDataInfoMapper;
@XxlJob(value = "userLevelUpjobhandler")
@Override
public void userLevelUp() {
//1.获取数据库订单数据
log.info("------------------------日定时任务:升级:--每5分钟执行一次:用户升级开始----------------------------------");
List<OrderInfo> ordersByLevelStatus = orderMapper.getByLevelStatus(0);
for (OrderInfo orderInfo : ordersByLevelStatus) {
String userId = orderInfo.getUserId();
userLevelService.userLevelUpgrade(userId);
//当前订单升级状态置为1
orderInfo.setLevelStatus(1);
orderMapper.updateById(orderInfo);
}
log.info("-------------------------日定时任务:升级:--每5分钟执行一次:用户升级结束--------------------------------------");
}
@XxlJob("monthUserLevelUpjobhandler")
@Override
public void monthUserLevelUp(){
/**
* 根据上月的镜像表镜像lastmonth_userinfo
* lastmonth_recommend_user
* lastmonth_team_user_info
* lastmonth_cultivating_prize_info
*/
lastMonthUserInfoService.userInfoMirrorImage();
/**
* 1、获取订单数据 根据订单对应的userId进行升级以及升级后直推数据与团队数据维护
*/
log.info("------------------------月定时任务:每月执行一次 ====用户升级开始----------------------------------");
List<OrderInfo> ordersByLevelStatus = orderMapper.getByMonthOrderStatus(0);
for (OrderInfo orderInfo : ordersByLevelStatus) {
//用户信息
String userId = orderInfo.getUserId();
//月度升级功能实现
monthUserLevelService.monthUserLevelUpgrade(userId);
//当前订单升级状态置为1
orderInfo.setMonthOrderStatus(1);
orderMapper.updateById(orderInfo);
}
/**
* 根据用户填写邀请码的行为记录表
* 进行用户的直推团队数据维护 之后进行升级
*/
List<UserDataInfo> userDataInfoList = userDataInfoMapper.getListByLevelStatus(0);
for (UserDataInfo userDataInfo : userDataInfoList) {
String userId = userDataInfo.getUserId();
String beInvitedCode = userDataInfo.getBeInvitedCode();
LastMonthUserInfo userByUserId = lastMonthUserInfoMapper.getUserByUserId(userId);
userByUserId.setBeInvitedCode(beInvitedCode);
lastMonthUserInfoMapper.updateById(userByUserId);
LastMonthUserInfo user = lastMonthUserInfoMapper.getuserByBeInvitedCode(beInvitedCode);
if (null != user){
String inviteUserId = user.getUserId();
lastmonthUserSetBeinviteCode(userId,inviteUserId);
}
userDataInfo.setLevelStatus(1);
userDataInfoMapper.updateById(userDataInfo);
}
/**
* 将月度定时任务的执行结果同步至线上user_info表中
*/
List<LastMonthUserInfo> lastMonthUserInfoList = lastMonthUserInfoMapper.getAll();
if (null != lastMonthUserInfoList){
for (LastMonthUserInfo lastMonthUserInfo : lastMonthUserInfoList) {
String userId = lastMonthUserInfo.getUserId();
int userLevel = lastMonthUserInfo.getUserLevel();
User userByUserId = usersMapper.getUserByUserId(userId);
if (null != userByUserId){
userByUserId.setUserLevel(userLevel);
}
usersMapper.updateById(userByUserId);
}
}
/**
* 镜像用户信息表
* 直推表
* 团队表
* 培育奖记录表
*/
lastMonthUserInfoService.userInfoMirrorImageBack();
log.info("-------------------------月定时任务:每月执行一次 ====用户升级结束----------------------------------");
}
private void lastmonthUserSetBeinviteCode(String userId, String inviteUserId) {
//3、上级用户的直推表数据维护
lastmonthRecommendInfoDataPreserve(userId,inviteUserId);
//4、用户团队数据维护
lastmonthTeamDataPreserve(userId,inviteUserId);
//5、月度升级
monthUserLevelService.monthUserLevelUpgrade(inviteUserId);
}
private void lastmonthRecommendInfoDataPreserve(String userId, String inviteUserId) {
LastMonthUserInfo byUserId = lastMonthUserInfoMapper.getByUserId(userId);
int userLevel = byUserId.getUserLevel();
LastMonthRecommendUser recommendUserMapperByRandUser = lastMonthRecommendUserMapper.getByUserId(inviteUserId);
if (userLevel == 0){
//普通用户数量 + 1
Integer normalUserNum = recommendUserMapperByRandUser.getNormalUserNum();
recommendUserMapperByRandUser.setNormalUserNum(normalUserNum +1);
lastMonthRecommendUserMapper.updateById(recommendUserMapperByRandUser);
}else if (userLevel == 1){
//幼苗用户数量 + 1
Integer seedlingNum = recommendUserMapperByRandUser.getSeedlingNum();
recommendUserMapperByRandUser.setSeedlingNum(seedlingNum + 1);
lastMonthRecommendUserMapper.updateById(recommendUserMapperByRandUser);
}else if (userLevel == 2){
//青铜用户数量 + 1
Integer bronzeTreeNum = recommendUserMapperByRandUser.getBronzeTreeNum();
recommendUserMapperByRandUser.setBronzeTreeNum(bronzeTreeNum + 1 );
lastMonthRecommendUserMapper.updateById(recommendUserMapperByRandUser);
}else if (userLevel == 3){
//白银用户数量 + 1
Integer silverTreeNum = recommendUserMapperByRandUser.getSilverTreeNum();
recommendUserMapperByRandUser.setSilverTreeNum(silverTreeNum + 1 );
lastMonthRecommendUserMapper.updateById(recommendUserMapperByRandUser);
}else if (userLevel == 4){
//黄金用户数量 + 1
Integer goldTreeNum = recommendUserMapperByRandUser.getGoldTreeNum();
recommendUserMapperByRandUser.setGoldTreeNum(goldTreeNum + 1);
lastMonthRecommendUserMapper.updateById(recommendUserMapperByRandUser);
}else if (userLevel == 5){
//农场主用户数量 + 1
Integer farmerNum = recommendUserMapperByRandUser.getFarmerNum();
recommendUserMapperByRandUser.setFarmerNum(farmerNum + 1);
lastMonthRecommendUserMapper.updateById(recommendUserMapperByRandUser);
}else if (userLevel == 6){
//森林之星用户数量 + 1
Integer forestStartNum = recommendUserMapperByRandUser.getForestStartNum();
recommendUserMapperByRandUser.setForestStartNum(forestStartNum + 1);
lastMonthRecommendUserMapper.updateById(recommendUserMapperByRandUser);
}else if (userLevel == 7){
//西田森合伙人用户数量 + 1
Integer partnerNum = recommendUserMapperByRandUser.getPartnerNum();
recommendUserMapperByRandUser.setFarmerNum(partnerNum + 1);
lastMonthRecommendUserMapper.updateById(recommendUserMapperByRandUser);
}
}
/**
* 团队数据维护
* @param userId
* @param userInvitedId
*/
private void lastmonthTeamDataPreserve(String userId, String userInvitedId) {
LastMonthUserInfo userByUserId = lastMonthUserInfoMapper.getUserByUserId(userId);
//用户等级
int userLevel = userByUserId.getUserLevel();
//当前用户的团队各人数等级
// TeamUserInfo userTeamUserInfoMapperByUserId = lastMonthTeamUserInfoMapper.getByUserId(userId);
LastMonthTeamUserInfo userTeamUserInfoMapperByUserId = lastMonthTeamUserInfoMapper.getByUserId(userId);
if (null != userTeamUserInfoMapperByUserId ){
Integer normalUserNum = userTeamUserInfoMapperByUserId.getNormalUserNum();
Integer seedlingNum = userTeamUserInfoMapperByUserId.getSeedlingNum();
Integer bronzeTreeNum = userTeamUserInfoMapperByUserId.getBronzeTreeNum();
Integer silverTreeNum = userTeamUserInfoMapperByUserId.getSilverTreeNum();
Integer goldTreeNum = userTeamUserInfoMapperByUserId.getGoldTreeNum();
Integer farmerNum = userTeamUserInfoMapperByUserId.getFarmerNum();
Integer forestStartNum = userTeamUserInfoMapperByUserId.getForestStartNum();
Integer partnerNum = userTeamUserInfoMapperByUserId.getPartnerNum();
//推荐人的用户的团队各等级人数
// TeamUserInfo inviteTeamUserInfoMapperByUserId = lastMonthTeamUserInfoMapper.getByUserId(userInvitedId);
LastMonthTeamUserInfo inviteTeamUserInfoMapperByUserId = lastMonthTeamUserInfoMapper.getByUserId(userInvitedId);
if (null != inviteTeamUserInfoMapperByUserId){
if (0 == userLevel){
inviteTeamUserInfoMapperByUserId.setNormalUserNum(inviteTeamUserInfoMapperByUserId.getNormalUserNum() + normalUserNum + 1 );
inviteTeamUserInfoMapperByUserId.setSeedlingNum(inviteTeamUserInfoMapperByUserId.getSeedlingNum() + seedlingNum );
inviteTeamUserInfoMapperByUserId.setBronzeTreeNum(inviteTeamUserInfoMapperByUserId.getBronzeTreeNum() + bronzeTreeNum );
inviteTeamUserInfoMapperByUserId.setSilverTreeNum(inviteTeamUserInfoMapperByUserId.getSilverTreeNum() + silverTreeNum );
inviteTeamUserInfoMapperByUserId.setGoldTreeNum(inviteTeamUserInfoMapperByUserId.getGoldTreeNum() + goldTreeNum );
inviteTeamUserInfoMapperByUserId.setFarmerNum(inviteTeamUserInfoMapperByUserId.getFarmerNum() + farmerNum );
inviteTeamUserInfoMapperByUserId.setForestStartNum(inviteTeamUserInfoMapperByUserId.getForestStartNum() + forestStartNum );
inviteTeamUserInfoMapperByUserId.setPartnerNum(inviteTeamUserInfoMapperByUserId.getPartnerNum() + partnerNum );
}else if (1 == userLevel){
inviteTeamUserInfoMapperByUserId.setNormalUserNum(inviteTeamUserInfoMapperByUserId.getNormalUserNum() + normalUserNum );
inviteTeamUserInfoMapperByUserId.setSeedlingNum(inviteTeamUserInfoMapperByUserId.getSeedlingNum() + seedlingNum + 1 );
inviteTeamUserInfoMapperByUserId.setBronzeTreeNum(inviteTeamUserInfoMapperByUserId.getBronzeTreeNum() + bronzeTreeNum );
inviteTeamUserInfoMapperByUserId.setSilverTreeNum(inviteTeamUserInfoMapperByUserId.getSilverTreeNum() + silverTreeNum );
inviteTeamUserInfoMapperByUserId.setGoldTreeNum(inviteTeamUserInfoMapperByUserId.getGoldTreeNum() + goldTreeNum );
inviteTeamUserInfoMapperByUserId.setFarmerNum(inviteTeamUserInfoMapperByUserId.getFarmerNum() + farmerNum );
inviteTeamUserInfoMapperByUserId.setForestStartNum(inviteTeamUserInfoMapperByUserId.getForestStartNum() + forestStartNum );
inviteTeamUserInfoMapperByUserId.setPartnerNum(inviteTeamUserInfoMapperByUserId.getPartnerNum() + partnerNum );
}else if (2 == userLevel){
inviteTeamUserInfoMapperByUserId.setNormalUserNum(inviteTeamUserInfoMapperByUserId.getNormalUserNum() + normalUserNum );
inviteTeamUserInfoMapperByUserId.setSeedlingNum(inviteTeamUserInfoMapperByUserId.getSeedlingNum() + seedlingNum );
inviteTeamUserInfoMapperByUserId.setBronzeTreeNum(inviteTeamUserInfoMapperByUserId.getBronzeTreeNum() + bronzeTreeNum + 1 );
inviteTeamUserInfoMapperByUserId.setSilverTreeNum(inviteTeamUserInfoMapperByUserId.getSilverTreeNum() + silverTreeNum );
inviteTeamUserInfoMapperByUserId.setGoldTreeNum(inviteTeamUserInfoMapperByUserId.getGoldTreeNum() + goldTreeNum );
inviteTeamUserInfoMapperByUserId.setFarmerNum(inviteTeamUserInfoMapperByUserId.getFarmerNum() + farmerNum );
inviteTeamUserInfoMapperByUserId.setForestStartNum(inviteTeamUserInfoMapperByUserId.getForestStartNum() + forestStartNum );
inviteTeamUserInfoMapperByUserId.setPartnerNum(inviteTeamUserInfoMapperByUserId.getPartnerNum() + partnerNum );
}else if (3 == userLevel){
inviteTeamUserInfoMapperByUserId.setNormalUserNum(inviteTeamUserInfoMapperByUserId.getNormalUserNum() + normalUserNum );
inviteTeamUserInfoMapperByUserId.setSeedlingNum(inviteTeamUserInfoMapperByUserId.getSeedlingNum() + seedlingNum );
inviteTeamUserInfoMapperByUserId.setBronzeTreeNum(inviteTeamUserInfoMapperByUserId.getBronzeTreeNum() + bronzeTreeNum );
inviteTeamUserInfoMapperByUserId.setSilverTreeNum(inviteTeamUserInfoMapperByUserId.getSilverTreeNum() + silverTreeNum + 1 );
inviteTeamUserInfoMapperByUserId.setGoldTreeNum(inviteTeamUserInfoMapperByUserId.getGoldTreeNum() + goldTreeNum );
inviteTeamUserInfoMapperByUserId.setFarmerNum(inviteTeamUserInfoMapperByUserId.getFarmerNum() + farmerNum );
inviteTeamUserInfoMapperByUserId.setForestStartNum(inviteTeamUserInfoMapperByUserId.getForestStartNum() + forestStartNum );
inviteTeamUserInfoMapperByUserId.setPartnerNum(inviteTeamUserInfoMapperByUserId.getPartnerNum() + partnerNum );
}else if (4 == userLevel){
inviteTeamUserInfoMapperByUserId.setNormalUserNum(inviteTeamUserInfoMapperByUserId.getNormalUserNum() + normalUserNum );
inviteTeamUserInfoMapperByUserId.setSeedlingNum(inviteTeamUserInfoMapperByUserId.getSeedlingNum() + seedlingNum );
inviteTeamUserInfoMapperByUserId.setBronzeTreeNum(inviteTeamUserInfoMapperByUserId.getBronzeTreeNum() + bronzeTreeNum );
inviteTeamUserInfoMapperByUserId.setSilverTreeNum(inviteTeamUserInfoMapperByUserId.getSilverTreeNum() + silverTreeNum );
inviteTeamUserInfoMapperByUserId.setGoldTreeNum(inviteTeamUserInfoMapperByUserId.getGoldTreeNum() + goldTreeNum + 1 );
inviteTeamUserInfoMapperByUserId.setFarmerNum(inviteTeamUserInfoMapperByUserId.getFarmerNum() + farmerNum );
inviteTeamUserInfoMapperByUserId.setForestStartNum(inviteTeamUserInfoMapperByUserId.getForestStartNum() + forestStartNum );
inviteTeamUserInfoMapperByUserId.setPartnerNum(inviteTeamUserInfoMapperByUserId.getPartnerNum() + partnerNum );
}else if (5 == userLevel){
inviteTeamUserInfoMapperByUserId.setNormalUserNum(inviteTeamUserInfoMapperByUserId.getNormalUserNum() + normalUserNum );
inviteTeamUserInfoMapperByUserId.setSeedlingNum(inviteTeamUserInfoMapperByUserId.getSeedlingNum() + seedlingNum );
inviteTeamUserInfoMapperByUserId.setBronzeTreeNum(inviteTeamUserInfoMapperByUserId.getBronzeTreeNum() + bronzeTreeNum );
inviteTeamUserInfoMapperByUserId.setSilverTreeNum(inviteTeamUserInfoMapperByUserId.getSilverTreeNum() + silverTreeNum );
inviteTeamUserInfoMapperByUserId.setGoldTreeNum(inviteTeamUserInfoMapperByUserId.getGoldTreeNum() + goldTreeNum );
inviteTeamUserInfoMapperByUserId.setFarmerNum(inviteTeamUserInfoMapperByUserId.getFarmerNum() + farmerNum + 1 );
inviteTeamUserInfoMapperByUserId.setForestStartNum(inviteTeamUserInfoMapperByUserId.getForestStartNum() + forestStartNum );
inviteTeamUserInfoMapperByUserId.setPartnerNum(inviteTeamUserInfoMapperByUserId.getPartnerNum() + partnerNum );
}else if (6 == userLevel){
inviteTeamUserInfoMapperByUserId.setNormalUserNum(inviteTeamUserInfoMapperByUserId.getNormalUserNum() + normalUserNum );
inviteTeamUserInfoMapperByUserId.setSeedlingNum(inviteTeamUserInfoMapperByUserId.getSeedlingNum() + seedlingNum );
inviteTeamUserInfoMapperByUserId.setBronzeTreeNum(inviteTeamUserInfoMapperByUserId.getBronzeTreeNum() + bronzeTreeNum );
inviteTeamUserInfoMapperByUserId.setSilverTreeNum(inviteTeamUserInfoMapperByUserId.getSilverTreeNum() + silverTreeNum );
inviteTeamUserInfoMapperByUserId.setGoldTreeNum(inviteTeamUserInfoMapperByUserId.getGoldTreeNum() + goldTreeNum );
inviteTeamUserInfoMapperByUserId.setFarmerNum(inviteTeamUserInfoMapperByUserId.getFarmerNum() + farmerNum );
inviteTeamUserInfoMapperByUserId.setForestStartNum(inviteTeamUserInfoMapperByUserId.getForestStartNum() + forestStartNum + 1 );
inviteTeamUserInfoMapperByUserId.setPartnerNum(inviteTeamUserInfoMapperByUserId.getPartnerNum() + partnerNum );
}else if (7 == userLevel){
inviteTeamUserInfoMapperByUserId.setNormalUserNum(inviteTeamUserInfoMapperByUserId.getNormalUserNum() + normalUserNum );
inviteTeamUserInfoMapperByUserId.setSeedlingNum(inviteTeamUserInfoMapperByUserId.getSeedlingNum() + seedlingNum );
inviteTeamUserInfoMapperByUserId.setBronzeTreeNum(inviteTeamUserInfoMapperByUserId.getBronzeTreeNum() + bronzeTreeNum );
inviteTeamUserInfoMapperByUserId.setSilverTreeNum(inviteTeamUserInfoMapperByUserId.getSilverTreeNum() + silverTreeNum );
inviteTeamUserInfoMapperByUserId.setGoldTreeNum(inviteTeamUserInfoMapperByUserId.getGoldTreeNum() + goldTreeNum );
inviteTeamUserInfoMapperByUserId.setFarmerNum(inviteTeamUserInfoMapperByUserId.getFarmerNum() + farmerNum );
inviteTeamUserInfoMapperByUserId.setForestStartNum(inviteTeamUserInfoMapperByUserId.getForestStartNum() + forestStartNum );
inviteTeamUserInfoMapperByUserId.setPartnerNum(inviteTeamUserInfoMapperByUserId.getPartnerNum() + partnerNum + 1);
}
lastMonthTeamUserInfoMapper.updateById(inviteTeamUserInfoMapperByUserId);
//推荐人的推荐人id
LastMonthUserInfo invitedUserByUserId = lastMonthUserInfoMapper.getUserByUserId(userInvitedId);
if (null != invitedUserByUserId){
String beInvitedCode = invitedUserByUserId.getBeInvitedCode();
LastMonthUserInfo user = lastMonthUserInfoMapper.getuserByBeInvitedCode(beInvitedCode);
if (null != user){
String upUserId = user.getUserId();
lastmonthTeamDataPreserve(userId,upUserId);
}
}
}
}
}
}