之前的文章介紹了項目中,代理商的所有下級代理商查詢,其查詢目的主要是為了,在上級代理商的利潤變少了之后,所有下級代理商的利潤也需要相對應(yīng)的變少,否則上級代理商的利潤不夠支付下一級代理商的盈利所以不能存在這種情況,所以在發(fā)生這種情況的時候需要查詢所有下級代理商,但是真正需要的功能則是,下級代理商成功銷售一樣產(chǎn)品后,所產(chǎn)生的利潤來分配給各個上級,才是項目最主要的難點。
首先還是來分析思路,根據(jù)傳入的代理商id,來獲取當(dāng)前代理商的上級,然后根據(jù)獲取的上級代理商,獲取他的上級,一級加一級的往上面找,找到之后計算出各個級別代理商應(yīng)該獲取的利潤就非常復(fù)雜。ok 首先數(shù)據(jù)表還是上一章文章中的數(shù)據(jù)表沒有變動,主要是查詢數(shù)據(jù)的思路需要反過來查詢。第一步,查詢出當(dāng)前的代理商數(shù)據(jù),取出當(dāng)前代理商數(shù)據(jù)對應(yīng)的上級代理商id,P_ID.第二部判斷他的上一級是不是頂級代理商,如果是頂級,就不用在網(wǎng)上找,否則,就繼續(xù)往上找,其實如果一級一級找的話,相對來說還是比較簡單,男的點就是如果實現(xiàn)無級別查找,無論是哪一級別都可以查詢出所有上級。
查詢出來之后,還需要獲取對應(yīng)代理商應(yīng)獲取的利潤,因為每個代理商的利潤有所不同,所以在表中沒有這個字段,每個利潤需要根據(jù)上下級來獲取,也就是每個循環(huán)需要查詢兩個代理商的數(shù)據(jù),上級減下級獲取的就是上級的利潤,OK 下面附上實例代碼:
每個循環(huán)獲取的數(shù)據(jù),都是數(shù)組,所以循環(huán)取出來的數(shù)據(jù),可能是多維數(shù)據(jù),在數(shù)據(jù)分層很大的時候也許就會形成超過四層或者五層的數(shù)據(jù),這樣后面使用數(shù)據(jù)可能就會非常麻煩,當(dāng)時我也是很苦惱不知道如何解決,因為返回的數(shù)據(jù)需要用數(shù)組來接受,然而每次返回的都是二維數(shù)組,就形成了很多維的數(shù)據(jù),想了很久才想到,把返回的數(shù)據(jù)json一下變成字符串,就不存在返回二維數(shù)據(jù)了但是返回的還是多維數(shù)組。ok多維數(shù)組遍歷成一維數(shù)組,數(shù)據(jù)沒變,數(shù)組變成了二維數(shù)組就很舒服。
這樣就完美的取出了所有的上級代理而且計算出了他們對應(yīng)的利潤值。