UserLevelServiceImpl.java 42.1 KB
Newer Older
codezwjava's avatar
codezwjava committed
1 2
package cn.wisenergy.service.app.impl;

codezwjava's avatar
codezwjava committed
3 4 5
import cn.wisenergy.mapper.*;
import cn.wisenergy.model.app.*;
import cn.wisenergy.model.enums.TradeRecordEnum;
6
import cn.wisenergy.service.app.AerialDeliveryUserService;
codezwjava's avatar
codezwjava committed
7 8 9 10 11 12 13 14
import cn.wisenergy.service.app.UserLevelService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.math.BigDecimal;
15
import java.util.List;
codezwjava's avatar
codezwjava committed
16 17 18 19 20 21 22 23 24

/**
 * @author zw
 * @ Description: 用户升级功能业务实现
 * @ Author     : zw
 * @ Date       : 2021/2/24 17:06
 */
@Service
@Slf4j
codezwjava's avatar
codezwjava committed
25
public class UserLevelServiceImpl extends ServiceImpl<UsersMapper, User> implements UserLevelService {
codezwjava's avatar
codezwjava committed
26 27

    @Autowired
licc's avatar
licc committed
28
    private UsersMapper usersMapper;
codezwjava's avatar
codezwjava committed
29 30

    @Autowired
licc's avatar
licc committed
31
    private RecommendUserMapper recommendUserMapper;
codezwjava's avatar
codezwjava committed
32 33

    @Autowired
licc's avatar
licc committed
34
    private TeamUserInfoMapper teamUserInfoMapper;
codezwjava's avatar
codezwjava committed
35

codezwjava's avatar
codezwjava committed
36 37 38 39 40 41
    @Autowired
    private TradeRecordMapper tradeRecordMapper;

    @Autowired
    private AccountMapper accountMapper;

42 43 44
    @Autowired
    private TeamPerformanceMapper teamPerformanceMapper;

codezwjava's avatar
codezwjava committed
45 46 47 48 49 50
    @Autowired
    private CultivatingPrizeMapper cultivatingPrizeMapper;

    @Autowired
    private CultivatingPrizeInfoMapper cultivatingPrizeInfoMapper;

51 52 53
    @Autowired
    private AerialDeliveryUserService aerialDeliveryUserService;

54 55 56
    @Autowired
    private OrderMapper orderMapper;

codezwjava's avatar
codezwjava committed
57 58 59 60
    //系统推荐人邀请码
    private static final String sysInviteCode1 = "1";
    private static final String sysInviteCode2 = "88888888";

codezwjava's avatar
codezwjava committed
61 62 63 64 65 66 67 68 69 70 71
    @Override
    @Transactional
    public void userLevelUpgrade(String userId) {
        //当前用户对象
        User user = usersMapper.getByUserId(userId);
        //当前用户直推表对象
        RecommendUser recommendUser = recommendUserMapper.getByUserId(userId);
        //当前用户团队信息表对象
        TeamUserInfo teamUserInfoMapperByUserId = teamUserInfoMapper.getByUserId(userId);
        //当前用户等级
        Integer userLevel = user.getUserLevel();
72 73 74 75 76 77 78 79 80 81
        //当前用户的累计消费
        BigDecimal performanceByUserid = new BigDecimal(0);
        if (userLevel == 0){
            //计算当前用户业绩
            performanceByUserid = orderMapper.getPerformanceByUserid(userId);
            if (null == performanceByUserid) {
                performanceByUserid = new BigDecimal(0);
            }
        }
        //当前用户的推荐人邀请码
codezwjava's avatar
codezwjava committed
82
        String beInvitedCode = user.getBeInvitedCode();
codezwjava's avatar
codezwjava committed
83 84 85 86
        //
        String inviteUserId = "";
        RecommendUser inviteRecommendUser = new RecommendUser();
        //若当前用户的推荐人邀请码是  “1” 时 则当前用户没有邀请人
87
        if (!sysInviteCode1.equals(beInvitedCode) && !sysInviteCode2.equals(beInvitedCode)) {
codezwjava's avatar
codezwjava committed
88
            //通过当前用户推荐人邀请码获取邀请人的userId
codezwjava's avatar
codezwjava committed
89 90 91 92 93 94
            User byBeInvitedCode = usersMapper.getByBeInvitedCode(beInvitedCode);
            if (null != byBeInvitedCode) {
                inviteUserId = byBeInvitedCode.getUserId();
                //邀请人的直推用户信息
                inviteRecommendUser = recommendUserMapper.getByUserId(inviteUserId);
            }
codezwjava's avatar
codezwjava committed
95
        }
codezwjava's avatar
codezwjava committed
96 97
        //用户等级升级为幼苗 1
        //若当前用户等级为0(普通用户)且跨境额度(业绩消费金额)>= 3980 进行升级0-->1
codezwjava's avatar
codezwjava committed
98
        //todo:根据业绩去计算  查一次表获取业绩
99
        if (userLevel == 0 && performanceByUserid.intValue() >= 3980) {
codezwjava's avatar
codezwjava committed
100
            user.setUserLevel(1);
101
            usersMapper.updateById(user);
102 103
            //同步accountInfo 和TeamPerformance 的用户等级
            accountAndTeamPerformanceUserLevelUpdate(userId);
codezwjava's avatar
codezwjava committed
104
            //用户推荐人邀请码为 1 时 该用户没有邀请人
105
            if (sysInviteCode1.equals(beInvitedCode) || sysInviteCode2.equals(beInvitedCode)) {
codezwjava's avatar
codezwjava committed
106 107
                return;
            } else {
codezwjava's avatar
codezwjava committed
108 109
                //推荐人直推信息表数据维护
                //若邀请人直推用户信息中的普通用户数量为0是则不用变化,否则普通用户数量-1
codezwjava's avatar
codezwjava committed
110
                if (inviteRecommendUser.getNormalUserNum() == 0) {
codezwjava's avatar
codezwjava committed
111
                    inviteRecommendUser.setNormalUserNum(inviteRecommendUser.getNormalUserNum());
codezwjava's avatar
codezwjava committed
112
                } else {
codezwjava's avatar
codezwjava committed
113
                    //普通用户-1
codezwjava's avatar
codezwjava committed
114
                    inviteRecommendUser.setNormalUserNum(inviteRecommendUser.getNormalUserNum() - 1);
codezwjava's avatar
codezwjava committed
115 116
                }
                //邀请人直推用户信息中的幼苗用户数量为+1
codezwjava's avatar
codezwjava committed
117
                inviteRecommendUser.setSeedlingNum(inviteRecommendUser.getSeedlingNum() + 1);
codezwjava's avatar
codezwjava committed
118 119
                recommendUserMapper.updateById(inviteRecommendUser);
                //团队用户表数据维护
120 121
                teamUserInfoNormalToSeed(inviteUserId);
//                aerialDeliveryUserService.teamDataNotRecommend(userId,inviteUserId);
codezwjava's avatar
codezwjava committed
122 123 124
                //上级用户获得幼苗等级的培育奖
                int level = 1;
                cultivatingPrizeToInvitedUser(userId, inviteUserId, level);
codezwjava's avatar
codezwjava committed
125 126 127 128 129 130 131
                //用户升级成功时,进行邀请人等级自查是否达到升级条件
                userLevelUpgrade(inviteUserId);
            }

        }
        //用户等级升级为青铜树 2
        //当前用户等级为幼苗用户(1)时 且当前用户直推人数中幼苗等级>=5人<20人时
codezwjava's avatar
codezwjava committed
132 133
        if (userLevel == 1 && recommendUser.getSeedlingNum() >= 3
                             && recommendUser.getSeedlingNum() < 15) {
codezwjava's avatar
codezwjava committed
134
            //用户升级成功
codezwjava's avatar
codezwjava committed
135
            user.setUserLevel(2);
136
            usersMapper.updateById(user);
137 138
            //同步accountInfo 和TeamPerformance 的用户等级
            accountAndTeamPerformanceUserLevelUpdate(userId);
codezwjava's avatar
codezwjava committed
139
            //用户被邀请码为 1 时 该用户没有邀请人
140
            if (sysInviteCode1.equals(beInvitedCode) || sysInviteCode2.equals(beInvitedCode)) {
codezwjava's avatar
codezwjava committed
141 142
                return;
            } else {
codezwjava's avatar
codezwjava committed
143 144
                //若邀请人直推用户信息中的幼苗用户数量为0是则不用变化,否则幼苗用户数量-1
                if (inviteRecommendUser.getSeedlingNum() == 0) {
codezwjava's avatar
codezwjava committed
145
                    inviteRecommendUser.setSeedlingNum(inviteRecommendUser.getSeedlingNum());
codezwjava's avatar
codezwjava committed
146
                } else {
codezwjava's avatar
codezwjava committed
147
                    //幼苗用户-1
codezwjava's avatar
codezwjava committed
148
                    inviteRecommendUser.setSeedlingNum(inviteRecommendUser.getSeedlingNum() - 1);
codezwjava's avatar
codezwjava committed
149 150
                }
                //邀请人直推用户信息中的青铜树用户数量为+1
codezwjava's avatar
codezwjava committed
151
                inviteRecommendUser.setBronzeTreeNum(inviteRecommendUser.getBronzeTreeNum() + 1);
codezwjava's avatar
codezwjava committed
152 153
                recommendUserMapper.updateById(inviteRecommendUser);
                //团队用户表数据维护
154 155
                teamUserInfoSeedToBronze(inviteUserId);
//                aerialDeliveryUserService.teamDataNotRecommend(userId,inviteUserId);
codezwjava's avatar
codezwjava committed
156 157 158
                //上级用户获得幼苗等级的培育奖
                int level = 2;
                cultivatingPrizeToInvitedUser(userId, inviteUserId, level);
codezwjava's avatar
codezwjava committed
159 160 161 162 163
                //用户升级成功时,进行邀请人等级自查是否达到升级条件
                userLevelUpgrade(inviteUserId);
            }
        }
        //用户等级升级为白银树 3
codezwjava's avatar
codezwjava committed
164 165
        if (userLevel == 2 && recommendUser.getSeedlingNum() >= 15
                            && recommendUser.getSeedlingNum() < 20) {
codezwjava's avatar
codezwjava committed
166
            user.setUserLevel(3);
167
            usersMapper.updateById(user);
168 169
            //同步accountInfo 和TeamPerformance 的用户等级
            accountAndTeamPerformanceUserLevelUpdate(userId);
codezwjava's avatar
codezwjava committed
170
            //用户被邀请码为 1 时 该用户没有邀请人
171
            if (sysInviteCode1.equals(beInvitedCode) || sysInviteCode2.equals(beInvitedCode)) {
codezwjava's avatar
codezwjava committed
172
                return;
codezwjava's avatar
codezwjava committed
173
            } else {
codezwjava's avatar
codezwjava committed
174 175
                //推荐人直推信息表数据维护
                //若邀请人直推用户信息中的青铜树用户数量为0是则不用变化,否则青铜树用户数量-1
codezwjava's avatar
codezwjava committed
176
                if (inviteRecommendUser.getBronzeTreeNum() == 0) {
codezwjava's avatar
codezwjava committed
177
                    inviteRecommendUser.setBronzeTreeNum(inviteRecommendUser.getBronzeTreeNum());
codezwjava's avatar
codezwjava committed
178
                } else {
codezwjava's avatar
codezwjava committed
179 180 181 182
                    //青铜树用户-1
                    inviteRecommendUser.setBronzeTreeNum(inviteRecommendUser.getBronzeTreeNum() - 1);
                }
                //邀请人直推用户信息中的白银用户数量 + 1
codezwjava's avatar
codezwjava committed
183
                inviteRecommendUser.setSilverTreeNum(inviteRecommendUser.getSilverTreeNum() + 1);
codezwjava's avatar
codezwjava committed
184 185
                recommendUserMapper.updateById(inviteRecommendUser);
                //团队用户表数据维护
186 187
                teamUserInfoBronzeToSilver(inviteUserId);
//                aerialDeliveryUserService.teamDataNotRecommend(userId,inviteUserId);
codezwjava's avatar
codezwjava committed
188 189 190
                //上级用户获得幼苗等级的培育奖
                int level = 3;
                cultivatingPrizeToInvitedUser(userId, inviteUserId, level);
codezwjava's avatar
codezwjava committed
191 192 193 194 195 196 197
                //用户升级成功时,进行邀请人等级自查是否达到升级条件
                userLevelUpgrade(inviteUserId);
            }

        }
        //用户等级升级为黄金树 4
        //:todo 条件:团队中青铜树数量>=20
codezwjava's avatar
codezwjava committed
198 199 200
        if (userLevel == 3 && recommendUser.getSeedlingNum() >= 20
                && recommendUser.getSilverTreeNum() >= 2
                && teamUserInfoMapperByUserId.getSeedlingNum() >= 30
codezwjava's avatar
codezwjava committed
201
                && teamUserInfoMapperByUserId.getBronzeTreeNum() >= 20) {
codezwjava's avatar
codezwjava committed
202
            user.setUserLevel(4);
203
            usersMapper.updateById(user);
204 205
            //同步accountInfo 和TeamPerformance 的用户等级
            accountAndTeamPerformanceUserLevelUpdate(userId);
codezwjava's avatar
codezwjava committed
206
            //用户被邀请码为 1 时 该用户没有邀请人
207
            if (sysInviteCode1.equals(beInvitedCode) || sysInviteCode2.equals(beInvitedCode)) {
codezwjava's avatar
codezwjava committed
208
                return;
codezwjava's avatar
codezwjava committed
209
            } else {
codezwjava's avatar
codezwjava committed
210 211
                //推荐人直推信息表数据维护
                //若邀请人直推用户信息中的白银树用户数量为0是则不用变化,否则白银树用户数量-1
codezwjava's avatar
codezwjava committed
212
                if (inviteRecommendUser.getSilverTreeNum() == 0) {
codezwjava's avatar
codezwjava committed
213
                    inviteRecommendUser.setSilverTreeNum(inviteRecommendUser.getSilverTreeNum());
codezwjava's avatar
codezwjava committed
214
                } else {
codezwjava's avatar
codezwjava committed
215 216 217 218 219 220 221
                    //白银树用户-1
                    inviteRecommendUser.setSilverTreeNum(inviteRecommendUser.getSilverTreeNum() - 1);
                }
                //邀请人直推用户信息中的黄金用户数量 + 1
                inviteRecommendUser.setGoldTreeNum(inviteRecommendUser.getGoldTreeNum() + 1);
                recommendUserMapper.updateById(inviteRecommendUser);
                //团队用户表数据维护
222 223
//                teamUserInfoSilverToGoldTree(inviteUserId);
                aerialDeliveryUserService.teamDataNotRecommend(userId,inviteUserId);
codezwjava's avatar
codezwjava committed
224 225 226
                //上级用户获得幼苗等级的培育奖
                int level = 4;
                cultivatingPrizeToInvitedUser(userId, inviteUserId, level);
codezwjava's avatar
codezwjava committed
227 228 229 230 231 232
                //用户升级成功时,进行邀请人等级自查是否达到升级条件
                userLevelUpgrade(inviteUserId);
            }
        }
        //用户等级级升级为农场主 5
        //:todo 条件:团队中白银树数量>=40
codezwjava's avatar
codezwjava committed
233 234 235
        if (userLevel == 4 && recommendUser.getSeedlingNum() >= 30
                && recommendUser.getGoldTreeNum() >= 2
                && teamUserInfoMapperByUserId.getSeedlingNum() >=70
codezwjava's avatar
codezwjava committed
236
                && teamUserInfoMapperByUserId.getSilverTreeNum() >= 40) {
codezwjava's avatar
codezwjava committed
237
            user.setUserLevel(5);
238
            usersMapper.updateById(user);
239 240
            //同步accountInfo 和TeamPerformance 的用户等级
            accountAndTeamPerformanceUserLevelUpdate(userId);
codezwjava's avatar
codezwjava committed
241
            //用户被邀请码为 1 时 该用户没有邀请人
242
            if (sysInviteCode1.equals(beInvitedCode) || sysInviteCode2.equals(beInvitedCode)) {
codezwjava's avatar
codezwjava committed
243
                return;
codezwjava's avatar
codezwjava committed
244
            } else {
codezwjava's avatar
codezwjava committed
245 246
                //推荐人直推信息表数据维护
                //若邀请人直推用户信息中的黄金树用户数量为0是则不用变化,否则黄金树用户数量-1
codezwjava's avatar
codezwjava committed
247
                if (inviteRecommendUser.getGoldTreeNum() == 0) {
codezwjava's avatar
codezwjava committed
248
                    inviteRecommendUser.setGoldTreeNum(inviteRecommendUser.getGoldTreeNum());
codezwjava's avatar
codezwjava committed
249
                } else {
codezwjava's avatar
codezwjava committed
250 251 252 253 254 255 256
                    //黄金树用户-1
                    inviteRecommendUser.setGoldTreeNum(inviteRecommendUser.getGoldTreeNum() - 1);
                }
                //邀请人直推用户信息中的农场主用户数量 + 1
                inviteRecommendUser.setGoldTreeNum(inviteRecommendUser.getFarmerNum() + 1);
                recommendUserMapper.updateById(inviteRecommendUser);
                //团队用户表数据维护
257 258
                teamUserInfoGoldTreeToFarmer(inviteUserId);
//                aerialDeliveryUserService.teamDataNotRecommend(userId,inviteUserId);
codezwjava's avatar
codezwjava committed
259 260 261
                //上级用户获得幼苗等级的培育奖
                int level = 5;
                cultivatingPrizeToInvitedUser(userId, inviteUserId, level);
codezwjava's avatar
codezwjava committed
262 263 264 265 266 267
                //用户升级成功时,进行邀请人等级自查是否达到升级条件
                userLevelUpgrade(inviteUserId);
            }
        }

        //用户等级升级为森林之星 6
codezwjava's avatar
codezwjava committed
268 269 270
        if (userLevel == 5 && recommendUser.getSeedlingNum() >= 40
                && recommendUser.getFarmerNum() >= 2
                && teamUserInfoMapperByUserId.getSeedlingNum() >=80
codezwjava's avatar
codezwjava committed
271
                && teamUserInfoMapperByUserId.getSilverTreeNum() >= 70
codezwjava's avatar
codezwjava committed
272
                && teamUserInfoMapperByUserId.getGoldTreeNum() >= 30) {
codezwjava's avatar
codezwjava committed
273
            user.setUserLevel(6);
274
            usersMapper.updateById(user);
275 276
            //同步accountInfo 和TeamPerformance 的用户等级
            accountAndTeamPerformanceUserLevelUpdate(userId);
codezwjava's avatar
codezwjava committed
277
            //用户被邀请码为 1 时 该用户没有邀请人
278
            if (sysInviteCode1.equals(beInvitedCode) || sysInviteCode2.equals(beInvitedCode)) {
codezwjava's avatar
codezwjava committed
279
                return;
codezwjava's avatar
codezwjava committed
280
            } else {
codezwjava's avatar
codezwjava committed
281 282
                //推荐人直推信息表数据维护
                //若邀请人直推用户信息中的农场主用户数量为0是则不用变化,否则农场主用户数量-1
codezwjava's avatar
codezwjava committed
283
                if (inviteRecommendUser.getFarmerNum() == 0) {
codezwjava's avatar
codezwjava committed
284
                    inviteRecommendUser.setFarmerNum(inviteRecommendUser.getFarmerNum());
codezwjava's avatar
codezwjava committed
285
                } else {
codezwjava's avatar
codezwjava committed
286 287 288 289 290 291 292
                    //农场主用户-1
                    inviteRecommendUser.setFarmerNum(inviteRecommendUser.getFarmerNum() - 1);
                }
                //邀请人直推用户信息中的森林之星用户数量 + 1
                inviteRecommendUser.setForestStartNum(inviteRecommendUser.getForestStartNum() + 1);
                recommendUserMapper.updateById(inviteRecommendUser);
                //团队用户表数据维护
293 294
                teamUserInfoFarmerToForestStart(inviteUserId);
//                aerialDeliveryUserService.teamDataNotRecommend(userId,inviteUserId);
codezwjava's avatar
codezwjava committed
295 296 297
                //上级用户获得幼苗等级的培育奖
                int level = 6;
                cultivatingPrizeToInvitedUser(userId, inviteUserId, level);
codezwjava's avatar
codezwjava committed
298 299 300 301 302 303
                //用户升级成功时,进行邀请人等级自查是否达到升级条件
                userLevelUpgrade(inviteUserId);
            }
        }
        //用户等级升级为西田森合伙人 7
        //:todo 条件:团队中白银树数量>=90 && 条件:团队中黄金树数量>=50 条件:团队中农场主数量>=30
codezwjava's avatar
codezwjava committed
304 305 306
        if (userLevel == 6 && recommendUser.getSeedlingNum() >= 50
                && recommendUser.getForestStartNum() >= 2
                && teamUserInfoMapperByUserId.getSeedlingNum() >= 100
codezwjava's avatar
codezwjava committed
307
                && teamUserInfoMapperByUserId.getSilverTreeNum() >= 90
codezwjava's avatar
codezwjava committed
308
                && teamUserInfoMapperByUserId.getGoldTreeNum() >= 50
codezwjava's avatar
codezwjava committed
309
                && teamUserInfoMapperByUserId.getFarmerNum() >= 30) {
codezwjava's avatar
codezwjava committed
310
            user.setUserLevel(7);
311
            usersMapper.updateById(user);
312 313
            //同步accountInfo 和TeamPerformance 的用户等级
            accountAndTeamPerformanceUserLevelUpdate(userId);
codezwjava's avatar
codezwjava committed
314
            //用户被邀请码为 1 时 该用户没有邀请人
315
            if (sysInviteCode1.equals(beInvitedCode) || sysInviteCode2.equals(beInvitedCode)) {
codezwjava's avatar
codezwjava committed
316
                return;
codezwjava's avatar
codezwjava committed
317
            } else {
codezwjava's avatar
codezwjava committed
318 319
                //推荐人直推信息表数据维护
                //若邀请人直推用户信息中的森林之星用户数量为0是则不用变化,否则森林之星用户数量-1
codezwjava's avatar
codezwjava committed
320
                if (inviteRecommendUser.getForestStartNum() == 0) {
codezwjava's avatar
codezwjava committed
321
                    inviteRecommendUser.setForestStartNum(inviteRecommendUser.getForestStartNum());
codezwjava's avatar
codezwjava committed
322
                } else {
codezwjava's avatar
codezwjava committed
323 324 325 326 327 328 329
                    //森林之星用户-1
                    inviteRecommendUser.setForestStartNum(inviteRecommendUser.getForestStartNum() - 1);
                }
                //邀请人直推用户信息中的西田森合伙人用户数量 + 1
                inviteRecommendUser.setPartnerNum(inviteRecommendUser.getPartnerNum() + 1);
                recommendUserMapper.updateById(inviteRecommendUser);
                //团队用户表数据维护
330 331
                teamUserInfoForestStartToPartner(inviteUserId);
//                aerialDeliveryUserService.teamDataNotRecommend(userId,inviteUserId);
codezwjava's avatar
codezwjava committed
332 333 334
                //上级用户获得幼苗等级的培育奖
                int level = 7;
                cultivatingPrizeToInvitedUser(userId, inviteUserId, level);
codezwjava's avatar
codezwjava committed
335 336 337 338 339 340 341 342
                //用户升级成功时,进行邀请人等级自查是否达到升级条件
                userLevelUpgrade(inviteUserId);
            }
        }
    }

    /**
     * 团队用户表数据维护(森林之星用户升级至西田森合伙人用户时)
codezwjava's avatar
codezwjava committed
343
     *
codezwjava's avatar
codezwjava committed
344 345 346 347 348 349 350
     * @param inviteUserId 邀请人userid
     */
    private void teamUserInfoForestStartToPartner(String inviteUserId) {
        //邀请人的团队信息表对象
        TeamUserInfo teamNumInfoBuyId = teamUserInfoMapper.getByUserId(inviteUserId);
        //邀请人的用户表对象
        User byUserId = usersMapper.getByUserId(teamNumInfoBuyId.getUserId());
codezwjava's avatar
codezwjava committed
351 352

        String beinvitedCodeUserId = "";
353
        String inviteCode = byUserId.getBeInvitedCode();
codezwjava's avatar
codezwjava committed
354
        if (!sysInviteCode1.equals(inviteUserId) || !sysInviteCode2.equals(inviteUserId)) {
codezwjava's avatar
codezwjava committed
355 356 357
            //通过邀请人的用户信息获取邀请人的推荐人邀请码
            beinvitedCodeUserId = usersMapper.getByBeInvitedCode(inviteCode).getUserId();
        }
codezwjava's avatar
codezwjava committed
358
        //通过邀请人的用户信息获取邀请人的推荐人邀请码
codezwjava's avatar
codezwjava committed
359
        //String beinvitedCodeUserId = usersMapper.getByBeInvitedCode(byUserId.getBeInvitedCode()).getUserId();
codezwjava's avatar
codezwjava committed
360
        //邀请人团队信息表中森林之星用户数量 = 0 时,森林之星用户数量不用变化,否则森林之星用户数量 - 1
codezwjava's avatar
codezwjava committed
361
        if (teamNumInfoBuyId.getForestStartNum() == 0) {
codezwjava's avatar
codezwjava committed
362
            teamNumInfoBuyId.setForestStartNum(teamNumInfoBuyId.getForestStartNum());
codezwjava's avatar
codezwjava committed
363
        } else {
codezwjava's avatar
codezwjava committed
364 365 366 367 368 369
            //森林之星用户数量 - 1
            teamNumInfoBuyId.setForestStartNum(teamNumInfoBuyId.getForestStartNum() - 1);
        }
        //西田森合伙人用户数量 + 1
        teamNumInfoBuyId.setPartnerNum(teamNumInfoBuyId.getPartnerNum() + 1);
        teamUserInfoMapper.updateById(teamNumInfoBuyId);
codezwjava's avatar
codezwjava committed
370
        if (!sysInviteCode1.equals(inviteUserId) || !sysInviteCode2.equals(inviteUserId)) {
codezwjava's avatar
codezwjava committed
371 372 373 374 375 376 377
            return;
        }
        teamUserInfoForestStartToPartner(beinvitedCodeUserId);
    }

    /**
     * 团队用户表数据维护(农场主用户升级至森林之星用户时)
codezwjava's avatar
codezwjava committed
378
     *
codezwjava's avatar
codezwjava committed
379 380 381 382 383 384 385
     * @param inviteUserId 邀请人userid
     */
    private void teamUserInfoFarmerToForestStart(String inviteUserId) {
        //邀请人的团队信息表对象
        TeamUserInfo teamNumInfoBuyId = teamUserInfoMapper.getByUserId(inviteUserId);
        //邀请人的用户表对象
        User byUserId = usersMapper.getByUserId(teamNumInfoBuyId.getUserId());
codezwjava's avatar
codezwjava committed
386 387

        String beinvitedCodeUserId = "";
388
        String inviteCode = byUserId.getBeInvitedCode();
codezwjava's avatar
codezwjava committed
389
        if (!sysInviteCode1.equals(inviteUserId) || !sysInviteCode2.equals(inviteUserId)) {
codezwjava's avatar
codezwjava committed
390 391 392
            //通过邀请人的用户信息获取邀请人的推荐人邀请码
            beinvitedCodeUserId = usersMapper.getByBeInvitedCode(inviteCode).getUserId();
        }
codezwjava's avatar
codezwjava committed
393
        //通过邀请人的用户信息获取邀请人的推荐人邀请码
codezwjava's avatar
codezwjava committed
394
        //String beinvitedCodeUserId = usersMapper.getByBeInvitedCode(byUserId.getBeInvitedCode()).getUserId();
codezwjava's avatar
codezwjava committed
395
        //邀请人团队信息表中农场主用户数量 = 0 时,农场主用户数量不用变化,否则农场主用户数量 - 1
codezwjava's avatar
codezwjava committed
396
        if (teamNumInfoBuyId.getFarmerNum() == 0) {
codezwjava's avatar
codezwjava committed
397
            teamNumInfoBuyId.setFarmerNum(teamNumInfoBuyId.getFarmerNum());
codezwjava's avatar
codezwjava committed
398
        } else {
codezwjava's avatar
codezwjava committed
399 400 401 402 403 404
            //农场主用户数量 - 1
            teamNumInfoBuyId.setFarmerNum(teamNumInfoBuyId.getFarmerNum() - 1);
        }
        //森林之星用户数量 + 1
        teamNumInfoBuyId.setForestStartNum(teamNumInfoBuyId.getForestStartNum() + 1);
        teamUserInfoMapper.updateById(teamNumInfoBuyId);
codezwjava's avatar
codezwjava committed
405
        if (!sysInviteCode1.equals(inviteUserId) || !sysInviteCode2.equals(inviteUserId)) {
codezwjava's avatar
codezwjava committed
406 407 408 409 410 411 412 413
            return;
        }
        //递归向上修改团队用户信息表
        teamUserInfoFarmerToForestStart(beinvitedCodeUserId);
    }

    /**
     * 团队用户表数据维护(黄金树用户升级至农场主用户时)
codezwjava's avatar
codezwjava committed
414
     *
codezwjava's avatar
codezwjava committed
415 416 417 418 419 420 421
     * @param inviteUserId 邀请人userid
     */
    private void teamUserInfoGoldTreeToFarmer(String inviteUserId) {
        //邀请人的团队信息表对象
        TeamUserInfo teamNumInfoBuyId = teamUserInfoMapper.getByUserId(inviteUserId);
        //邀请人的用户表对象
        User byUserId = usersMapper.getByUserId(teamNumInfoBuyId.getUserId());
codezwjava's avatar
codezwjava committed
422 423

        String beinvitedCodeUserId = "";
424
        String inviteCode = byUserId.getBeInvitedCode();
codezwjava's avatar
codezwjava committed
425
        if (!sysInviteCode1.equals(inviteUserId) || !sysInviteCode2.equals(inviteUserId)) {
codezwjava's avatar
codezwjava committed
426 427 428
            //通过邀请人的用户信息获取邀请人的推荐人邀请码
            beinvitedCodeUserId = usersMapper.getByBeInvitedCode(inviteCode).getUserId();
        }
codezwjava's avatar
codezwjava committed
429
        //通过邀请人的用户信息获取邀请人的推荐人邀请码
codezwjava's avatar
codezwjava committed
430
        // String beinvitedCodeUserId = usersMapper.getByBeInvitedCode(byUserId.getBeInvitedCode()).getUserId();
codezwjava's avatar
codezwjava committed
431
        //邀请人团队信息表中黄金树用户数量 = 0 时,黄金树用户数量不用变化,否则黄金树用户数量 - 1
codezwjava's avatar
codezwjava committed
432
        if (teamNumInfoBuyId.getGoldTreeNum() == 0) {
codezwjava's avatar
codezwjava committed
433
            teamNumInfoBuyId.setGoldTreeNum(teamNumInfoBuyId.getGoldTreeNum());
codezwjava's avatar
codezwjava committed
434
        } else {
codezwjava's avatar
codezwjava committed
435 436 437 438 439 440
            //黄金树用户数量 - 1
            teamNumInfoBuyId.setGoldTreeNum(teamNumInfoBuyId.getGoldTreeNum() - 1);
        }
        //农场主数量 + 1
        teamNumInfoBuyId.setFarmerNum(teamNumInfoBuyId.getFarmerNum() + 1);
        teamUserInfoMapper.updateById(teamNumInfoBuyId);
codezwjava's avatar
codezwjava committed
441
        if (!sysInviteCode1.equals(inviteUserId) || !sysInviteCode2.equals(inviteUserId)) {
codezwjava's avatar
codezwjava committed
442 443 444 445 446 447 448 449
            return;
        }
        //递归向上修改团队用户信息表
        teamUserInfoGoldTreeToFarmer(beinvitedCodeUserId);
    }

    /**
     * 团队用户表数据维护(白银树用户升级至黄金树用户时)
codezwjava's avatar
codezwjava committed
450
     *
codezwjava's avatar
codezwjava committed
451 452 453 454 455 456 457
     * @param inviteUserId 邀请人userid
     */
    private void teamUserInfoSilverToGoldTree(String inviteUserId) {
        //邀请人的团队信息表对象
        TeamUserInfo teamNumInfoBuyId = teamUserInfoMapper.getByUserId(inviteUserId);
        //邀请人的用户表对象
        User byUserId = usersMapper.getByUserId(teamNumInfoBuyId.getUserId());
codezwjava's avatar
codezwjava committed
458 459

        String beinvitedCodeUserId = "";
460
        String inviteCode = byUserId.getBeInvitedCode();
codezwjava's avatar
codezwjava committed
461
        if (!sysInviteCode1.equals(inviteUserId) || !sysInviteCode2.equals(inviteUserId)) {
codezwjava's avatar
codezwjava committed
462 463 464
            //通过邀请人的用户信息获取邀请人的推荐人邀请码
            beinvitedCodeUserId = usersMapper.getByBeInvitedCode(inviteCode).getUserId();
        }
codezwjava's avatar
codezwjava committed
465
        //通过邀请人的用户信息获取邀请人的推荐人邀请码
codezwjava's avatar
codezwjava committed
466
        //String beinvitedCodeUserId = usersMapper.getByBeInvitedCode(byUserId.getBeInvitedCode()).getUserId();
codezwjava's avatar
codezwjava committed
467
        //邀请人团队信息表中白银树用户数量 = 0 时,白银树用户数量不用变化,否则白银树用户数量 - 1
codezwjava's avatar
codezwjava committed
468
        if (teamNumInfoBuyId.getSilverTreeNum() == 0) {
codezwjava's avatar
codezwjava committed
469
            teamNumInfoBuyId.setSilverTreeNum(teamNumInfoBuyId.getSilverTreeNum());
codezwjava's avatar
codezwjava committed
470
        } else {
codezwjava's avatar
codezwjava committed
471
            //白银树用户数量 - 1
codezwjava's avatar
codezwjava committed
472
            teamNumInfoBuyId.setSilverTreeNum(teamNumInfoBuyId.getSilverTreeNum() - 1);
codezwjava's avatar
codezwjava committed
473 474 475 476
        }
        //黄金树用户数量 - 1
        teamNumInfoBuyId.setGoldTreeNum(teamNumInfoBuyId.getGoldTreeNum() + 1);
        teamUserInfoMapper.updateById(teamNumInfoBuyId);
codezwjava's avatar
codezwjava committed
477
        if (!sysInviteCode1.equals(inviteUserId) || !sysInviteCode2.equals(inviteUserId)) {
codezwjava's avatar
codezwjava committed
478 479 480 481 482 483 484 485
            return;
        }
        //递归向上修改团队用户信息表
        teamUserInfoSilverToGoldTree(beinvitedCodeUserId);
    }

    /**
     * 团队用户表数据维护(青铜树用户升级至白银树用户时)
codezwjava's avatar
codezwjava committed
486
     *
codezwjava's avatar
codezwjava committed
487 488 489 490 491 492 493
     * @param inviteUserId 邀请人userid
     */
    private void teamUserInfoBronzeToSilver(String inviteUserId) {
        //邀请人的团队信息表对象
        TeamUserInfo teamNumInfoBuyId = teamUserInfoMapper.getByUserId(inviteUserId);
        //邀请人的用户表对象
        User byUserId = usersMapper.getByUserId(teamNumInfoBuyId.getUserId());
codezwjava's avatar
codezwjava committed
494 495

        String beinvitedCodeUserId = "";
496
        String inviteCode = byUserId.getBeInvitedCode();
codezwjava's avatar
codezwjava committed
497
        if (!sysInviteCode1.equals(inviteUserId) || !sysInviteCode2.equals(inviteUserId)) {
codezwjava's avatar
codezwjava committed
498 499 500
            //通过邀请人的用户信息获取邀请人的推荐人邀请码
            beinvitedCodeUserId = usersMapper.getByBeInvitedCode(inviteCode).getUserId();
        }
codezwjava's avatar
codezwjava committed
501
        //通过邀请人的用户信息获取邀请人的推荐人邀请码
codezwjava's avatar
codezwjava committed
502
        //String beinvitedCodeUserId = usersMapper.getByBeInvitedCode(byUserId.getBeInvitedCode()).getUserId();
codezwjava's avatar
codezwjava committed
503
        //邀请人团队信息表中青铜树用户数量 = 0 时,青铜树用户数量不用变化,否则青铜树用户数量 - 1
codezwjava's avatar
codezwjava committed
504
        if (teamNumInfoBuyId.getBronzeTreeNum() == 0) {
codezwjava's avatar
codezwjava committed
505
            teamNumInfoBuyId.setBronzeTreeNum(teamNumInfoBuyId.getBronzeTreeNum());
codezwjava's avatar
codezwjava committed
506
        } else {
codezwjava's avatar
codezwjava committed
507
            //青铜树用户数量 - 1
codezwjava's avatar
codezwjava committed
508
            teamNumInfoBuyId.setBronzeTreeNum(teamNumInfoBuyId.getBronzeTreeNum() - 1);
codezwjava's avatar
codezwjava committed
509 510 511 512
        }
        //白银树用户数量+1
        teamNumInfoBuyId.setSilverTreeNum(teamNumInfoBuyId.getSilverTreeNum() + 1);
        teamUserInfoMapper.updateById(teamNumInfoBuyId);
codezwjava's avatar
codezwjava committed
513
        if (!sysInviteCode1.equals(inviteUserId) || !sysInviteCode2.equals(inviteUserId)) {
codezwjava's avatar
codezwjava committed
514 515 516 517 518 519 520 521
            return;
        }
        //递归向上修改团队用户信息表
        teamUserInfoBronzeToSilver(beinvitedCodeUserId);
    }

    /**
     * 团队用户表数据维护(幼苗用户升级至青铜用户时)
codezwjava's avatar
codezwjava committed
522
     *
codezwjava's avatar
codezwjava committed
523 524 525 526 527 528 529
     * @param inviteUserId 邀请人userid
     */
    private void teamUserInfoSeedToBronze(String inviteUserId) {
        //邀请人的团队信息表对象
        TeamUserInfo teamNumInfoBuyId = teamUserInfoMapper.getByUserId(inviteUserId);
        //邀请人的用户表对象
        User byUserId = usersMapper.getByUserId(teamNumInfoBuyId.getUserId());
codezwjava's avatar
codezwjava committed
530 531

        String beinvitedCodeUserId = "";
532
        String inviteCode = byUserId.getBeInvitedCode();
codezwjava's avatar
codezwjava committed
533
        if (!sysInviteCode1.equals(inviteUserId) || !sysInviteCode2.equals(inviteUserId)) {
codezwjava's avatar
codezwjava committed
534 535 536
            //通过邀请人的用户信息获取邀请人的推荐人邀请码
            beinvitedCodeUserId = usersMapper.getByBeInvitedCode(inviteCode).getUserId();
        }
codezwjava's avatar
codezwjava committed
537
        //通过邀请人的用户信息获取邀请人的推荐人邀请码
codezwjava's avatar
codezwjava committed
538
        //String beinvitedCodeUserId = usersMapper.getByBeInvitedCode(byUserId.getBeInvitedCode()).getUserId();
codezwjava's avatar
codezwjava committed
539
        //邀请人团队信息表中幼苗用户数量 = 0 时,幼苗用户数量不用变化,否则幼苗用户数量 - 1
codezwjava's avatar
codezwjava committed
540
        if (teamNumInfoBuyId.getSeedlingNum() == 0) {
codezwjava's avatar
codezwjava committed
541
            teamNumInfoBuyId.setSeedlingNum(teamNumInfoBuyId.getSeedlingNum());
codezwjava's avatar
codezwjava committed
542
        } else {
codezwjava's avatar
codezwjava committed
543
            //幼苗用户数量-1
codezwjava's avatar
codezwjava committed
544
            teamNumInfoBuyId.setSeedlingNum(teamNumInfoBuyId.getSeedlingNum() - 1);
codezwjava's avatar
codezwjava committed
545 546 547 548
        }
        //邀请人的团队用户信息表中青铜树数量 + 1
        teamNumInfoBuyId.setBronzeTreeNum(teamNumInfoBuyId.getBronzeTreeNum() + 1);
        teamUserInfoMapper.updateById(teamNumInfoBuyId);
codezwjava's avatar
codezwjava committed
549
        if (!sysInviteCode1.equals(inviteUserId) || !sysInviteCode2.equals(inviteUserId)) {
codezwjava's avatar
codezwjava committed
550 551 552 553 554 555 556 557
            return;
        }
        //递归向上修改团队用户信息表
        teamUserInfoSeedToBronze(beinvitedCodeUserId);
    }

    /**
     * 团队用户表数据维护(普通用户升级至幼苗用户时)
codezwjava's avatar
codezwjava committed
558
     *
codezwjava's avatar
codezwjava committed
559 560
     * @param inviteUserId 邀请人userid
     */
codezwjava's avatar
codezwjava committed
561
    private void teamUserInfoNormalToSeed(String inviteUserId) {
codezwjava's avatar
codezwjava committed
562 563 564 565
        //邀请人的团队信息表对象
        TeamUserInfo teamNumInfoBuyId = teamUserInfoMapper.getByUserId(inviteUserId);
        //邀请人的用户表对象
        User intiveUserByUserId = usersMapper.getByUserId(teamNumInfoBuyId.getUserId());
codezwjava's avatar
codezwjava committed
566 567

        String beinvitedCodeUserId = "";
568 569
        //邀请人的推荐人邀请码
        String inviteCode = intiveUserByUserId.getBeInvitedCode();
codezwjava's avatar
codezwjava committed
570
        if (!sysInviteCode1.equals(inviteUserId) || !sysInviteCode2.equals(inviteUserId)) {
codezwjava's avatar
codezwjava committed
571
            //通过邀请人的用户信息获取邀请人的推荐人邀请码
codezwjava's avatar
codezwjava committed
572 573 574 575
            User byBeInvitedCode = usersMapper.getByBeInvitedCode(inviteCode);
            if (null != byBeInvitedCode) {
                beinvitedCodeUserId = byBeInvitedCode.getUserId();
            }
codezwjava's avatar
codezwjava committed
576 577
        }
        if (teamNumInfoBuyId.getNormalUserNum() == 0) {
codezwjava's avatar
codezwjava committed
578
            teamNumInfoBuyId.setNormalUserNum(teamNumInfoBuyId.getNormalUserNum());
codezwjava's avatar
codezwjava committed
579
        } else {
codezwjava's avatar
codezwjava committed
580
            //普通用户数量-1
codezwjava's avatar
codezwjava committed
581
            teamNumInfoBuyId.setNormalUserNum(teamNumInfoBuyId.getNormalUserNum() - 1);
codezwjava's avatar
codezwjava committed
582 583
        }
        //邀请人的团队用户信息表中幼苗数量 + 1
codezwjava's avatar
codezwjava committed
584
        //第一波用户是谁邀请的
codezwjava's avatar
codezwjava committed
585 586
        teamNumInfoBuyId.setSeedlingNum(teamNumInfoBuyId.getSeedlingNum() + 1);
        teamUserInfoMapper.updateById(teamNumInfoBuyId);
codezwjava's avatar
codezwjava committed
587
        if (!sysInviteCode1.equals(inviteUserId) || !sysInviteCode2.equals(inviteUserId)) {
codezwjava's avatar
codezwjava committed
588 589 590
            return;
        }
        //递归向上修改团队用户信息表
codezwjava's avatar
codezwjava committed
591 592 593
        if (!"".equals(beinvitedCodeUserId)) {
            teamUserInfoNormalToSeed(beinvitedCodeUserId);
        }
codezwjava's avatar
codezwjava committed
594
    }
codezwjava's avatar
codezwjava committed
595 596 597 598

    /**
     * 培育奖给到上级用户
     *
599
     * @param userId       当前用户id
codezwjava's avatar
codezwjava committed
600 601 602
     * @param inviteUserId 上级用户id
     * @param level        当前用户升级后的等级
     */
603
    public void cultivatingPrizeToInvitedUser(String userId, String inviteUserId, int level) {
codezwjava's avatar
codezwjava committed
604
        //当前用户的培育奖记录
605
        CultivatingPrizeInfo cultivatingPrizeInfo = cultivatingPrizeInfoMapper.getOneByUserId(userId);
codezwjava's avatar
codezwjava committed
606
        //判断当前用户等级
codezwjava's avatar
codezwjava committed
607
        if (1 == level) {
codezwjava's avatar
codezwjava committed
608
            //获取等级对应的培育奖记录状态
codezwjava's avatar
codezwjava committed
609 610 611
            int seedling = cultivatingPrizeInfo.getSeedling();
            //用户等级对应的培育奖金额
            BigDecimal cultivatingPrize = cultivatingPrizeMapper.getcultivatingPrizeByUserLevel(level).getCultivatingPrize();
codezwjava's avatar
codezwjava committed
612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636
            if (0 == seedling) {
                //1、判断推荐人的等级是否大与当前用户等级
                User inviteUser = usersMapper.getByUserId(inviteUserId);
                int inviteUserLevel = inviteUser.getUserLevel();
                if (null != inviteUser) {
                    if (inviteUserLevel > level) {
                        //2.交易流水新增一条数据
                        TradeRecord tradeRecord = new TradeRecord();
                        tradeRecord.setUserId(inviteUserId);
                        tradeRecord.setMoney(cultivatingPrize);
                        tradeRecord.setTradeNo(null);
                        tradeRecord.setStatus(0);
                        tradeRecord.setTradeType(TradeRecordEnum.CULTIVATING_PRIZE.getCode());
                        tradeRecordMapper.add(tradeRecord);

                        //3.修改培育奖记录状态 ==1
                        seedling = 1;
                        cultivatingPrizeInfo.setSeedling(seedling);
                        cultivatingPrizeInfoMapper.updateById(cultivatingPrizeInfo);
                    } else {
                        //3.修改培育奖记录状态 ==2
                        seedling = 2;
                        cultivatingPrizeInfo.setSeedling(seedling);
                        cultivatingPrizeInfoMapper.updateById(cultivatingPrizeInfo);
                    }
codezwjava's avatar
codezwjava committed
637

codezwjava's avatar
codezwjava committed
638
                }
codezwjava's avatar
codezwjava committed
639 640
            }
        } else if (2 == level) {
codezwjava's avatar
codezwjava committed
641
            //培育奖记录状态
codezwjava's avatar
codezwjava committed
642 643 644 645
            int bronzeTree = cultivatingPrizeInfo.getBronzeTree();
            //用户等级对应的培育奖金额
            BigDecimal cultivatingPrize = cultivatingPrizeMapper.getcultivatingPrizeByUserLevel(level).getCultivatingPrize();

codezwjava's avatar
codezwjava committed
646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672
            if (0 == bronzeTree) {
                //1、判断推荐人的等级是否大与当前用户等级
                User inviteUser = usersMapper.getByUserId(inviteUserId);
                if (null != inviteUser) {
                    int inviteUserLevel = inviteUser.getUserLevel();
                    if (inviteUserLevel > level) {
                        //2.交易流水新增一条数据
                        TradeRecord tradeRecord = new TradeRecord();
                        tradeRecord.setUserId(inviteUserId);
                        tradeRecord.setMoney(cultivatingPrize);
                        tradeRecord.setTradeNo(null);
                        tradeRecord.setStatus(0);
                        tradeRecord.setTradeType(TradeRecordEnum.CULTIVATING_PRIZE.getCode());
                        tradeRecordMapper.add(tradeRecord);

                        //3.修改培育奖记录状态 ==1
                        bronzeTree = 1;
                        cultivatingPrizeInfo.setBronzeTree(bronzeTree);
                        cultivatingPrizeInfoMapper.updateById(cultivatingPrizeInfo);
                    } else {
                        //3.修改培育奖记录状态 ==2
                        bronzeTree = 2;
                        cultivatingPrizeInfo.setBronzeTree(bronzeTree);
                        cultivatingPrizeInfoMapper.updateById(cultivatingPrizeInfo);
                    }

                }
codezwjava's avatar
codezwjava committed
673 674
            }
        } else if (3 == level) {
codezwjava's avatar
codezwjava committed
675
            //获取当前等级的培育奖状态
codezwjava's avatar
codezwjava committed
676 677 678 679
            int silverTree = cultivatingPrizeInfo.getSilverTree();
            //用户等级对应的培育奖金额
            BigDecimal cultivatingPrize = cultivatingPrizeMapper.getcultivatingPrizeByUserLevel(level).getCultivatingPrize();

codezwjava's avatar
codezwjava committed
680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705
            if (0 == silverTree) {
                //1、判断推荐人的等级是否大与当前用户等级
                User inviteUser = usersMapper.getByUserId(inviteUserId);
                if (null != inviteUser) {
                    int inviteUserLevel = inviteUser.getUserLevel();
                    if (inviteUserLevel > level) {
                        //2.交易流水新增一条数据
                        TradeRecord tradeRecord = new TradeRecord();
                        tradeRecord.setUserId(inviteUserId);
                        tradeRecord.setMoney(cultivatingPrize);
                        tradeRecord.setTradeNo(null);
                        tradeRecord.setStatus(0);
                        tradeRecord.setTradeType(TradeRecordEnum.CULTIVATING_PRIZE.getCode());
                        tradeRecordMapper.add(tradeRecord);

                        //3.修改培育奖记录状态 ==1
                        silverTree = 1;
                        cultivatingPrizeInfo.setBronzeTree(silverTree);
                        cultivatingPrizeInfoMapper.updateById(cultivatingPrizeInfo);
                    } else {
                        //3.修改培育奖记录状态 ==2
                        silverTree = 2;
                        cultivatingPrizeInfo.setBronzeTree(silverTree);
                        cultivatingPrizeInfoMapper.updateById(cultivatingPrizeInfo);
                    }
                }
codezwjava's avatar
codezwjava committed
706 707 708 709 710 711
            }
        } else if (4 == level) {
            int goldTree = cultivatingPrizeInfo.getGoldTree();
            //用户等级对应的培育奖金额
            BigDecimal cultivatingPrize = cultivatingPrizeMapper.getcultivatingPrizeByUserLevel(level).getCultivatingPrize();

codezwjava's avatar
codezwjava committed
712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734
            if (0 == goldTree) {
                //上级用户
                User inviteUser = usersMapper.getByUserId(inviteUserId);
                if (null != inviteUser) {
                    //2.交易流水新增一条数据
                    TradeRecord tradeRecord = new TradeRecord();
                    tradeRecord.setUserId(inviteUserId);
                    tradeRecord.setMoney(cultivatingPrize);
                    tradeRecord.setTradeNo(null);
                    tradeRecord.setStatus(0);
                    tradeRecord.setTradeType(TradeRecordEnum.CULTIVATING_PRIZE.getCode());
                    tradeRecordMapper.add(tradeRecord);

                    //3.修改培育奖记录状态 ==1
                    goldTree = 1;
                    cultivatingPrizeInfo.setGoldTree(goldTree);
                    cultivatingPrizeInfoMapper.updateById(cultivatingPrizeInfo);
                } else {
                    //3.修改培育奖记录状态 ==2
                    goldTree = 2;
                    cultivatingPrizeInfo.setGoldTree(goldTree);
                    cultivatingPrizeInfoMapper.updateById(cultivatingPrizeInfo);
                }
codezwjava's avatar
codezwjava committed
735 736 737 738 739 740
            }
        } else if (5 == level) {
            int farmer = cultivatingPrizeInfo.getFarmer();
            //用户等级对应的培育奖金额
            BigDecimal cultivatingPrize = cultivatingPrizeMapper.getcultivatingPrizeByUserLevel(level).getCultivatingPrize();

codezwjava's avatar
codezwjava committed
741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763
            if (0 == farmer) {
                //上级用户
                User inviteUser = usersMapper.getByUserId(inviteUserId);
                if (null != inviteUser) {
                    //2.交易流水新增一条数据
                    TradeRecord tradeRecord = new TradeRecord();
                    tradeRecord.setUserId(inviteUserId);
                    tradeRecord.setMoney(cultivatingPrize);
                    tradeRecord.setTradeNo(null);
                    tradeRecord.setStatus(0);
                    tradeRecord.setTradeType(TradeRecordEnum.CULTIVATING_PRIZE.getCode());
                    tradeRecordMapper.add(tradeRecord);

                    //3.修改培育奖记录状态 ==1
                    farmer = 1;
                    cultivatingPrizeInfo.setGoldTree(farmer);
                    cultivatingPrizeInfoMapper.updateById(cultivatingPrizeInfo);
                } else {
                    //3.修改培育奖记录状态 ==2
                    farmer = 2;
                    cultivatingPrizeInfo.setGoldTree(farmer);
                    cultivatingPrizeInfoMapper.updateById(cultivatingPrizeInfo);
                }
codezwjava's avatar
codezwjava committed
764 765 766 767 768 769
            }
        } else if (6 == level) {
            int forestStart = cultivatingPrizeInfo.getForestStart();
            //用户等级对应的培育奖金额
            BigDecimal cultivatingPrize = cultivatingPrizeMapper.getcultivatingPrizeByUserLevel(level).getCultivatingPrize();

codezwjava's avatar
codezwjava committed
770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792
            if (0 == forestStart) {
                //上级用户
                User inviteUser = usersMapper.getByUserId(inviteUserId);
                if (null != inviteUser) {
                    //2.交易流水新增一条数据
                    TradeRecord tradeRecord = new TradeRecord();
                    tradeRecord.setUserId(inviteUserId);
                    tradeRecord.setMoney(cultivatingPrize);
                    tradeRecord.setTradeNo(null);
                    tradeRecord.setStatus(0);
                    tradeRecord.setTradeType(TradeRecordEnum.CULTIVATING_PRIZE.getCode());
                    tradeRecordMapper.add(tradeRecord);

                    //3.修改培育奖记录状态 ==1
                    forestStart = 1;
                    cultivatingPrizeInfo.setGoldTree(forestStart);
                    cultivatingPrizeInfoMapper.updateById(cultivatingPrizeInfo);
                } else {
                    //3.修改培育奖记录状态 ==2
                    forestStart = 2;
                    cultivatingPrizeInfo.setGoldTree(forestStart);
                    cultivatingPrizeInfoMapper.updateById(cultivatingPrizeInfo);
                }
codezwjava's avatar
codezwjava committed
793 794 795 796 797 798
            }
        } else if (7 == level) {
            int partner = cultivatingPrizeInfo.getPartner();
            //用户等级对应的培育奖金额
            BigDecimal cultivatingPrize = cultivatingPrizeMapper.getcultivatingPrizeByUserLevel(level).getCultivatingPrize();

codezwjava's avatar
codezwjava committed
799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821
            if (0 == partner) {
                //上级用户
                User inviteUser = usersMapper.getByUserId(inviteUserId);
                if (null != inviteUser) {
                    //2.交易流水新增一条数据
                    TradeRecord tradeRecord = new TradeRecord();
                    tradeRecord.setUserId(inviteUserId);
                    tradeRecord.setMoney(cultivatingPrize);
                    tradeRecord.setTradeNo(null);
                    tradeRecord.setStatus(0);
                    tradeRecord.setTradeType(TradeRecordEnum.CULTIVATING_PRIZE.getCode());
                    tradeRecordMapper.add(tradeRecord);

                    //3.修改培育奖记录状态 ==1
                    partner = 1;
                    cultivatingPrizeInfo.setGoldTree(partner);
                    cultivatingPrizeInfoMapper.updateById(cultivatingPrizeInfo);
                } else {
                    //3.修改培育奖记录状态 ==2
                    partner = 2;
                    cultivatingPrizeInfo.setGoldTree(partner);
                    cultivatingPrizeInfoMapper.updateById(cultivatingPrizeInfo);
                }
codezwjava's avatar
codezwjava committed
822 823 824
            }
        }
    }
825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841

    //同步accountInfo 和TeamPerformance 的用户等级
    public void accountAndTeamPerformanceUserLevelUpdate(String userId){

        User userByUserId = usersMapper.getUserByUserId(userId);

        if (null != userByUserId){
            int userLevel = userByUserId.getUserLevel();
            AccountInfo accountInfoByUserId = accountMapper.getByUserId(userId);
            accountInfoByUserId.setUserLevel(userLevel);
            TeamPerformance teamPerformanceByUserId = teamPerformanceMapper.getByUserId(userId);
            teamPerformanceByUserId.setUserLevel(userLevel);

            accountMapper.edit(accountInfoByUserId);
            teamPerformanceMapper.edit(teamPerformanceByUserId);
        }
    }
codezwjava's avatar
codezwjava committed
842
}
codezwjava's avatar
codezwjava committed
843