Browse Source

Merge branch 'store_account_1102'

master
liangyuyan 5 years ago
parent
commit
280a853f7f
  1. 39
      app/Admin/Common/Type.php
  2. 63
      app/Admin/Controllers/v3/StoreController.php
  3. 99
      app/Admin/Renderable/StoreBalance.php
  4. 17
      app/Admin/Repositories/CommonEmpty.php
  5. 2
      app/Models/FinancialRecord.php
  6. 9
      app/Models/v3/Store.php
  7. 5
      resources/lang/zh-CN/store.php

39
app/Admin/Common/Type.php

@ -6,6 +6,45 @@ namespace App\Admin\Common;
class Type
{
const MONEY_TYPE_LIST = [
0 => '未知',
1 => '社区服务点新用户奖励',
2 => '社区服务点新用户线上首单奖励',
3 => '社区服务点用户线上订单分账',
4 => '商户平台新用户奖励',
5 => '商户当日首单奖励',
6 => '商户线上订单完成收入',
7 => '商户线下订单完成收入',
8 => '用户线上订单退款',
9 => '市场经理发展新用户',
10 => '市场经理发展新商户',
11 => '服务商发展新用户',
12 => '服务商发展新商户',
13 => '服务商线上订单分账',
100 => '用户线下支付订单',
101 => '用户线上支付订单',
102 => '服务商提现类型',
103 => '市场经理提现类型',
104 => '社区提现类型',
];
const USER_TYPE_LIST = [
-1 => '虚拟账户',
0 => '未知',
1 => '微信用户',
2 => '服务商',
3 => '市场经理',
4 => '社区代理点',
5 => '商户',
];
const SOURCE_TYPE_LIST = [
0 => '无类型',
1 => '订单',
2 => '商户提现',
];
/**
* lanzu_financial_record
* 流水类型,大的分类,<100是奖励分账等收入项 >=100是提现消费等支出项

63
app/Admin/Controllers/v3/StoreController.php

@ -19,6 +19,7 @@ use App\Models\v3\Category as CategoryModel;
use App\Models\LanzuUserBalance as UserBalanceModel;
use App\Models\v3\StoreUsers as StoreUsersModel;
use App\Admin\Actions\Grid\v3\StoreSetTime;
use App\Admin\Renderable\StoreBalance;
class StoreController extends AdminController
{
@ -49,14 +50,32 @@ class StoreController extends AdminController
$grid->id->sortable();
$grid->logo_url->image('',50);
$grid->name->width('12%');
// 可看店铺余额权限
if($this->storeBalanceCan()){
$grid->column('user_id','余额')->display(function($userId){
$userId = $this->user_id;
$balance = 0;
if($userId > 0){
$moneyType = 5;// 商户类型
$balance = UserBalanceModel::getBalance($userId, $moneyType);
}
return $balance;
})->modal(function($modal){
$name = $this->name;
$modal->title($name.'的余额明细');
$table = StoreBalance::make(['user_id'=>$this->user_id]);
return $table;
});
}
$grid->market_id->display(function ($marketId) use($marketList){
return isset($marketList[$marketId]) ? $marketList[$marketId] : '';
});
$grid->mm_user_id->display(function ($mmUserId){
$mmUser = MminfoModel::getMmInfo($mmUserId,'name');
return empty($mmUser) ? '' : $mmUser->name;
});
// $grid->mm_user_id->display(function ($mmUserId){
// $mmUser = MminfoModel::getMmInfo($mmUserId,'name');
// return empty($mmUser) ? '' : $mmUser->name;
// });
$grid->store_applet_img->display(function($appletImg){
$id = $this->id;
$oldPath = 'https://img.lanzu.vip/addons/zh_cjdianc/data/code_store_img/wx_store_'.$id.'.jpg';
@ -65,7 +84,7 @@ class StoreController extends AdminController
return $img;
});
// ->image('',50);
$grid->cash_code_img->display(function($appletImg){
$id = $this->id;
$oldPath = 'https://img.lanzu.vip/addons/zh_cjdianc/data/code_pay_img/wx_pay_'.$id.'.jpg'.config('filesystems.disks.oss.store_image_resize');
@ -74,10 +93,8 @@ class StoreController extends AdminController
return $img;
});
// ->image('',50);
$grid->sort->sortable();
$grid->is_rest->switch();
$grid->is_operation->switch();
$grid->is_open->switch();
$grid->actions([new StoreSetTime()]);
@ -203,8 +220,10 @@ class StoreController extends AdminController
$form->column(6, function (Form $form) use($marketList,$categoryList){
$form->hidden('id');
$form->number('mm_user_id')->help('市场经理的懒ID');
$form->text('mm_user_id')->type('number')->default(0)->attribute('min', 0)->placeholder('市场经理懒ID')->width(4)->help('市场经理的懒ID');
$form->select('market_id')->required()->options($marketList)->help('谨慎选择所属市场,添加成功后不能修改所属市场,因为会影响商品所属市场!');
$form->select('category_id')->options($categoryList);
$form->text('name')->required()->maxLength(50);
if($form->isCreating()){
@ -216,13 +235,14 @@ class StoreController extends AdminController
$form->text('link_name')->required();
$form->mobile('link_tel')->required();
$form->number('sort');
$form->switch('is_rest')
$form->switch('is_operation')
->customFormat(function ($v) {
return $v == 1 ? 1 : 0;
})
->saving(function ($v) {
return $v == 1 ? 1 : 0;
});
$form->hidden('is_rest');
$form->switch('is_open')
->customFormat(function ($v) {
return $v == 1 ? 1 : 0;
@ -242,10 +262,10 @@ class StoreController extends AdminController
$form->image('zm_img')->autoUpload()->required();
$form->image('fm_img')->autoUpload()->required();
}
// $form->select('admin_id')->options($userList)->required();
// $form->select('user_id')->options($userList)->required();
$form->number('admin_id')->required()->min(0);
$form->number('user_id')->required()->min(0);
$form->text('admin_id')->type('number')->required()->default(0)->attribute('min', 0)->placeholder('管理员懒ID')->width(4);
$form->text('user_id')->type('number')->required()->default(0)->attribute('min', 0)->placeholder('提现用户懒ID')->width(4);
// $form->number('admin_id')->default(0)->required()->min(0)->placeholder('管理员懒ID');
// $form->number('user_id')->default(0)->required()->min(0)->placeholder('提现用户懒ID');
$form->time('time1','时间段一开始')->required()->format('HH:mm');
$form->time('time2','时间段一结束')->required()->format('HH:mm')->rules('after:time1',['after'=>'选择的时间必须比时间段一开始时间晚']);
$form->time('time3','时间段二开始')->format('HH:mm');
@ -267,12 +287,17 @@ class StoreController extends AdminController
$id = $form->getKey();
$adminId = $form->input('admin_id');
$marketId = $form->input('market_id');
$isOperation = $form->input('is_operation');
$time1 = $form->input('time1');
$time2 = $form->input('time2');
$time3 = $form->input('time3');
$time4 = $form->input('time4');
if($isOperation !== null){
$form->is_rest = $isOperation == 1 ? 0 : 1;
}
if(!empty($time1) && !empty($time2) && (!empty($time3) || !empty($time4))){
if($time3 && empty($time4)){
return $form->error('请选择时间段二的结束时间!');
@ -303,6 +328,7 @@ class StoreController extends AdminController
return $form->error('管理员已经绑定了店铺');
}
}
$form->deleteInput('is_operation');
});
$form->saved(function (Form $form){
$id = $form->getKey();
@ -387,4 +413,13 @@ class StoreController extends AdminController
return $hash;
}
/**
* @return bool
*/
protected function storeBalanceCan(): bool
{
$user = Admin::user();
return $user->can('store_balance');
}
}

99
app/Admin/Renderable/StoreBalance.php

@ -0,0 +1,99 @@
<?php
namespace App\Admin\Renderable;
use Dcat\Admin\Grid;
use App\Admin\Common\Type;
use App\Admin\Repositories\CommonEmpty;
use Dcat\Admin\Grid\LazyRenderable;
use App\Models\FinancialRecord;
class StoreBalance extends LazyRenderable
{
protected $title = '商户余额明细';
public function grid(): Grid
{
// 获取外部传递的参数
$userId = $this->user_id ?? 0;
$model = FinancialRecord::getFinancialRecordModel($userId);
if(!$model){
return Grid::make(new CommonEmpty(), function (Grid $grid) {
$grid->column('id','商 户 未 绑 定 提 现 用 户 懒 ID !');
$grid->disableRowSelector();
$grid->disableActions();
$grid->disablePagination();
});
}
return Grid::make($model, function (Grid $grid) {
$grid->column('id','ID');
$grid->column('user_type','账户类型')->display(function($userType){
$item = Type::USER_TYPE_LIST[$userType] ?? '';
return $item;
});
$grid->column('money_type','流水类型')->display(function($moneyType){
$item = Type::MONEY_TYPE_LIST[$moneyType] ?? '';
return $item;
});
$grid->column('money','金额');
$grid->column('current_balance','账户余额');
$grid->column('comment','描述');
$grid->column('status','状态')
->using(
FinancialRecord::$status
)
->label(
config('label.status_label')
);
$grid->column('created_at')->display(function($createdAt){
return date('Y-m-d H:i:s',$createdAt);
});
// 搜索
$grid->filter(function (Grid\Filter $filter){
$userTypeList = Type::USER_TYPE_LIST;
$moneyTypeList = Type::MONEY_TYPE_LIST;
$sourceTYpeList = Type::SOURCE_TYPE_LIST;
unset($userTypeList[0],$moneyTypeList[0]);
$filter->equal('id','流水表ID')->width(3);
$filter->equal('user_id','账户ID')->width(3);
$filter->equal('current_balance','账户余额')->width(3);
$filter->equal('money','流水金额')->width(3);
$filter->equal('source_id','关联流水ID')->width(3);
$filter->equal('money_type','流水类型')->select($userTypeList)->width(4);
$filter->equal('user_type','账户类型')->select($moneyTypeList)->width(4);
$filter->equal('source_type','关联类型')->select($sourceTYpeList)->width(4);
$filter->whereBetween('created_at',function($q){
$start = $this->input['start'] ?? null;
$end = $this->input['end'] ?? null;
if($start !== null){
$q->where('created_at','>=',strtotime($start));
}
if($end !== null){
$q->where('created_at','<=',strtotime($end));
}
})->datetime()->width(7);
});
$grid->model()->orderBy('id','desc');
// 每页10条
$grid->paginate(10);
$grid->disableActions();
$grid->disableRowSelector();
});
}
public function default()
{
// 获取外部传递的参数
$userId = $this->payload['user_id'] ?? 0;
return [
'user_id' => $userId,
];
}
}

17
app/Admin/Repositories/CommonEmpty.php

@ -0,0 +1,17 @@
<?php
namespace App\Admin\Repositories;
use Dcat\Admin\Grid;
use Dcat\Admin\Repositories\Repository;
class CommonEmpty extends Repository
{
/**
* 模型创建失败时返回空使用空数据仓库
*/
public function get(Grid\Model $model)
{
return [];
}
}

2
app/Models/FinancialRecord.php

@ -9,6 +9,8 @@ class FinancialRecord extends Model
use HasDateTimeFormatter;
protected $dateFormat = 'U';
public static $status = [ 0 =>'异常' ,1=> '正常'];
/**
* 根据用户id创建不同模型
* @param $user_id

9
app/Models/v3/Store.php

@ -25,9 +25,14 @@ class Store extends Model
protected $appends = [
'logo_url',
'is_rest_text',
'is_open_text'
'is_open_text',
'is_operation'
];
public function getIsOperationAttribute($value)
{
$value = $value ? $value : $this->is_rest;
return $value == 1 ? 0 : 1;
}
public function getLogoUrlAttribute($value)
{
$value = $value ? $value : $this->logo;

5
resources/lang/zh-CN/store.php

@ -15,8 +15,9 @@ return [
'time4' => '营业时间',
'tel' => '电话(座机)',
'announcement' => '公告',
'is_rest' => '是否休息',
'is_rest_text' => '是否休息',
'is_rest' => '休息/营业',
'is_rest_text' => '休息/营业',
'is_operation' => '休息/营业',
'logo' => 'logo',
'logo_url' => 'logo',
'introduction' => '商家简介',

Loading…
Cancel
Save