| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- <?php
- namespace app\common\model\user;
- use app\common\model\BaseModel;
- use app\common\model\store\order\StoreOrder;
- //include_once app_path('common.php');
- class OilLevel extends BaseModel
- {
- public static function tablePk(): ?string
- {
- return 'id';
- }
- public static function tableName(): string
- {
- return 'oil_level';
- }
- //买节能油商品的时候触发 检测升级
- public function checkLevel($uid, $pass = [])
- {
- if (in_array($uid, $pass)) return true;
- $user = User::find($uid);
- $group_users = $this->get_group_user($uid);
- //Todo 获取在$group_users内所有用户的消费情况
- $achievement = 0;
- //获取该用户和下级团队购买过的节能油商品的全部订单
- $achievement1 = StoreOrder::where('uid', 'in',$group_users)->where('paid', 1)->where('product_type',1)->whereNotIn('status',-1)->sum('pay_price');
- $achievement2 = StoreOrder::where('uid', $uid)->where('paid', 1)->where('product_type',1)->whereNotIn('status',-1)->sum('pay_price');
- $achievement = bcadd($achievement1, $achievement2, 2);
- @file_put_contents('quanju2.txt', $achievement."-节能油订单总额\r\n", 8);
- $old_level = self::where('id', $user['oil_level'])->find();
- if (!$old_level) $old_level = [
- 'grade' => 0,
- 'name' => '普通会员'
- ];
- // if ($old_level['oil_level']!=99){ //如果用户不是服务中心
- $level = self::where('grade', '>', $old_level['grade'])->where('achievement', '<=', $achievement)
- ->order('grade', 'desc')->find();
- @file_put_contents('quanju2.txt', json_encode($level)."-等级信息\r\n", 8);
- if ($level) {
- $user->old_level = $level['id'];
- // $user->save();
- $user->where('uid', $user['uid'])->update(['oil_level' => $level['id']]);
- }
- // }
- $pass[] = $uid;
- $spread = User::where('uid', $user['spread_uid'])->find();
- if ($spread){
- @file_put_contents('quanju2.txt', json_encode($spread)."-上级等级检测\r\n", 8);
- return $this->checkLevel($spread['uid'], $pass);
- }
- return true;
- }
- public function get_group_user($id, $init = true, $members = null){
- if ($init) {
- $us = \app\common\model\user\User::column('spread_uid', 'uid');
- $members = [];
- foreach ($us as $k => $v) {
- if ($v > 0)
- $members[$v][] = $k;
- }
- $id = [$id];
- }
- $arr = array();
- foreach ($id as $v) {
- $child = $members[$v] ?? [];
- $arr = array_merge($arr, $child);
- }
- if (count($arr)) {
- return array_merge($arr, $this->get_group_user($arr, false, $members));
- } else {
- return $arr;
- }
- }
- }
|