|
@@ -155,7 +155,76 @@ class MemberService extends BaseService
|
|
|
DB::beginTransaction();
|
|
|
try {
|
|
|
// 判断团队分红比例
|
|
|
+ $uid = isset($data['id'])? $data['id'] : 0;
|
|
|
+ $info = $this->model->where(['id'=> $uid,'mark'=>1])->select(['id','parent_ids','bonus_rate','room_bonus_rate'])->first();
|
|
|
+ $info = $info? $info->toArray() : [];
|
|
|
+ $userParentId = isset($info['parent_id'])? $info['parent_id'] : 0;
|
|
|
+ $parentIds = isset($info['parent_ids'])? $info['parent_ids'] : '';
|
|
|
|
|
|
+ // 最大设置比例
|
|
|
+ $bonusRate = isset($data['bonus_rate'])? floatval($data['bonus_rate']) : 0;
|
|
|
+ if($bonusRate){
|
|
|
+ $maxBonusRate = \App\Services\Api\MemberService::make()->getUpBonusRate($uid, $parentIds);
|
|
|
+ if ($maxBonusRate > 0 && $bonusRate > $maxBonusRate) {
|
|
|
+ DB::rollBack();
|
|
|
+ $this->error = lang(2037,['rate'=>$maxBonusRate]);
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 工作室分红
|
|
|
+ $roomBonusRate = isset($data['room_bonus_rate'])? floatval($data['room_bonus_rate']) : 0;
|
|
|
+ if($roomBonusRate){
|
|
|
+ $maxBonusRate = \App\Services\Api\MemberService::make()->getUpRoomBonusRate($uid, $parentIds);
|
|
|
+ if ($maxBonusRate > 0 && $roomBonusRate > $maxBonusRate) {
|
|
|
+ DB::rollBack();
|
|
|
+ $this->error = lang(2038,['rate'=>$maxBonusRate]);
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 判断是否修改了上级
|
|
|
+ $parentId = isset($data['parent_id'])? intval($data['parent_id']) : 0;
|
|
|
+ if($parentId>0 && $userParentId != $parentId){
|
|
|
+ // 上级是否存在
|
|
|
+ $parentInfo = $this->model->where(['id'=> $parentId,'mark'=>1])->select(['id','parent_ids'])->first();
|
|
|
+ $parentInfo = $parentInfo? $parentInfo->toArray() : [];
|
|
|
+ $parentIds = isset($parentInfo['parent_ids'])? trim($parentInfo['parent_ids']) : '';
|
|
|
+ // 判断该推荐人是否为团队下级
|
|
|
+ $parents = get_parents($parentIds);
|
|
|
+ if(in_array($uid, $parents)){
|
|
|
+ DB::rollBack();
|
|
|
+ $this->error = 2039;
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 更新自己推荐关系
|
|
|
+ $data['parent_id'] = $parentId;
|
|
|
+ $data['parent_ids'] = $parentIds? trim($parentIds,',').",{$parentId}," : "{$parentId},";
|
|
|
+ $userParentIds = $data['parent_ids'];
|
|
|
+
|
|
|
+ // 更新下级团队用户推荐关系
|
|
|
+ $updateArr = [];
|
|
|
+ $users = $this->model->whereRaw("FIND_IN_SET({$uid},parent_ids)")->select(['id','parent_id','parent_ids'])->get();
|
|
|
+ foreach($users as $item){
|
|
|
+ $parentIds = $item['parent_ids'];
|
|
|
+ if($parentIds){
|
|
|
+ $newParentIds = $userParentIds? trim($userParentIds,',').",{$uid}," : "{$uid},";
|
|
|
+ $newParentIds = $parentIds? preg_replace("/*{$uid},/","{$newParentIds}", $newParentIds) : '';
|
|
|
+ if($newParentIds){
|
|
|
+ $updateArr[] = [
|
|
|
+ 'parent_ids'=> $newParentIds,
|
|
|
+ 'update_time'=> time(),
|
|
|
+ ];
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 批量更新
|
|
|
+ if($updateArr){
|
|
|
+ $this->model->whereRaw("FIND_IN_SET({$uid},parent_ids)")->update($updateArr);
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
$result = parent::edit($data);
|
|
|
$success = isset($result['success']) ? $result['success'] : false;
|
|
@@ -164,7 +233,6 @@ class MemberService extends BaseService
|
|
|
return $result;
|
|
|
}
|
|
|
|
|
|
- // 判断是否修改了上级
|
|
|
|
|
|
ActionLogModel::setTitle("修改会员信息");
|
|
|
ActionLogModel::record();
|