|
|
@@ -654,81 +654,88 @@ class SettleService extends BaseService
|
|
|
public function updateUserData($userId, $points)
|
|
|
{
|
|
|
// 上级用户复购参数更新
|
|
|
- $points = $points ? explode(',', $points) : [];
|
|
|
- $points = array_filter($points);
|
|
|
- $points = array_reverse($points);
|
|
|
- $rewardLayer = ConfigService::make()->getConfigByCode('business_reward_layer', 6);
|
|
|
- $points = array_splice($points, 0, $rewardLayer);
|
|
|
- if ($points) {
|
|
|
- // 累计购买人数
|
|
|
- MemberModel::where(['bonus_status'=>1,'mark' => 1])->whereIn('id', $points)
|
|
|
- ->update(['buy_count' => DB::raw("buy_count + 1"), 'update_time' => time()]);
|
|
|
-
|
|
|
- // 购买人数满N层暂停收益
|
|
|
- $buyCount = pow(2, $rewardLayer + 1) - 2;
|
|
|
- MemberModel::where('buy_count', '>=', $buyCount)
|
|
|
- ->where(['bonus_status'=>1])
|
|
|
- ->whereIn('id', $points)
|
|
|
- ->update(['buy_count' => 0, 'buy_type' => DB::raw("buy_type+1"), 'bonus_status' => 2, 'update_time' => time()]);
|
|
|
- }
|
|
|
+ try {
|
|
|
+ $points = $points ? explode(',', $points) : [];
|
|
|
+ $points = array_filter($points);
|
|
|
+ $points = array_reverse($points);
|
|
|
+ $rewardLayer = ConfigService::make()->getConfigByCode('business_reward_layer', 6);
|
|
|
+ $points = array_splice($points, 0, $rewardLayer);
|
|
|
+ if ($points) {
|
|
|
+ // 累计购买人数
|
|
|
+ MemberModel::where(['bonus_status'=>1,'mark' => 1])->whereIn('id', $points)
|
|
|
+ ->update(['buy_count' => DB::raw("buy_count + 1"), 'update_time' => time()]);
|
|
|
+
|
|
|
+ // 购买人数满N层暂停收益
|
|
|
+ $buyCount = pow(2, $rewardLayer + 1) - 2;
|
|
|
+ MemberModel::where('buy_count', '>=', $buyCount)
|
|
|
+ ->where(['bonus_status'=>1])
|
|
|
+ ->whereIn('id', $points)
|
|
|
+ ->update(['buy_count' => 0, 'buy_type' => DB::raw("buy_type+1"), 'bonus_status' => 2, 'update_time' => time()]);
|
|
|
+ }
|
|
|
|
|
|
|
|
|
- // 用户升级
|
|
|
- $userInfo = MemberModel::with(['parent'])->where(['id' => $userId, 'mark' => 1])
|
|
|
- ->select(['id', 'member_level', 'parent_id', 'status'])
|
|
|
- ->first();
|
|
|
- $memberLevel = isset($userInfo['member_level']) ? $userInfo['member_level'] : [];
|
|
|
- $parent = isset($userInfo['parent']) ? $userInfo['parent'] : [];
|
|
|
- $parentId = isset($userInfo['parent_id']) ? $userInfo['parent_id'] : 0;
|
|
|
- $parentLevel = isset($parent['member_level']) ? $parent['member_level'] : 0;
|
|
|
-
|
|
|
-
|
|
|
- $upperLevel = 0;
|
|
|
- $parentUpperLevel = 0;
|
|
|
- $levelList = MemberLevelService::make()->getListByLevel();
|
|
|
- $orderCount = OrderModel::from('orders as a')
|
|
|
- ->distinct('user_id')
|
|
|
- ->leftJoin('member as b', 'b.id', '=', 'a.user_id')
|
|
|
- ->where('a.status', '>', 1)
|
|
|
- ->where(['a.main_no' => '', 'a.type' => 2, 'a.user_id' => $userId, 'a.pay_status' => 20])
|
|
|
- ->count();
|
|
|
-
|
|
|
- $parentOrderCount = 0;
|
|
|
- if ($parentId > 0) {
|
|
|
- $parentOrderCount = OrderModel::from('orders as a')
|
|
|
+ // 用户升级
|
|
|
+ $userInfo = MemberModel::with(['parent'])->where(['id' => $userId, 'mark' => 1])
|
|
|
+ ->select(['id', 'member_level', 'parent_id', 'status'])
|
|
|
+ ->first();
|
|
|
+ $memberLevel = isset($userInfo['member_level']) ? $userInfo['member_level'] : [];
|
|
|
+ $parent = isset($userInfo['parent']) ? $userInfo['parent'] : [];
|
|
|
+ $parentId = isset($userInfo['parent_id']) ? $userInfo['parent_id'] : 0;
|
|
|
+ $parentLevel = isset($parent['member_level']) ? $parent['member_level'] : 0;
|
|
|
+
|
|
|
+
|
|
|
+ $upperLevel = 0;
|
|
|
+ $parentUpperLevel = 0;
|
|
|
+ $levelList = MemberLevelService::make()->getListByLevel();
|
|
|
+ $orderCount = OrderModel::from('orders as a')
|
|
|
->distinct('user_id')
|
|
|
->leftJoin('member as b', 'b.id', '=', 'a.user_id')
|
|
|
->where('a.status', '>', 1)
|
|
|
- ->where(['a.main_no' => '', 'a.type' => 2, 'b.parent_id' => $parentId, 'a.pay_status' => 20])
|
|
|
+ ->where(['a.main_no' => '', 'a.type' => 2, 'a.user_id' => $userId, 'a.pay_status' => 20])
|
|
|
->count();
|
|
|
- }
|
|
|
|
|
|
- // 升级检查
|
|
|
- if($orderCount||$parentOrderCount){
|
|
|
- foreach ($levelList as $item) {
|
|
|
- $level = isset($item['id']) ? $item['id'] : 0;
|
|
|
- $upperCount = isset($item['upper_count']) ? $item['upper_count'] : 0;
|
|
|
- if ($orderCount >= $upperCount && $level > $memberLevel) {
|
|
|
- $upperLevel = $level;
|
|
|
- }
|
|
|
+ $parentOrderCount = 0;
|
|
|
+ if ($parentId > 0) {
|
|
|
+ $parentOrderCount = OrderModel::from('orders as a')
|
|
|
+ ->distinct('user_id')
|
|
|
+ ->leftJoin('member as b', 'b.id', '=', 'a.user_id')
|
|
|
+ ->where('a.status', '>', 1)
|
|
|
+ ->where(['a.main_no' => '', 'a.type' => 2, 'b.parent_id' => $parentId, 'a.pay_status' => 20])
|
|
|
+ ->count();
|
|
|
+ }
|
|
|
+
|
|
|
+ // 升级检查
|
|
|
+ if($orderCount||$parentOrderCount){
|
|
|
+ foreach ($levelList as $item) {
|
|
|
+ $level = isset($item['id']) ? $item['id'] : 0;
|
|
|
+ $upperCount = isset($item['upper_count']) ? $item['upper_count'] : 0;
|
|
|
+ if ($orderCount >= $upperCount && $level > $memberLevel) {
|
|
|
+ $upperLevel = $level;
|
|
|
+ }
|
|
|
|
|
|
- if ($parentOrderCount >= $upperCount && $level > $parentLevel) {
|
|
|
- $parentUpperLevel = $level;
|
|
|
+ if ($parentOrderCount >= $upperCount && $level > $parentLevel) {
|
|
|
+ $parentUpperLevel = $level;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
- }
|
|
|
|
|
|
|
|
|
- if ($upperLevel > 0) {
|
|
|
- MemberModel::where(['id' => $userId])->update(['member_level' => $upperLevel, 'update_time' => time()]);
|
|
|
- }
|
|
|
+ if ($upperLevel > 0) {
|
|
|
+ MemberModel::where(['id' => $userId])->update(['member_level' => $upperLevel, 'update_time' => time()]);
|
|
|
+ }
|
|
|
|
|
|
- if ($parentUpperLevel > 0) {
|
|
|
- MemberModel::where(['id' => $parentId])->update(['member_level' => $parentUpperLevel, 'update_time' => time()]);
|
|
|
- }
|
|
|
+ if ($parentUpperLevel > 0) {
|
|
|
+ MemberModel::where(['id' => $parentId])->update(['member_level' => $parentUpperLevel, 'update_time' => time()]);
|
|
|
+ }
|
|
|
|
|
|
- $this->error = $upperLevel || $parentUpperLevel? '等级更新成功':'没有等级可更新';
|
|
|
- return ['user_id' => $userId, 'member_level' => $memberLevel, 'upper_level' => $upperLevel,'order_count'=>$orderCount, 'parent_level' => $parentLevel, 'parent_upper_level' => $parentUpperLevel,'parent_order_count'=>$parentOrderCount, 'parent_id' => $parentId];
|
|
|
+ $this->error = $upperLevel || $parentUpperLevel? '等级更新成功':'没有等级可更新';
|
|
|
+ $result = ['user_id' => $userId, 'member_level' => $memberLevel, 'upper_level' => $upperLevel,'order_count'=>$orderCount, 'parent_level' => $parentLevel, 'parent_upper_level' => $parentUpperLevel,'parent_order_count'=>$parentOrderCount, 'parent_id' => $parentId];
|
|
|
+ RedisService::set("caches:upperLevel:{$userId}_success", $result, 7200);
|
|
|
+ return $result;
|
|
|
+ } catch (\Exception $exception){
|
|
|
+ RedisService::set("caches:upperLevel:{$userId}_error", ['error'=>$exception->getMessage(),'trace'=>$exception->getTrace()], 7200);
|
|
|
+ return false;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
/**
|