Browse Source

Merge branch 'phoenix' into develop

master
liangyuyan 5 years ago
parent
commit
4eadb0db4e
  1. 2
      app/Admin/Common/StoreQRCode.php
  2. 34
      app/Admin/Common/WeChatQrCode.php
  3. 6
      app/Admin/Controllers/v3/BannersController.php
  4. 2
      app/Admin/Controllers/v3/GoodsActivityController.php
  5. 1
      app/Admin/Controllers/v3/GoodsNewController.php
  6. 132
      app/Admin/Controllers/v3/ServicePersonnelController.php
  7. 28
      app/Admin/Controllers/v3/StoreController.php
  8. 2
      app/Admin/Repositories/StoreUserReport.php
  9. 18
      app/Models/v3/Banners.php
  10. 2
      app/Models/v3/Category.php
  11. 10
      app/Models/v3/Goods.php
  12. 18
      app/Models/v3/GoodsActivity.php
  13. 10
      app/Models/v3/GoodsNew.php
  14. 57
      app/Models/v3/ServicePersonnel.php
  15. 4
      app/Models/v3/Store.php
  16. 10
      app/Models/v3/StoreNew.php
  17. 4
      config/filesystems.php

2
app/Admin/Common/StoreQRCode.php

@ -6,7 +6,7 @@ use Dcat\Admin\Controllers\AdminController;
use EasyWeChat\Factory;
use Intervention\Image\ImageManager;
class StoreQRCode extends AdminController
class StoreQrCode extends AdminController
{
protected $images;
protected $imageManager;

34
app/Admin/Common/WeChatQrCode.php

@ -0,0 +1,34 @@
<?php
namespace App\Admin\Common;
use Dcat\Admin\Controllers\AdminController;
use EasyWeChat\Factory;
class WeChatQrCode extends AdminController
{
protected $images;
public function __construct()
{
$this->images = new Images();
}
/**
* 服务站专员评价小程序码
*/
public function getServicePersonnel($id)
{
$param = "page=details&id={$id}";
$path = "zh_cjdianc/pages/Liar/loginindex";
$codeImg = $this->images->createQrCode($param,$path);
$imgPath = 'public/upload/qrcode/'.date('Y') . '/' . date('m-d') . '/' . date('His').md5(time()).'.png';/* 生成唯一文件名 */
$res = $this->images->uploadOss($codeImg,$imgPath);
if($res){
return ['status' => true ,'path' => $imgPath];
}else{
return ['status' => false ,'path' => ''];
}
}
}

6
app/Admin/Controllers/v3/BannersController.php

@ -92,7 +92,7 @@ class BannersController extends AdminController
$form->select('market_id')->options($marketList)->default(0);
// 多个市场
$form->multipleSelect('market_ids')->options($marketList);
$form->select('type')->options(BannersModel::$_type)->required();
$form->select('type')->options(BannersModel::$_TYPE)->required();
$form->text('title')->required();
$form->text('sub_title');
$form->number('sort')->default(0);
@ -106,9 +106,9 @@ class BannersController extends AdminController
});
$form->column(6, function (Form $form) {
$form->image('cover')->required()->uniqueName();
$form->select('cover_type')->options(BannersModel::$_coverType)->required();
$form->select('cover_type')->options(BannersModel::$_COVER_TYPE)->required();
$form->text('path')->default('');
$form->select('path_type')->options(BannersModel::$_pathType)->default('');
$form->select('path_type')->options(BannersModel::$_PATH_TYPE)->default('');
});
$form->disableResetButton();

2
app/Admin/Controllers/v3/GoodsActivityController.php

@ -143,7 +143,7 @@ class GoodsActivityController extends AdminController
$form->select('store_id')->required()->options($storeList);
$form->text('name')->required()->maxLength(20);
$form->image('cover_img')->required()->uniqueName();
$form->select('type')->options(GoodsActivityModel::$_type)->default('flash_sale');
$form->select('type')->options(GoodsActivityModel::$_TYPE)->default('flash_sale');
$form->datetime('expire_time')->required()->format('YYYY-MM-DD HH:mm:ss')->help($form->model()->expire_time_text);
});
$form->column(6, function (Form $form) {

1
app/Admin/Controllers/v3/GoodsNewController.php

@ -71,6 +71,7 @@ class GoodsNewController extends AdminController
$filter->equal('category_id')->select($categoryList);
$filter->equal('goods_category_id')->select($goodsCategoryList);
$filter->equal('market_id')->select($marketList);
$filter->equal('on_sale')->select(GoodsModel::$_ONSALE);
});
$grid->model()->orderBy('category_id', 'asc');

132
app/Admin/Controllers/v3/ServicePersonnelController.php

@ -7,6 +7,10 @@ use Dcat\Admin\Form;
use Dcat\Admin\Grid;
use Dcat\Admin\Show;
use Dcat\Admin\Controllers\AdminController;
use App\Models\v3\ServicePersonnel as ServicePersonnelModel;
use App\Models\v3\Market as MarketModel;
use App\Models\v3\User as UserModel;
use App\Admin\Common\WeChatQrCode;
class ServicePersonnelController extends AdminController
{
@ -18,22 +22,32 @@ class ServicePersonnelController extends AdminController
protected function grid()
{
return Grid::make(new ServicePersonnel(), function (Grid $grid) {
//市场
$marketList = MarketModel::getMarketArray();
$grid->column('id')->sortable();
$grid->column('user_id');
$grid->column('head_url')->image('',50);
$grid->column('name');
$grid->column('tel');
$grid->column('market_id');
$grid->column('type');
$grid->column('status');
$grid->column('qr_url');
$grid->column('head_url');
$grid->column('created_at');
$grid->column('updated_at')->sortable();
$grid->filter(function (Grid\Filter $filter) {
$grid->column('market_id')->display(function($marketId) use ($marketList){
return isset($marketList[$marketId]) ? $marketList[$marketId] : '';
});
$grid->column('type_text');
$grid->column('qr_url')->image('',50);
$grid->column('status')->using(ServicePersonnelModel::$_STATUS)->label(config('label.status_label'));
$grid->model()->orderby('id','desc');
$grid->filter(function (Grid\Filter $filter) use($marketList){
$filter->equal('id');
$filter->like('name');
$filter->equal('type')->select(ServicePersonnelModel::$_TYPE);
$filter->equal('market_id')->select($marketList);
});
// 每页10条
$grid->paginate(10);
$grid->disableDeleteButton();
});
}
@ -47,17 +61,33 @@ class ServicePersonnelController extends AdminController
protected function detail($id)
{
return Show::make($id, new ServicePersonnel(), function (Show $show) {
$show->field('id');
$show->field('user_id');
$show->field('name');
$show->field('tel');
$show->field('market_id');
$show->field('type');
$show->field('status');
$show->field('qr_url');
$show->field('head_url');
$show->field('created_at');
$show->field('updated_at');
$show->row(function (Show\Row $show) {
$show->width(6)->id;
$show->width(6)->field('name');
$show->width(6)->field('tel');
$show->width(6)->field('user_id')->as(function($userId){
$item = UserModel::getUserInfo($userId,'nick_name');
return empty($item) ? '' : '【'.$userId.'】:' . $item['nick_name'];
});
$show->width(6)->field('head_url')->image();
$show->width(6)->field('qr_url')->image();
});
$show->row(function (Show\Row $show) {
$show->width(6)->field('market_id')->as(function($marketId){
$item = MarketModel::getMarketInfo($marketId,'name');
return empty($item) ? '' : $item['name'];
});
$show->width(6)->field('type_text');
$show->width(6)->field('status_text');
$show->width(6)->field('created_at')->as(function($createdAt){
return date('Y-m-d H:i:s',$createdAt);
});
$show->width(6)->field('updated_at')->as(function($updatedAt){
return date('Y-m-d H:i:s',$updatedAt);
});
});
});
}
@ -69,18 +99,52 @@ class ServicePersonnelController extends AdminController
protected function form()
{
return Form::make(new ServicePersonnel(), function (Form $form) {
$form->display('id');
$form->text('user_id');
$form->text('name');
$form->text('tel');
$form->text('market_id');
$form->text('type');
$form->text('status');
$form->text('qr_url');
$form->text('head_url');
$form->display('created_at');
$form->display('updated_at');
$userId = $form->model()->user_id;
//市场
$marketList = MarketModel::getMarketArray();
// 用户
$userList = UserModel::getUserArray();
// 已绑定的用户
$userHas = ServicePersonnelModel::pluck('user_id')->toArray();
foreach($userList as $ku => $uv){
if($ku != 0 && in_array($ku,$userHas) && !in_array($userId,$userHas)){
unset($userList[$ku]);
}
}
$form->column(6,function(Form $form){
$form->hidden('id');
$form->text('name')->required();
$form->text('tel')->required();
$form->image('head_url')->required();
});
$form->column(6,function(Form $form) use($marketList,$userList){
$form->select('type')->options(ServicePersonnelModel::$_TYPE)->required();
$form->select('market_id')->options($marketList)->required();
$form->select('user_id')->options($userList)->required();
$statusList = ServicePersonnelModel::$_STATUS;
unset($statusList[0],$statusList[2]);
$form->radio('status')->options($statusList)->default(1);
});
$form->saved(function(Form $form){
$id = $form->getKey();
if($form->isCreating && !empty($id)){
$model = ServicePersonnelModel::find($id);
$qrCode = new WeChatQrCode();
// 生成专员二维码
$qrCodeImg = $qrCode->getServicePersonnel($id);
if($qrCodeImg['status']){
$model->qr_url = $qrCodeImg['path'];
$model->save();
}
}
});
$form->disableResetButton();
$form->disableViewCheck();
$form->disableEditingCheck();
$form->disableCreatingCheck();
});
}
}

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

@ -11,7 +11,7 @@ use Dcat\Admin\Show;
use Dcat\Admin\Controllers\AdminController;
use App\Models\LanzuMmInfo as MminfoModel;
use App\Models\v3\Market as MarketModel;
use App\Admin\Common\StoreQRCode;
use App\Admin\Common\StoreQrCode;
use App\Models\v3\Store as StoreModel;
use App\Models\v3\User as UserModel;
use App\Models\v3\Category as CategoryModel;
@ -49,8 +49,24 @@ class StoreController extends AdminController
$mmUser = MminfoModel::getMmInfo($mmUserId,'name');
return empty($mmUser) ? '' : $mmUser->name;
});
$grid->store_applet_img->image('',50);
$grid->cash_code_img->image('',50);
$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';
$path = empty($appletImg) ? $oldPath : config('filesystems.disks.oss.img_host').'/'.$appletImg;
$img = "<img src='$path' style='width:50px;' data-action='preview-img' style='max-width:50px;max-height:200px;cursor:pointer' class='img img-thumbnail'/>";
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';
$path = empty($appletImg) ? $oldPath : config('filesystems.disks.oss.img_host').'/'.$appletImg;
$img = "<img src='$path' style='width:50px;' data-action='preview-img' style='max-width:50px;max-height:200px;cursor:pointer' class='img img-thumbnail'/>";
return $img;
});
// ->image('',50);
$grid->sort->sortable();
$grid->is_rest->switch();
@ -148,7 +164,7 @@ class StoreController extends AdminController
$categoryList = CategoryModel::getArray([['parent_id','=',0]]);
// 用户
$userList = UserModel::getUserArray();
// 绑定店铺的用户
// 绑定店铺的用户
$userHas = StoreModel::pluck('admin_id')->toArray();
foreach($userList as $ku => $uv){
@ -182,7 +198,7 @@ class StoreController extends AdminController
->saving(function ($v) {
return $v == 1 ? 1 : 0;
});
$form->text('address');
$form->text('address')->required();
});
$form->column(6, function (Form $form) use($userList){
$form->image('business_license')->required()->uniqueName();
@ -226,7 +242,7 @@ class StoreController extends AdminController
}
if($form->isCreating() && !empty($id)){
$qrCode = new StoreQRCode();
$qrCode = new StoreQrCode();
// 生成小程序码 店铺
$sRes = $qrCode->SetStoreWeChatCode($id);

2
app/Admin/Repositories/StoreUserReport.php

@ -2,7 +2,7 @@
namespace App\Admin\Repositories;
use App\Models\Store as Model;
use App\Models\v3\Store as Model;
use Dcat\Admin\Grid\Model as GridModel;
use Dcat\Admin\Repositories\EloquentRepository;
use App\Models\StoreAccount as StoreAccountModel;

18
app/Models/v3/Banners.php

@ -25,10 +25,10 @@ class Banners extends Model
'market_ids'=>'array',
];
public static $_coverType = [1=>'图片', 2=>'视频'];
public static $_pathType = ['page'=>'page','webview'=>'webview','applet'=>'applet'];
public static $_type = [1=>'首页'];
public static $_status = ['禁用', '正常'];
public static $_COVER_TYPE = [1=>'图片', 2=>'视频'];
public static $_PATH_TYPE = ['page'=>'page','webview'=>'webview','applet'=>'applet'];
public static $_TYPE = [1=>'首页'];
public static $_STATUS = ['禁用', '正常'];
public function getCoverUrlAttribute($value)
{
@ -39,22 +39,22 @@ class Banners extends Model
public function getCoverTypeTextAttribute($value)
{
$value = $value ? $value : $this->cover_type;
return isset(self::$_coverType[$value]) ? self::$_coverType[$value] : '';
return isset(self::$_COVER_TYPE[$value]) ? self::$_COVER_TYPE[$value] : '';
}
public function getPathTypeTextAttribute($value)
{
$value = $value ? $value : $this->path_type;
return isset(self::$_pathType[$value]) ? self::$_pathType[$value] : '';
return isset(self::$_PATH_TYPE[$value]) ? self::$_PATH_TYPE[$value] : '';
}
public function getTypeTextAttribute($value)
{
$value = $value ? $value : $this->type;
return isset(self::$_type[$value]) ? self::$_type[$value] : '';
return isset(self::$_TYPE[$value]) ? self::$_TYPE[$value] : '';
}
public function getStatusTextAttribute($value)
{
$value = $value ? $value : $this->stauts;
return isset(self::$_status[$value]) ? self::$_status[$value] : '';
return isset(self::$_STATUS[$value]) ? self::$_STATUS[$value] : '';
}
/**
* 处理旧图片
@ -64,7 +64,7 @@ class Banners extends Model
public function imageUrl($value)
{
if(strripos($value,"http") === false){
return env('OSS_IMG_HOST').'/'.$value;
return config('filesystems.disks.oss.img_host').'/'.$value;
}else{
return $value;
}

2
app/Models/v3/Category.php

@ -73,7 +73,7 @@ class Category extends Model
public function imageUrl($value)
{
if(strripos($value,"http") === false){
return env('OSS_IMG_HOST').'/'.$value;
return config('filesystems.disks.oss.img_host').'/'.$value;
}else{
return $value;
}

10
app/Models/v3/Goods.php

@ -27,8 +27,8 @@ class Goods extends Model
'spec'=>'array',
];
public static $_onSale = ['否','是'];
public static $_isInfinite = ['关闭','开启'];
public static $_ONSALE = ['否','是'];
public static $_ISINFINITE = ['关闭','开启'];
public function getCoverImgUrlAttribute($value)
{
@ -38,12 +38,12 @@ class Goods extends Model
public function getOnSaleTextAttribute($value)
{
$value = $value ? $value : $this->on_sale;
return isset(self::$_onSale[$value]) ? self::$_onSale[$value] : '';
return isset(self::$_ONSALE[$value]) ? self::$_ONSALE[$value] : '';
}
public function getIsInfiniteTextAttribute($value)
{
$value = $value ? $value : $this->is_infinite;
return isset(self::$_isInfinite[$value]) ? self::$_isInfinite[$value] : '';
return isset(self::$_ISINFINITE[$value]) ? self::$_ISINFINITE[$value] : '';
}
public function ImageBanners(){
return $this->hasMany('\App\Models\v3\GoodsBanners','goods_id','id')->where('type',1);
@ -62,7 +62,7 @@ class Goods extends Model
public function imageUrl($value)
{
if(strripos($value,"http") === false){
return env('OSS_IMG_HOST').'/'.$value;
return config('filesystems.disks.oss.img_host').'/'.$value;
}else{
return $value;
}

18
app/Models/v3/GoodsActivity.php

@ -28,10 +28,10 @@ class GoodsActivity extends Model
'spec'=>'array',
];
public static $_type = ['flash_sale'=>'秒杀','group_buy'=>'团购','new_product'=>'新品'];
public static $_onSale = ['否','是'];
public static $_isInfinite = ['关闭','开启'];
public static $_canUseCoupon = ['否','是'];
public static $_TYPE = ['flash_sale'=>'秒杀','group_buy'=>'团购','new_product'=>'新品'];
public static $_ONSALE = ['否','是'];
public static $_ISINFINITE = ['关闭','开启'];
public static $_CAN_USE_COUPON = ['否','是'];
public function getCoverImgUrlAttribute($value)
{
@ -41,22 +41,22 @@ class GoodsActivity extends Model
public function getTypeTextAttribute($value)
{
$value = $value ? $value : $this->type;
return isset(self::$_isInfinite[$value]) ? self::$_isInfinite[$value] : '';
return isset(self::$_TYPE[$value]) ? self::$_TYPE[$value] : '';
}
public function getOnSaleTextAttribute($value)
{
$value = $value ? $value : $this->on_sale;
return isset(self::$_onSale[$value]) ? self::$_onSale[$value] : '';
return isset(self::$_ONSALE[$value]) ? self::$_ONSALE[$value] : '';
}
public function getIsInfiniteTextAttribute($value)
{
$value = $value ? $value : $this->is_infinite;
return isset(self::$_isInfinite[$value]) ? self::$_isInfinite[$value] : '';
return isset(self::$_ISINFINITE[$value]) ? self::$_ISINFINITE[$value] : '';
}
public function getCanUseCouponTextAttribute($value)
{
$value = $value ? $value : $this->can_use_coupon;
return isset(self::$_isInfinite[$value]) ? self::$_isInfinite[$value] : '';
return isset(self::$_CAN_USE_COUPON[$value]) ? self::$_CAN_USE_COUPON[$value] : '';
}
public function getExpireTimeTextAttribute()
{
@ -83,7 +83,7 @@ class GoodsActivity extends Model
public function imageUrl($value)
{
if(strripos($value,"http") === false){
return env('OSS_IMG_HOST').'/'.$value;
return config('filesystems.disks.oss.img_host').'/'.$value;
}else{
return $value;
}

10
app/Models/v3/GoodsNew.php

@ -27,8 +27,8 @@ class GoodsNew extends Model
'spec'=>'array',
];
public static $_onSale = ['否','是'];
public static $_isInfinite = ['关闭','开启'];
public static $_ONSALE = ['否','是'];
public static $_ISINFINITE = ['关闭','开启'];
public function getCoverImgUrlAttribute($value)
{
@ -38,12 +38,12 @@ class GoodsNew extends Model
public function getOnSaleTextAttribute($value)
{
$value = $value ? $value : $this->on_sale;
return isset(self::$_onSale[$value]) ? self::$_onSale[$value] : '';
return isset(self::$_ONSALE[$value]) ? self::$_ONSALE[$value] : '';
}
public function getIsInfiniteTextAttribute($value)
{
$value = $value ? $value : $this->is_infinite;
return isset(self::$_isInfinite[$value]) ? self::$_isInfinite[$value] : '';
return isset(self::$_ISINFINITE[$value]) ? self::$_ISINFINITE[$value] : '';
}
public function ImageNewBanners(){
return $this->hasMany('\App\Models\v3\GoodsNewBanners','goods_id','id')->where('type',1);
@ -62,7 +62,7 @@ class GoodsNew extends Model
public function imageUrl($value)
{
if(strripos($value,"http") === false){
return env('OSS_IMG_HOST').'/'.$value;
return config('filesystems.disks.oss.img_host').'/'.$value;
}else{
return $value;
}

57
app/Models/v3/ServicePersonnel.php

@ -12,5 +12,60 @@ class ServicePersonnel extends Model
use SoftDeletes;
protected $table = 'lanzu_service_personnel';
protected $dateFormat = 'U';
/* 查询记录数 limit */
protected $perPage = 10;
public static $_TYPE= [1=>'普通专员',2=>'市场经理'];
public static $_STATUS = [-1=>'禁用',0=>'禁用',1=>'启用',2=>'删除'];
protected $appends = [
'type_text',
'status_text'
];
public function getTypeTextAttribute($value)
{
$value = $value ? $value : $this->type;
return isset(self::$_TYPE[$value]) ? self::$_TYPE[$value] : '';
}
public function getStatusTextAttribute($value)
{
$value = $value ? $value : $this->status;
return isset(self::$_STATUS[$value]) ? self::$_STATUS[$value] : '';
}
/**
* 获取单条信息
* @param int $id
* @param string $field
* @return string
*/
public static function getInfo($id,$field = '*')
{
return self::select($field)->find($id);
}
/**
* 获取二级分类数组
* id为键,title为值
* @return array
*/
public static function getArray($where = [],$options = [])
{
$model = self::where('status',1)
->whereNull('deleted_at');
if(count($where) > 0){
$model->where($where);
}
$list = $model->pluck('id','name')->toArray();
if(!empty($options)){
$new = array_merge($options,$list);
return array_flip($new);
}else{
return array_flip($list);
}
}
}

4
app/Models/v3/Store.php

@ -11,7 +11,7 @@ class Store extends Model
use HasDateTimeFormatter;
use SoftDeletes;
protected $table = 'lanzu_store';
protected $table = 'lanzu_store_new';
protected $dateFormat = 'U';
/* 查询记录数 limit */
@ -107,7 +107,7 @@ class Store extends Model
public function imageUrl($value)
{
if(strripos($value,"http") === false){
return env('OSS_IMG_HOST').'/'.$value;
return config('filesystems.disks.oss.img_host').'/'.$value;
}else{
return $value;
}

10
app/Models/v3/StoreNew.php

@ -17,8 +17,8 @@ class StoreNew extends Model
/* 查询记录数 limit */
protected $perPage = 10;
public static $_isRest= ['否','是'];
public static $_isOpen = ['关闭','开启'];
public static $_ISREST= ['否','是'];
public static $_ISOPEN = ['关闭','开启'];
protected $appends = [
'logo_url',
@ -35,12 +35,12 @@ class StoreNew extends Model
public function getIsRestTextAttribute($value)
{
$value = $value ? $value : $this->is_rest;
return isset(self::$_onRest[$value]) ? self::$_onRest[$value] : '';
return isset(self::$_ISREST[$value]) ? self::$_ISREST[$value] : '';
}
public function getIsOpenTextAttribute($value)
{
$value = $value ? $value : $this->is_iopen;
return isset(self::$_isOpen[$value]) ? self::$_isOpen[$value] : '';
return isset(self::$_ISOPEN[$value]) ? self::$_ISOPEN[$value] : '';
}
/**
@ -107,7 +107,7 @@ class StoreNew extends Model
public function imageUrl($value)
{
if(strripos($value,"http") === false){
return env('OSS_IMG_HOST').'/'.$value;
return config('filesystems.disks.oss.img_host').'/'.$value;
}else{
return $value;
}

4
config/filesystems.php

@ -67,10 +67,12 @@ return [
'secret_key' => env('OSS_ACCESS_SECRET'),
'endpoint' => env('OSS_ENDPOINT'), // 使用 ssl 这里设置如: https://oss-cn-beijing.aliyuncs.com
'bucket' => env('OSS_BUCKET'),
'isCName' => env('OSS_IS_CNAME', false), // 如果 isCname 为 false,endpoint 应配置 oss 提供的域名如:`oss-cn-beijing.aliyuncs.com`,否则为自定义域名,,cname 或 cdn 请自行到阿里 oss 后台配置并绑定 bucket
'isCName' => env('OSS_IS_CNAME', false),
// 如果 isCname 为 false,endpoint 应配置 oss 提供的域名如:`oss-cn-beijing.aliyuncs.com`,否则为自定义域名,,cname 或 cdn 请自行到阿里 oss 后台配置并绑定 bucket
// 如果有更多的 bucket 需要切换,就添加所有bucket,默认的 bucket 填写到上面,不要加到 buckets 中
'buckets'=>[
],
'img_host' => env('OSS_IMG_HOST'),
],
's3' => [

Loading…
Cancel
Save