账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    多重if判断如何简化代码,减少代码冗余
    98
    0

    如下列代码。充斥着各种if语句。完全不知道从哪里开始优化..不知道有什么办法可以解决这种多重if判断..减少代码冗余提升效率。下列代码的功能就是一个查找7级上线代理的功能【查询该用户的上线是否存在上线代理-需要往上查询7级,如果存在,给予一定的返现,前三级需要通过序列化保存在一个字段,后五级只需要返现。】。

    public function bonusUser($user, $orderinfo, $order_goods) {
            $first_price = $this->getPrice($user['level']);
            if ($user['agentid'] != 0) {
                //一级上线
                //下线成交价
                $user_one = \think\Db::table('ims_ewei_shop_member')->where('id', $user['agentid'])->find();
                $money_one = $orderinfo['price'] / $order_goods['total'];
                //获取当前代理价后并计算所得佣金
                $new_price = $this->getPrice($user_one['level']);
                $return_price = 0;
                //反序列化佣金
                $all_moeny = unserialize($order_goods['commissions']);
                if ($user_one['level'] == 11) {
                    $result_num = $money_one - 168;
                    if ($result_num > 0) {
                        $return_price = $result_num * $order_goods['total'];
                    }
                } else if ($user_one['level'] == 12) {
                    $result_num = $money_one - 138;
                    if ($result_num > 0) {
                        $return_price = $result_num * $order_goods['total'];
                    }
                } else if ($user_one['level'] == 13) {
                    $result_num = $money_one - 118;
                    if ($result_num > 0) {
                        $return_price = $result_num * $order_goods['total'];
                    }
                } else {
                    $result_num = $money_one - 268;
                    if ($result_num > 0) {
                        $return_price = $result_num * $order_goods['total'];
                    }
                }
                if ($return_price > 0) {
                    $send_one = $this->send_Mess($user_one['openid'], $user['nickname'], 1);
                    $all_moeny['level1'] = $return_price;
                } else {
                    $all_moeny['level1'] = 0;
                }
                if ($user_one['agentid'] != 0) {
                    //二级上线
                    $user_two = \think\Db::table('ims_ewei_shop_member')->where('id', $user_one['agentid'])->find();
                    $new_price_two = $this->getPrice($user_two['level']);
                    //这里判断如果上级的会员等级比下级低的情况不考虑佣金返还
                    if ($user_two['level'] > $user_one['level'] && $user_one['level'] >= $user['level']) {
                        $result_two = $new_price - $new_price_two;
                        \think\Log::write($new_price, "1j");
                        if ($result_two > 0) {
                            $all_moeny['level2'] = $result_two * $order_goods['total'];
                            $send_two = $this->send_Mess($user_two['openid'], $user['nickname'], 2);
                        } else {
                            $all_moeny['level2'] = 0;
                        }
                    } elseif ($user_one['level'] <= $user['level'] && $user_two['level'] > $user['level']) {
                        //如果该级上层比任何级别代理都高的情况下
                        $result_two = $first_price - $new_price_two;
                        $all_moeny['level2'] = $result_two * $order_goods['total'];
                        if ($result_two > 0) {
                            $send_three = $this->send_Mess($user_two['openid'], $user['nickname'], 2);
                        }
                    } else {
                        $all_moeny['level2'] = 0;
                    }
                    if ($user_two['agentid'] != 0) {
                        //三级上线
                        $user_three = \think\Db::table('ims_ewei_shop_member')->where('id', $user_two['agentid'])->find();
                        $new_price_three = $this->getPrice($user_three['level']);
                        //这里判断如果上级的会员等级比下级低的情况不考虑佣金返还
                        if ($user_three['level'] > $user_two['level'] && $user_two['level'] >= $user_one['level'] && $user_one['level'] >= $user['level']) {
                            $result_three = $new_price_two - $new_price_three;
                            if ($result_three > 0) {
                                $all_moeny['level3'] = $result_three * $order_goods['total'];
                                $send_three = $this->send_Mess($user_three['openid'], $user['nickname'], 3);
                            } else {
                                $all_moeny['level3'] = 0;
                            }
                        } elseif ($user_two['level'] <= $user['level'] && $user_one['level'] <= $user['level'] && $user_three['level'] > $user['level']) {
                            //如果该级上层比任何级别代理都高的情况下
                            $result_three = $first_price - $new_price_three;
                            if ($result_three > 0) {
                                $all_moeny['level3'] = $result_three * $order_goods['total'];
                                $send_three = $this->send_Mess($user_three['openid'], $user['nickname'], 3);
                            } else {
                                $all_moeny['level3'] = 0;
                            }
                        } elseif ($user_one['level'] >= $user['level'] && $user_two['level'] <= $user_one['level'] && $user_three['level'] > $user_two['level']) {
                            $result_three = $new_price - $new_price_three;
                            if ($result_three > 0) {
                                $all_moeny['level3'] = $result_three * $order_goods['total'];
                                $send_three = $this->send_Mess($user_three['openid'], $user['nickname'], 3);
                            } else {
                                $all_moeny['level3'] = 0;
                            }
                        } else {
                            $all_moeny['level3'] = 0;
                        }
                        if ($user_three['agentid'] != 0) {
                            //四级上线
                            $user_four = \think\Db::table('ims_ewei_shop_member')->where('id', $user_three['agentid'])->find();
                            $new_price_four = $this->getPrice($user_four['level']);
                            //这里判断如果上级的会员等级比下级高的情况下。佣金返还;
                            if ($user_four['level'] > $user_three['level'] && $user_three['level'] >= $user_two['level'] && $user_two['level'] >= $user_one['level'] && $user_one['level'] >= $user['level']) {
                                $result_four = $new_price_three - $new_price_four;
                                if ($result_four > 0) {
                                    $four_money = $result_four * $order_goods['total'];
                                    $result = $this->shop_money_log($four_money, $user_four, 4);
                                    $send_four = $this->send_Mess($user_four['openid'], $user['nickname'], 4);
                                }
                            } else if ($user_three['level'] <= $user['level'] && $user_two['level'] <= $user['level'] && $user_one['level'] <= $user['level'] && $user_four['level'] > $user['level']) {
                                //如果该级上层比任何级别代理都高的情况下
                                $result_four = $first_price - $new_price_four;
                                $four_money = $result_four * $order_goods['total'];
                                if ($result_four > 0) {
                                    $result = $this->shop_money_log($four_money, $user_four, 4);
                                    $send_four = $this->send_Mess($user_four['openid'], $user['nickname'], 4);
                                }
                            } elseif ($user_two['level'] >= $user['level'] && $user_two['level'] >= $user_one['level'] && $user_three['level'] <= $user_two['level'] && $user_four['level'] > $user_two['level']) {
                                $result_four = $new_price_two - $new_price_four;
                                $four_money = $result_four * $order_goods['total'];
                                if ($result_four > 0) {
                                    $result = $this->shop_money_log($four_money, $user_four, 4);
                                    $send_four = $this->send_Mess($user_four['openid'], $user['nickname'], 4);
                                }
                            } elseif ($user_one['level'] >= $user['level'] && $user_three['level'] <= $user_one['level'] && $user_one['level'] >= $user_two['level'] && $user_four['level'] > $user_one['level']) {
                                $result_four = $new_price - $new_price_four;
                                $four_money = $result_four * $order_goods['total'];
                                if ($result_four > 0) {
                                    $result = $this->shop_money_log($four_money, $user_four, 4);
                                    $send_four = $this->send_Mess($user_four['openid'], $user['nickname'], 4);
                                }
                            }
                            if ($user_four['agentid'] != 0) {
                                //五级上线
                                $user_five = \think\Db::table('ims_ewei_shop_member')->where('id', $user_four['agentid'])->find();
                                $new_price_five = $this->getPrice($user_five['level']);
                                if ($user_five['level'] > $user_four['level'] && $user_four['level'] >= $user_three['level'] && $user_three['level'] >= $user_two['level'] && $user_two['level'] >= $user_one['level'] && $user_one['level'] >= $user['level']) {
                                    $result_five = $new_price_four - $new_price_five;
                                    $five_money = $result_five * $order_goods['total'];
                                    if ($result_five > 0) {
                                        $result = $this->shop_money_log($five_money, $user_five, 5);
                                        $send_five = $this->send_Mess($user_five['openid'], $user['nickname'], 5);
                                    }
                                } elseif ($user_four['level'] <= $user['level'] && $user_three['level'] <= $user['level'] && $user_two['level'] <= $user['level'] && $user_one['level'] <= $user['level'] && $user_five['level'] >= $user['level']) {
                                    //如果该级上层比任何级别代理都高的情况下
                                    $result_five = $first_price - $new_price_five;
                                    $five_money = $result_five * $order_goods['total'];
                                    if ($result_five > 0) {
                                        $result = $this->shop_money_log($five_money, $user_five, 5);
                                        $send_five = $this->send_Mess($user_five['openid'], $user['nickname'], 5);
                                    }
                                } elseif ($user_two['level'] >= $user['level'] && $user_two['level'] >= $user_one['level'] && $user_three['level'] <= $user_two['level'] && $user_four['level'] <= $user_two['level'] && $user_five['level'] > $user_two['level']) {
                                    //如果该级上层比任何级别代理都高的情况下
                                    $result_five = $new_price_two - $new_price_five;
                                    $five_money = $result_five * $order_goods['total'];
                                    if ($result_five > 0) {
                                        $result = $this->shop_money_log($five_money, $user_five, 5);
                                        $send_five = $this->send_Mess($user_five['openid'], $user['nickname'], 5);
                                    }
                                } elseif ($user_one['level'] >= $user['level'] && $user_three['level'] <= $user_one['level'] && $user_one['level'] >= $user_two['level'] && $user_four['level'] <= $user_one['level'] && $user_five['level'] > $user_two['level']) {
                                    //如果该级上层比任何级别代理都高的情况下
                                    $result_five = $new_price - $new_price_five;
                                    $five_money = $result_five * $order_goods['total'];
                                    if ($result_five > 0) {
                                        $result = $this->shop_money_log($five_money, $user_five, 5);
                                        $send_five = $this->send_Mess($user_five['openid'], $user['nickname'], 5);
                                    }
                                } elseif ($user_three['level'] >= $user['level'] && $user_three['level'] >= $user_one['level'] && $user_three['level'] >= $user_two['level'] && $user_four['level'] <= $user_three['level'] && $user_five['level'] > $user_three['level']) {
                                    //如果该级上层比任何级别代理都高的情况下
                                    $result_five = $new_price_three - $new_price_five;
                                    $five_money = $result_five * $order_goods['total'];
                                    if ($result_five > 0) {
                                        $result = $this->shop_money_log($five_money, $user_five, 5);
                                        $send_five = $this->send_Mess($user_five['openid'], $user['nickname'], 5);
                                    }
                                }
                                //6-7级返现
                                if ($user_five['agentid'] != 0) {
                                    //查询第六级的等级
                                    $user_six = \think\Db::table('ims_ewei_shop_member')->where('id', $user_five['agentid'])->find();
                                    $new_price_six = $this->getPrice($user_six['level']);
                                    if ($user_six['level'] > $user_five['level'] && $user_five['level'] >= $user_four['level'] && $user_four['level'] >= $user_three['level'] && $user_three['level'] >= $user_two['level'] && $user_two['level'] >= $user_one['level'] && $user_one['level'] >= $user['level']) {
                                        $result_six = $new_price_five - $new_price_six;
                                        $six_money = $result_six * $order_goods['total'];
                                        if ($result_six > 0) {
                                            $result = $this->shop_money_log($six_money, $user_six, 6);
                                            $send_five = $this->send_Mess($user_six['openid'], $user['nickname'], 6);
                                        }
                                    } elseif ($user_five['level'] <= $user['level'] && $user_four['level'] <= $user['level'] && $user_three['level'] <= $user['level'] && $user_two['level'] <= $user['level'] && $user_one['level'] <= $user['level'] && $user_six['level'] >= $user['level']) {
                                        //如果该级上层比任何级别代理都高的情况下
                                        $result_six = $first_price - $new_price_six;
                                        $six_money = $result_six * $order_goods['total'];
                                        if ($result_six > 0) {
                                            $result = $this->shop_money_log($six_money, $user_six, 6);
                                            $send_five = $this->send_Mess($user_six['openid'], $user['nickname'], 6);
                                        }
                                    } elseif ($user_two['level'] >= $user['level'] && $user_two['level'] >= $user_one['level'] && $user_three['level'] <= $user_two['level'] && $user_four['level'] <= $user_two['level'] && $user_five['level'] <= $user_two['level'] && $user_six['level'] > $user_two['level']) {
                                        //如果该级上层比任何级别代理都高的情况下
                                        $result_six = $new_price_two - $new_price_six;
                                        $six_money = $result_six * $order_goods['total'];
                                        if ($result_six > 0) {
                                            $result = $this->shop_money_log($six_money, $user_six, 6);
                                            $send_five = $this->send_Mess($user_six['openid'], $user['nickname'], 6);
                                        }
                                    } elseif ($user_one['level'] >= $user['level'] && $user_three['level'] <= $user_one['level'] && $user_one['level'] >= $user_two['level'] && $user_four['level'] <= $user_one['level'] && $user_five['level'] <= $user_one['level'] && $user_six['level'] > $user_two['level']) {
                                        //如果该级上层比任何级别代理都高的情况下
                                        $result_six = $new_price - $new_price_six;
                                        $six_money = $result_six * $order_goods['total'];
                                        if ($result_six > 0) {
                                            $result = $this->shop_money_log($six_money, $user_six, 6);
                                            $send_five = $this->send_Mess($user_six['openid'], $user['nickname'], 6);
                                        }
                                    } elseif ($user_three['level'] >= $user['level'] && $user_three['level'] >= $user_one['level'] && $user_three['level'] >= $user_two['level'] && $user_four['level'] <= $user_three['level'] && $user_five['level'] <= $user_three['level'] && $user_six['level'] > $user_three['level']) {
                                        //如果该级上层比任何级别代理都高的情况下
                                        $result_six = $new_price_three - $new_price_six;
                                        $six_money = $result_six * $order_goods['total'];
                                        if ($result_six > 0) {
                                            $result = $this->shop_money_log($six_money, $user_six, 6);
                                            $send_five = $this->send_Mess($user_six['openid'], $user['nickname'], 6);
                                        }
                                    } elseif ($user_four['level'] >= $user['level'] && $user_four['level'] >= $user_one['level'] && $user_four['level'] >= $user_two['level'] && $user_four['level'] >= $user_three['level'] && $user_five['level'] <= $user_four['level'] && $user_six['level'] > $user_four['level']) {
                                        //如果该级上层比任何级别代理都高的情况下
                                        $result_six = $new_price_four - $new_price_six;
                                        $six_money = $result_six * $order_goods['total'];
                                        if ($result_six > 0) {
                                            $result = $this->shop_money_log($six_money, $user_six, 6);
                                            $send_five = $this->send_Mess($user_six['openid'], $user['nickname'], 6);
                                        }
                                    }
                                    if ($user_six['agentid'] != 0) {
                                        //第七级查询
                                        $user_seven = \think\Db::table('ims_ewei_shop_member')->where('id', $user_six['agentid'])->find();
                                        $new_price_seven = $this->getPrice($user_seven['level']);
                                        if ($user_seven['level'] >= $user_six['level'] && $user_six['level'] >= $user_five['level'] && $user_five['level'] >= $user_four['level'] && $user_four['level'] >= $user_three['level'] && $user_three['level'] >= $user_two['level'] && $user_two['level'] >= $user_one['level'] && $user_one['level'] >= $user['level']) {
                                            $result_seven = $new_price_six - $new_price_seven;
                                            $seven_money = $result_seven * $order_goods['total'];
                                            if ($result_seven > 0) {
                                                $result = $this->shop_money_log($seven_money, $user_seven, 7);
                                                $send_seven = $this->send_Mess($user_seven['openid'], $user['nickname'], 7);
                                            }
                                        } elseif ($user_six['level'] <= $user['level'] && $user_five['level'] <= $user['level'] && $user_four['level'] <= $user['level'] && $user_three['level'] <= $user['level'] && $user_two['level'] <= $user['level'] && $user_one['level'] <= $user['level'] && $user_seven['level'] >= $user['level']) {
                                            //如果该级上层比任何级别代理都高的情况下
                                            $result_seven = $first_price - $new_price_seven;
                                            $seven_money = $result_seven * $order_goods['total'];
                                            if ($result_seven > 0) {
                                                $result = $this->shop_money_log($seven_money, $user_seven, 7);
                                                $send_seven = $this->send_Mess($user_seven['openid'], $user['nickname'], 7);
                                            }
                                        } elseif ($user_two['level'] >= $user['level'] && $user_two['level'] >= $user_one['level'] && $user_three['level'] <= $user_two['level'] && $user_four['level'] <= $user_two['level'] && $user_five['level'] <= $user_two['level'] && $user_six['level'] <= $user_two['level'] && $user_seven['level'] > $user_two['level']) {
                                            //如果该级上层比任何级别代理都高的情况下
                                            $result_seven = $new_price_two - $new_price_seven;
                                            $seven_money = $result_seven * $order_goods['total'];
                                            if ($result_seven > 0) {
                                                $result = $this->shop_money_log($seven_money, $user_seven, 7);
                                                $send_seven = $this->send_Mess($user_seven['openid'], $user['nickname'], 7);
                                            }
                                        } elseif ($user_one['level'] >= $user['level'] && $user_three['level'] <= $user_one['level'] && $user_one['level'] >= $user_two['level'] && $user_four['level'] <= $user_one['level'] && $user_five['level'] <= $user_one['level'] && $user_six['level'] <= $user_one['level'] && $user_seven['level'] > $user_two['level']) {
                                            //如果该级上层比任何级别代理都高的情况下
                                            $result_seven = $new_price - $new_price_seven;
                                            $seven_money = $result_seven * $order_goods['total'];
                                            if ($result_seven > 0) {
                                                $result = $this->shop_money_log($seven_money, $user_seven, 7);
                                                $send_seven = $this->send_Mess($user_seven['openid'], $user['nickname'], 7);
                                            }
                                        } elseif ($user_three['level'] >= $user['level'] && $user_three['level'] >= $user_one['level'] && $user_three['level'] >= $user_two['level'] && $user_four['level'] <= $user_three['level'] && $user_five['level'] <= $user_three['level'] && $user_six['level'] <= $user_three['level'] && $user_seven['level'] > $user_three['level']) {
                                            //如果该级上层比任何级别代理都高的情况下
                                            $result_seven = $new_price_three - $new_price_seven;
                                            $seven_money = $result_seven * $order_goods['total'];
                                            if ($result_seven > 0) {
                                                $result = $this->shop_money_log($seven_money, $user_seven, 7);
                                                $send_seven = $this->send_Mess($user_seven['openid'], $user['nickname'], 7);
                                            }
                                        } elseif ($user_four['level'] >= $user['level'] && $user_four['level'] >= $user_one['level'] && $user_four['level'] >= $user_two['level'] && $user_four['level'] >= $user_three['level'] && $user_five['level'] <= $user_four['level'] && $user_six['level'] <= $user_four['level'] && $user_seven['level'] > $user_four['level']) {
                                            //如果该级上层比任何级别代理都高的情况下
                                            $result_seven = $new_price_four - $new_price_seven;
                                            $seven_money = $result_seven * $order_goods['total'];
                                            if ($result_seven > 0) {
                                                $result = $this->shop_money_log($seven_money, $user_seven, 7);
                                                $send_seven = $this->send_Mess($user_seven['openid'], $user['nickname'], 7);
                                            }
                                        } elseif ($user_five['level'] >= $user['level'] && $user_five['level'] >= $user_one['level'] && $user_five['level'] >= $user_two['level'] && $user_five['level'] >= $user_three['level'] && $user_five['level'] >= $user_four['level'] && $user_six['level'] <= $user_five['level'] && $user_seven['level'] > $user_five['level']) {
                                            //如果该级上层比任何级别代理都高的情况下
                                            $result_seven = $new_price_five - $new_price_seven;
                                            $seven_money = $result_seven * $order_goods['total'];
                                            if ($result_seven > 0) {
                                                $result = $this->shop_money_log($seven_money, $user_seven, 7);
                                                $send_seven = $this->send_Mess($user_seven['openid'], $user['nickname'], 7);
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
                $order_goods_data['commissions'] = serialize($all_moeny);
                \think\Db::table('ims_ewei_shop_order_goods')->where('id', $order_goods['id'])->update($order_goods_data);
                return true;
            }
            return false;
        }
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 我在m城有车 普通会员 1楼

      多重if判断可以简化代码,减少代码冗余。这种情况下,我们可以使用switch语句或者枚举(enum)来简化代码。以下是一个使用switch语句的例子:

      python def my_function(x): if x < 0: return "x is negative" elif x == 0: return "x is zero" else: return "x is positive"

      在这个例子中,我们使用了switch语句,它会根据输入的x的值来执行相应的函数。这种方法的优点是代码简洁,易于理解。但是,如果x的值非常多,那么switch语句可能会非常慢。在这种情况下,我们可以使用枚举(enum):

      python enum_type = "negative" if x < 0: return enum_type elif x == 0: return enum_type else: return enum_type

      在这个例子中,我们使用了枚举,它可以让我们更加简洁地定义变量。枚举的优点是代码简洁,易于理解,但是它无法处理所有的可能情况。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部