diff --git a/plugins/weight-value/src/admin/IndexController.php b/plugins/weight-value/src/admin/IndexController.php index 2386f411..ad8570b5 100644 --- a/plugins/weight-value/src/admin/IndexController.php +++ b/plugins/weight-value/src/admin/IndexController.php @@ -2,16 +2,72 @@ namespace Yunshop\WeightValue\admin; use app\common\components\BaseController; +use app\common\helpers\PaginationHelper; +use Yunshop\TeamDividend\models\TeamDividendLevelModel; +use Yunshop\WeightValue\models\WeightValue; +use Yunshop\WeightValue\models\WeightValueLog; class IndexController extends BaseController{ - + /** + * Common: 进入权重值列表 + * Author: wu-hui + * Time: 2023/10/12 15:40 + * @return array|string + * @throws \Throwable + */ public function index(){ + //参数获取 + $pageSize = request()->input('page_size',10); + $search = request()->input('search'); + // 获取列表信息 + $levelList = TeamDividendLevelModel::uniacid() + ->select(['id','level_name']) + ->get() + ->toArray(); + $result = WeightValue::getList($pageSize,$search); + $data = [ + 'list' => $result['data'], + 'pager' => PaginationHelper::show($result['total'],$result['current_page'],$result['per_page']), + 'search' => $search, + 'level_list' => $levelList + ]; + return view('Yunshop\WeightValue::index.index',$data)->render(); + } + // 查看变更记录 + public function changeRecord(){ + // 参数获取 + $memberId = (int)request()->input('member_id'); + $levelId = (int)request()->input('level_id'); + $isGet = (int)request()->input('is_get'); + $search = request()->input('search'); + if($isGet){ + // 获取变更记录 + $field = [ + 'id', + 'team_dividend_agency_level_id', + 'change_type', + 'change_quantity', + 'change_front', + 'change_after', + 'remark', + 'created_at' + ]; + $result = WeightValueLog::getList(10,$search,$field); + return $this->successJson('success',[ + 'current_page' => $result['current_page'], + 'data' => $result['data'], + 'last_page' => $result['last_page'], + ]); + } - - return view('Yunshop\WeightValue::index.index')->render(); + return view('Yunshop\WeightValue::index.change_record',[ + 'member_id' => $memberId, + 'level_id' => $levelId, + 'is_get' => $isGet, + ])->render(); } @@ -21,4 +77,6 @@ class IndexController extends BaseController{ + + } diff --git a/plugins/weight-value/src/models/WeightValue.php b/plugins/weight-value/src/models/WeightValue.php index 6f957060..d207f330 100644 --- a/plugins/weight-value/src/models/WeightValue.php +++ b/plugins/weight-value/src/models/WeightValue.php @@ -3,16 +3,20 @@ namespace Yunshop\WeightValue\models; use app\common\models\BaseModel; +use app\common\models\Member; use app\common\models\member\MemberParent; use app\common\models\OrderGoods; use Illuminate\Support\Facades\DB; use Yunshop\TeamDividend\models\TeamDividendAgencyModel; +use Yunshop\TeamDividend\models\TeamDividendLevelModel; class WeightValue extends BaseModel{ public $table = 'yz_weight_value'; public $timestamps = false; + private static $weightValueLevelTotal = [];// 每个等级的权重值总数列表 + /** * Common: 购买商品赠送权重值 - 开始处理 @@ -229,13 +233,90 @@ class WeightValue extends BaseModel{ $weightValueModel->save(); } } + /** + * Common: 获取权重值列表 + * Author: wu-hui + * Time: 2023/10/12 15:35 + * @param $pageSize + * @param $search + * @param string[] $field + * @return array + */ + public static function getList($pageSize,$search){ + // 条件生成 + $where = []; + if($search['member_id'] > 0) $where[] = ['member_id','=',$search['member_id']]; + if($search['team_dividend_agency_level_id'] > 0) $where[] = ['team_dividend_agency_level_id','=',$search['team_dividend_agency_level_id']]; + // 列表获取 + $list = self::uniacid() + ->where($where) + ->with([ + 'member' => function($query){ + $query->select(['uid','nickname','realname','avatar']); + }, + 'level' => function($query){ + $query->select(['id','level_name']); + }, + ]) + ->orderBy('id','DESC') + ->paginate($pageSize) + ->toArray(); + // 根据经销商等级id分组 根据id大小排序 获取排序序号 + $group = self::uniacid()->groupBy('team_dividend_agency_level_id')->pluck('team_dividend_agency_level_id'); + $group = $group ? $group->toArray() : []; + sort($group); + $group = array_flip($group); + // 循环处理数据 + foreach($list['data'] as &$item){ + // 获取总数及比例 + [$item['total_quantity'],$item['ratio']] = self::getTotalAndRatio((int)$item['team_dividend_agency_level_id'],$item['quantity']); + // 排序序号 + $item['sort'] = $group[(int)$item['team_dividend_agency_level_id']]; + } + + return $list; + } + /** + * Common: 根据经销商等级id及持有数量 获取该等级总数及持有数量占比 + * Author: wu-hui + * Time: 2023/10/12 16:10 + * @param int $levelId + * @param $quantity + * @return array + */ + public static function getTotalAndRatio(int $levelId,$quantity){ + $name = \YunShop::app()->uniacid.'_'.$levelId; + // 获取当前等级的总权重值 + if(array_key_exists($name,self::$weightValueLevelTotal)){ + $total = self::$weightValueLevelTotal[$name]; + }else{ + $total = self::uniacid()->where('team_dividend_agency_level_id',$levelId)->sum('quantity'); + self::$weightValueLevelTotal[$name] = $total; + } + // 计算比例 + $ratio = sprintf("%.2f",$quantity / $total * 100); + + return [$total,$ratio]; + } - - - - - - + /** + * Common: 一对一关联 用户信息 + * Author: wu-hui + * Time: 2023/10/12 15:33 + * @return mixed + */ + public function member(){ + return $this->hasOne(Member::class, 'uid', 'member_id'); + } + /** + * Common: 一对一关联 经销商等级信息 + * Author: wu-hui + * Time: 2023/10/12 15:36 + * @return \Illuminate\Database\Eloquent\Relations\HasOne + */ + public function level(){ + return $this->hasOne(TeamDividendLevelModel::class, 'id', 'team_dividend_agency_level_id'); + } } diff --git a/plugins/weight-value/src/models/WeightValueLog.php b/plugins/weight-value/src/models/WeightValueLog.php index a6b5b676..1241e2bb 100644 --- a/plugins/weight-value/src/models/WeightValueLog.php +++ b/plugins/weight-value/src/models/WeightValueLog.php @@ -3,6 +3,7 @@ namespace Yunshop\WeightValue\models; use app\common\models\BaseModel; use app\common\models\Member; +use Yunshop\TeamDividend\models\TeamDividendLevelModel; class WeightValueLog extends BaseModel{ @@ -14,7 +15,7 @@ class WeightValueLog extends BaseModel{ protected $fillable = [ 'uniacid', 'member_id', - 'type', + 'team_dividend_agency_level_id', 'goods_id', 'order_id', 'order_goods_id', @@ -26,11 +27,10 @@ class WeightValueLog extends BaseModel{ 'created_at', ]; - /** - * Common: 获取列表 + * Common: 权重值变更记录 * Author: wu-hui - * Time: 2023/09/27 14:04 + * Time: 2023/10/12 17:48 * @param $pageSize * @param $search * @param string[] $field @@ -40,29 +40,27 @@ class WeightValueLog extends BaseModel{ // 条件生成 $where = []; if($search['member_id'] > 0) $where[] = ['member_id','=',$search['member_id']]; - // if($search['type'] >= 0 && !is_null($search['type'])) $where[] = ['type','=',$search['type']]; - if($search['change_type'] >= 0 && !is_null($search['change_type'])) $where[] = ['change_type','=',$search['change_type']]; + if($search['team_dividend_agency_level_id'] > 0) $where[] = ['team_dividend_agency_level_id','=',$search['team_dividend_agency_level_id']]; + if($search['change_type'] >= 0 && $search['change_type'] != '') $where[] = ['change_type','=',$search['change_type']]; // 列表获取 $list = self::uniacid() ->select($field) ->where($where) - ->with(['member'=>function($query){ - $query->select(['uid','nickname','realname','avatar']); - }]) + ->with([ + 'member' => function($query){ + $query->select(['uid','nickname','realname','avatar']); + }, + 'level' => function($query){ + $query->select(['id','level_name']); + }, + ]) ->orderBy('created_at','DESC') ->orderBy('id','DESC') ->paginate($pageSize); return $list ? $list->toArray() : []; } - /** - * Common: 获取总数 - * Author: wu-hui - * Time: 2023/09/27 17:49 - * @param $uid - * @param int $changeType - * @return string - */ + // 获取总数 public function getChangeTypeSum($uid,$changeType = -1){ $where = []; if($changeType == 0) $where[] = ['change_type','=',0]; @@ -72,16 +70,7 @@ class WeightValueLog extends BaseModel{ return sprintf("%.2f",$sum); } - /** - * Common: 权重值增加|减少操作 - * Author: wu-hui - * Time: 2023/09/27 17:12 - * @param int $uid - * @param float $money - * @param int $changeType - * @param string $remark - * @param int $type - */ + // 权重值增加|减少操作 public function weightValueOperate(int $uid,float $money,int $changeType = 1,string $remark = '',int $type = 0){ // 获取当前用户持有数量 $changeFront = (float)Member::uniacid()->where('uid',$uid)->value('weight_value'); @@ -113,13 +102,21 @@ class WeightValueLog extends BaseModel{ /** * Common: 一对一关联 用户信息 * Author: wu-hui - * Time: 2023/09/27 13:43 + * Time: 2023/10/12 17:49 * @return \Illuminate\Database\Eloquent\Relations\HasOne */ public function member(){ return $this->hasOne(Member::class, 'uid', 'member_id'); } - + /** + * Common: 一对一关联 经销商等级信息 + * Author: wu-hui + * Time: 2023/10/12 15:36 + * @return \Illuminate\Database\Eloquent\Relations\HasOne + */ + public function level(){ + return $this->hasOne(TeamDividendLevelModel::class, 'id', 'team_dividend_agency_level_id'); + } diff --git a/plugins/weight-value/views/index/change_record.blade.php b/plugins/weight-value/views/index/change_record.blade.php new file mode 100644 index 00000000..fc5e2cc7 --- /dev/null +++ b/plugins/weight-value/views/index/change_record.blade.php @@ -0,0 +1,116 @@ + +
| ID | -终端商信息 | -引荐人信息 | -注册人信息 | -营业执照 | -门头照片 | -内部照片 | -- @if($is_apply) - 申请时间 - @else - 审核时间 - @endif + | ID | +用户信息 | +权重值类型 | ++ 平台总数 + 用户持有 + 占比(%) | 操作 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| {{ $item['id'] }} | -
-
-
-
-
-
- |
-
|
-
-
- 注册人:{{ $item['contacts'] }}
+ - 联系电话:{{ $item['contacts_phone'] }} - | + + {{ $item['level'] ? $item['level']['level_name'].'权重值' : '' }} + |
-
- - + {{ $item['total_quantity'] }} + {{ $item['quantity'] }} + {{ $item['ratio'].'%' }} |
-
- - - |
-
-
- - - |
- - @if($is_apply) - {{ $item['created_at'] }} - @else - {{ $item['to_examine_time'] }} - @endif - | -- @if ($is_apply) - {{--审核内容--}} - @if ($item['status'] == 0) - - - @endif - - - - @else - {{--使用中内容--}} - - - - - - @endif + |