From a52c8ada0507799606d28cff77c459acc13807c7 Mon Sep 17 00:00:00 2001
From: codezwjava <1563330148@qq.com>
Date: Tue, 9 Mar 2021 14:03:54 +0800
Subject: [PATCH] =?UTF-8?q?=E6=A3=AE=E6=9E=97=E7=8A=B6=E6=80=81=E6=8E=A5?=
 =?UTF-8?q?=E5=8F=A3=E4=BB=A3=E7=A0=81=E4=BF=AE=E6=94=B9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../cn/wisenergy/model/app/OrderInfo.java     |   4 +-
 .../java/cn/wisenergy/model/app/User.java     |   2 +-
 .../app/impl/UserForestStatusServiceImpl.java | 239 ++++++++++++++----
 3 files changed, 186 insertions(+), 59 deletions(-)

diff --git a/wisenergy-model/src/main/java/cn/wisenergy/model/app/OrderInfo.java b/wisenergy-model/src/main/java/cn/wisenergy/model/app/OrderInfo.java
index 3d762d8..395f53a 100644
--- a/wisenergy-model/src/main/java/cn/wisenergy/model/app/OrderInfo.java
+++ b/wisenergy-model/src/main/java/cn/wisenergy/model/app/OrderInfo.java
@@ -126,12 +126,12 @@ public class OrderInfo {
     /**
      * updateTime
      */
-    @ApiModelProperty(name = "updateTime", value = "update_time")
+    @ApiModelProperty(name = "updateTime", value = "修改时间")
     private Date updateTime;
 
     /**
      * createTime
      */
-    @ApiModelProperty(name = "createTime", value = "createTime")
+    @ApiModelProperty(name = "createTime", value = "创建时间")
     private Date createTime;
 }
diff --git a/wisenergy-model/src/main/java/cn/wisenergy/model/app/User.java b/wisenergy-model/src/main/java/cn/wisenergy/model/app/User.java
index 0806cf2..eb41c5b 100644
--- a/wisenergy-model/src/main/java/cn/wisenergy/model/app/User.java
+++ b/wisenergy-model/src/main/java/cn/wisenergy/model/app/User.java
@@ -31,7 +31,7 @@ public class User extends Model<User> implements Serializable{
     /**
      * 手机号作为用户账号
      */
-    @ApiModelProperty(name = "user_id", value = "用户主键id")
+    @ApiModelProperty(name = "user_id", value = "用户id")
     private String userId;
 
     /**
diff --git a/wisenergy-service/src/main/java/cn/wisenergy/service/app/impl/UserForestStatusServiceImpl.java b/wisenergy-service/src/main/java/cn/wisenergy/service/app/impl/UserForestStatusServiceImpl.java
index 1b6c0a9..1c5652b 100644
--- a/wisenergy-service/src/main/java/cn/wisenergy/service/app/impl/UserForestStatusServiceImpl.java
+++ b/wisenergy-service/src/main/java/cn/wisenergy/service/app/impl/UserForestStatusServiceImpl.java
@@ -53,6 +53,7 @@ public class UserForestStatusServiceImpl implements UserForestStatusService {
         BigDecimal levelTerm = new BigDecimal(3980);
 
         HashMap<Object, Object> userForestStatusMap = new HashMap<>();
+        HashMap<Object, Object> difference = new HashMap<>();
 
         String date = DateUtil.convertDateToStr(new Date(), "yyyy-MM");
         //1.获取当前用户的等级
@@ -69,80 +70,206 @@ public class UserForestStatusServiceImpl implements UserForestStatusService {
         RecommendUser recommendUserMapperByUserId = recommendUserMapper.getByUserId(userId);
         //用户团队表信息
         TeamUserInfo teamUserInfobyUserId = teamUserInfoMapper.getByUserId(userId);
-        //距离下级直推用户还需增加的数量
-        int recommend =0;
-        //距离下级团队用户还需增加的数量
-        int team =0;
+
         //6.距离下级升级条件
         if(userLevel < 2){
             //用户等级 < 幼苗 显示业绩缺少额度
             //获取当前用户的业绩
             BigDecimal performanceByUserid = orderMapper.getPerformanceByUserid(userId);
             //距离升级还差多少额度
-            BigDecimal difference = levelTerm.subtract(performanceByUserid);
-            userForestStatusMap.put("difference",difference);
+            BigDecimal differenceAmount = levelTerm.subtract(performanceByUserid);
+            difference.put("differenceAmount",differenceAmount);
+            userForestStatusMap.put("differenceMap",difference);
         }else if (userLevel == 2){
             //用户等级为青铜树
-            int levelTerm1 = 20;
-            Integer seedlingNum = recommendUserMapperByUserId.getSeedlingNum();
-            recommend =  levelTerm1 - seedlingNum;
-            userForestStatusMap.put("recommend",recommend);
+            //到达白银树升级条件
+            int recommendSeedling = 20;
+            //获取当前用户直接推荐表中幼苗数量
+            Integer recommendseedlingNum = recommendUserMapperByUserId.getSeedlingNum();
+            //距离升级还差  recommendDifferenceSeedling
+            int recommendDifferenceSeedling =  recommendSeedling - recommendseedlingNum;
+            if (recommendDifferenceSeedling < 0){
+                recommendDifferenceSeedling = 0;
+            }
+            difference.put("recommendDifferenceSeedling",recommendDifferenceSeedling);
+            //距离升级所差百分比
+            float perenctFloat = ((float)recommendseedlingNum / recommendSeedling);
+            float perpenct = (float) Math.round(perenctFloat*100)/100;
+            userForestStatusMap.put("perenct",perpenct);
+            userForestStatusMap.put("differenceMap",difference);
         }else if (userLevel == 3){
             //用户等级为白银树
-            int goldLevelRecommend = 54;
-            int goldLevelteam = 20;
-            //直推用户之和
-            Integer countRecommend = recommendUserMapperByUserId.getSeedlingNum()+recommendUserMapperByUserId.getSilverTreeNum();
-            //所差直推用户的数量
-            recommend = goldLevelRecommend - countRecommend;
-            //所差团队用户的数量
-            team = goldLevelteam - teamUserInfobyUserId.getBronzeTreeNum();
-            userForestStatusMap.put("recommend",recommend);
-            userForestStatusMap.put("team",team);
+
+            //黄金升级条件
+            int recommendSeedling = 50;
+            int recommendSilver = 4;
+            int teamBronze = 20;
+
+            //当前用户直推表
+            int seedlingNum = recommendUserMapperByUserId.getSeedlingNum();
+            Integer silverTreeNum = recommendUserMapperByUserId.getSilverTreeNum();
+            Integer teamBronzeTreeNum = teamUserInfobyUserId.getBronzeTreeNum();
+            //直推幼苗差
+            //直推白银差
+            //团队青铜差
+            int recommendDifferenceSeedling = recommendSeedling - seedlingNum;
+            if(recommendDifferenceSeedling < 0 ){
+                recommendDifferenceSeedling = 0;
+            }
+            int recommendDifferenceSilver = recommendSilver - silverTreeNum;
+            if (recommendDifferenceSilver < 0){
+                recommendDifferenceSilver = 0;
+            }
+            int teamDifferenceBronze = teamBronze - teamBronzeTreeNum;
+            if (teamDifferenceBronze < 0 ){
+                teamDifferenceBronze = 0;
+            }
+            //距离升级所差百分比
+            float perenctFloat = ((float) (seedlingNum + silverTreeNum + teamBronzeTreeNum)
+                    / (recommendSeedling + recommendSilver + teamBronze));
+            float perenct = (float) Math.round(perenctFloat*100)/100;
+            userForestStatusMap.put("perenct",perenct);
+            difference.put("recommendDifferenceSeedling",recommendDifferenceSeedling);
+            difference.put("recommendDifferenceSilver",recommendDifferenceSilver);
+            difference.put("teamDifferenceBronze",teamDifferenceBronze);
+            userForestStatusMap.put("differenceMap",difference);
+
 
         }else if (userLevel == 4){
             //用户等级为黄金树
-            int farmerLevelRecommend = 73;
-            int fammerLevelTeam = 40;
-            //用户直推之和
-            Integer countRecommend = recommendUserMapperByUserId.getSeedlingNum()+recommendUserMapperByUserId.getGoldTreeNum();
-            //用户团队之和
-            Integer countTeam = teamUserInfobyUserId.getSilverTreeNum();
-            //所差直推用户的数量
-            recommend = farmerLevelRecommend - countRecommend;
-            //所差团队用户的数量
-            team = fammerLevelTeam - teamUserInfobyUserId.getBronzeTreeNum();
-            userForestStatusMap.put("recommend",recommend);
-            userForestStatusMap.put("team",team);
+
+            //农场主升级条件
+            int recommendSeedling = 70;
+            int recommendGold = 3;
+            int teamSilver = 40;
+
+            int recommendSeedlingNum = recommendUserMapperByUserId.getSeedlingNum();
+            int recommendGoldTreeNum = recommendUserMapperByUserId.getGoldTreeNum();
+            int teamSilverTreeNum = teamUserInfobyUserId.getSilverTreeNum();
+
+            //直推幼苗差
+            //直推黄金差
+            //团队白银差
+            int recommendDifferenceSeedling = recommendSeedling - recommendSeedlingNum;
+            if(recommendDifferenceSeedling < 0 ){
+                recommendDifferenceSeedling = 0;
+            }
+            int recommendDifferenceGold = recommendGold - recommendGoldTreeNum;
+            if (recommendDifferenceGold < 0){
+                recommendDifferenceGold = 0;
+            }
+            int teamDifferenceSilver = teamSilver - teamSilverTreeNum;
+            if (teamDifferenceSilver < 0 ){
+                teamDifferenceSilver = 0;
+            }
+            //距离升级所差百分比
+            float perenctFloat = ((float) (recommendSeedlingNum + recommendGoldTreeNum + teamSilverTreeNum)
+                    / (recommendSeedling + recommendGold + teamSilver));
+            float perenct = (float) Math.round(perenctFloat*100)/100;
+            userForestStatusMap.put("perenct",perenct);
+            difference.put("recommendDifferenceSeedling",recommendDifferenceSeedling);
+            difference.put("recommendDifferenceGold",recommendDifferenceGold);
+            difference.put("teamDifferenceSilver",teamDifferenceSilver);
+            userForestStatusMap.put("differenceMap",difference);
 
         }else if (userLevel == 5){
             //用户等级为农场主
-            int farmerLevelRecommend = 73;
-            int fammerLevelTeam = 40;
-            //用户直推之和
-            Integer countRecommend = recommendUserMapperByUserId.getSeedlingNum()+recommendUserMapperByUserId.getGoldTreeNum();
-            //用户团队之和
-            Integer countTeam = teamUserInfobyUserId.getSilverTreeNum();
-            //所差直推用户的数量
-            recommend = farmerLevelRecommend - countRecommend;
-            //所差团队用户的数量
-            team = fammerLevelTeam - teamUserInfobyUserId.getBronzeTreeNum();
-            userForestStatusMap.put("recommend",recommend);
-            userForestStatusMap.put("team",team);
+
+            //升级森林之星条件
+            int recommendSeedling = 80;
+            int recommenFarmer = 5;
+            int teamSilver = 70;
+            int teamGold = 30;
+
+            //当前用户条件
+            Integer recommendSeedlingNum = recommendUserMapperByUserId.getSeedlingNum();
+            Integer recommendFarmerNum = recommendUserMapperByUserId.getFarmerNum();
+            Integer teamSilverTreeNum = teamUserInfobyUserId.getSilverTreeNum();
+            Integer teamGoldTreeNum = teamUserInfobyUserId.getGoldTreeNum();
+
+            //直推幼苗差
+            //直推农场主差
+            //团队白银差
+            //团队黄金差
+            int recommendDifferenceSeedling = recommendSeedling - recommendSeedlingNum;
+            if(recommendDifferenceSeedling < 0 ){
+                recommendDifferenceSeedling = 0;
+            }
+            int recommendDifferenceFarmer = recommenFarmer - recommendFarmerNum;
+            if (recommendDifferenceFarmer < 0){
+                recommendDifferenceFarmer = 0;
+            }
+            int teamDifferenceSilver = teamSilver - teamSilverTreeNum;
+            if (teamDifferenceSilver < 0 ){
+                teamDifferenceSilver = 0;
+            }
+            int teamDifferenceGold = teamGold - teamGoldTreeNum;
+            if (teamDifferenceGold < 0 ){
+                teamDifferenceGold = 0;
+            }
+            //距离升级所差百分比
+            float perenctFloat = ((float) (recommendSeedlingNum + recommendFarmerNum + teamSilverTreeNum + teamGoldTreeNum)
+                    / (recommendSeedling + recommenFarmer + teamSilver + teamGold));
+            float perenct = (float) Math.round(perenctFloat*100)/100;
+            userForestStatusMap.put("perenct",perenct);
+            difference.put("recommendDifferenceSeedling",recommendDifferenceSeedling);
+            difference.put("recommendDifferenceFarmer",recommendDifferenceFarmer);
+            difference.put("teamDifferenceSilver",teamDifferenceSilver);
+            difference.put("teamDifferenceGold",teamDifferenceGold);
+            userForestStatusMap.put("differenceMap",difference);
+
         }else if (userLevel == 6){
             //用户等级为森林之星
-            int forestStartNumLevelRecommend = 101;
-            int forestStartNumLevelTeam = 170;
-            //用户直推之和
-            Integer countRecommend = recommendUserMapperByUserId.getSeedlingNum()+recommendUserMapperByUserId.getForestStartNum();
-            //用户团队之和
-            Integer countTeam = teamUserInfobyUserId.getSilverTreeNum()+teamUserInfobyUserId.getGoldTreeNum()+teamUserInfobyUserId.getFarmerNum();
-            //所差直推用户的数量
-            recommend = forestStartNumLevelRecommend - countRecommend;
-            //所差团队用户的数量
-            team = forestStartNumLevelTeam - countTeam;
-            userForestStatusMap.put("recommend",recommend);
-            userForestStatusMap.put("team",team);
+
+            //升级西田森合伙人条件
+            int recommendSeedling = 100;
+            int recommendForestStart = 1;
+            int teamSilver = 90;
+            int teamGold = 50;
+            int teamFarmer = 50;
+
+            //当前用户条件
+            Integer recommendSeedlingNum = recommendUserMapperByUserId.getSeedlingNum();
+            Integer recommendForestStartNum = recommendUserMapperByUserId.getForestStartNum();
+            Integer teamSilverTreeNum = teamUserInfobyUserId.getSilverTreeNum();
+            Integer teamGoldTreeNum = teamUserInfobyUserId.getGoldTreeNum();
+            Integer teamFarmerNum = teamUserInfobyUserId.getFarmerNum();
+
+            int recommendDifferenceSeedling = recommendSeedling - recommendSeedlingNum;
+            if(recommendDifferenceSeedling < 0 ){
+                recommendDifferenceSeedling = 0;
+            }
+            int recommendDifferenceForestStart = recommendForestStart - recommendForestStartNum;
+            if (recommendDifferenceForestStart < 0){
+                recommendDifferenceForestStart = 0;
+            }
+            int teamDifferenceSilver = teamSilver - teamSilverTreeNum;
+            if (teamDifferenceSilver < 0 ){
+                teamDifferenceSilver = 0;
+            }
+            int teamDifferenceGold = teamGold - teamGoldTreeNum;
+            if (teamDifferenceGold < 0 ){
+                teamDifferenceGold = 0;
+            }
+            int teamDifferenceFarmer = teamFarmer - teamFarmerNum;
+            if (teamDifferenceFarmer < 0){
+                teamDifferenceFarmer = 0;
+            }
+            //距离升级所差百分比
+            float perenctFloat = ((float) (recommendSeedlingNum + recommendForestStartNum + teamSilverTreeNum + teamGoldTreeNum + teamFarmerNum)
+                    / (recommendSeedling + recommendForestStart + teamSilver + teamGold + teamFarmer));
+            float perenct = (float) Math.round(perenctFloat*100)/100;
+            userForestStatusMap.put("perenct",perenct);
+            difference.put("recommendDifferenceSeedling",recommendDifferenceSeedling);
+            difference.put("recommendDifferenceForestStart",recommendDifferenceForestStart);
+            difference.put("teamDifferenceSilver",teamDifferenceSilver);
+            difference.put("teamDifferenceGold",teamDifferenceGold);
+            difference.put("teamDifferenceFarmer",teamDifferenceFarmer);
+            userForestStatusMap.put("differenceMap",difference);
+        }else if (userLevel == 7){
+            difference.put("null",null);
+            userForestStatusMap.put("perenct",1);
+            userForestStatusMap.put("differenceMap",difference);
         }
 
         userForestStatusMap.put("userLevel",userLevel);
-- 
2.18.1