Browse Source

Merge branch 'qs_cs_data_marster_9_24' into qs_local_master_9_23

master
lanzu_qinsheng 5 years ago
parent
commit
5bd75ee89a
  1. 74
      app/Admin/Actions/Grid/v3/GoodsActivitySetting.php
  2. 120
      app/Admin/Common/Order.php
  3. 4
      app/Admin/Controllers/ImsCjdcOrderMainController.php
  4. 35
      app/Admin/Controllers/v3/GoodsActivityController.php
  5. 2
      app/Admin/Controllers/v3/GoodsController.php
  6. 52
      app/Admin/Controllers/v3/Salesman.php
  7. 2
      app/Admin/Extensions/MyDetailPage.php
  8. 108
      app/Admin/Forms/GoodsNewCopyForm.php
  9. 73
      app/Admin/Forms/GoodsNewImageForm.php
  10. 68
      app/Admin/Forms/v3/GoodsActivitySettingForm.php
  11. 83
      app/Admin/Metrics/Examples/Order/OrderData.php
  12. 67
      app/Admin/Repositories/v3/Salesman.php
  13. 2
      app/Admin/routes.php
  14. 111
      app/Http/Controllers/Salesman.php
  15. 12
      app/Libs/Redis/RedisKey.php
  16. 8
      app/Models/ImsCjdcOrderMain.php
  17. 13
      app/Models/v3/SalesmanData.php
  18. 1
      composer.json
  19. 3
      config/database.php
  20. 23
      resources/views/orderdetail.php
  21. 1
      routes/web.php

74
app/Admin/Actions/Grid/v3/GoodsActivitySetting.php

@ -0,0 +1,74 @@
<?php
namespace App\Admin\Actions\Grid\v3;
use Dcat\Admin\Actions\Response;
use Dcat\Admin\Traits\HasPermissions;
use Dcat\Admin\Tree\AbstractTool;
use Illuminate\Contracts\Auth\Authenticatable;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Http\Request;
class GoodsActivitySetting extends AbstractTool
{
/**
* @return string
*/
protected $title = '活动设置';
/**
* Handle the action request.
*
* @param Request $request
*
* @return Response
*/
public function handle(Request $request)
{
return $this->response()
->success('跳转到设置页面' )
->redirect('/activity_setting');
}
/**
* @return string|void
*/
// public function href()
// {
// return admin_url('category/tie');
// }
/**
* @return string|array|void
*/
public function confirm()
{
// return ['Confirm?', 'contents'];
}
// protected function actionScript()
// {
// return <<<JS
// function (data, target, action) {
// console.log('发起请求之前', data, target, action);
// // return false; 在这里return false可以终止执行后面的操作
// // 更改传递到接口的主键值
// action.options.key = 123;
// }
// JS;
// }
/**
* @param Model|Authenticatable|HasPermissions|null $user
*
* @return bool
*/
protected function authorize($user): bool
{
return true;
}
}

120
app/Admin/Common/Order.php

@ -0,0 +1,120 @@
<?php
namespace App\Admin\Common;
use App\Models\ImsCjdcOrderMain;
class Order
{
/**
* 查询结果
* @param $params
* @param $option
* @return int
*/
public static function getOrderData($params,$option)
{
//如果市场id存在
$buildData = self::buildData();
if ($params['market_id']) {//是否存在市场id
if (is_array($params['market_id'])) {
$buildData = $buildData->whereIn('lanzu_order_main.market_id',$params['market_id']);
} else {
$buildData = $buildData->where('lanzu_order_main.market_id',$params['market_id']);
}
}
if ($params['user_type']=='lanzu_cs'||$params['user_type']=='lanzu_biz'){//社区角色
if ($params['condition']==1){//获取时间范围
list($beginTime,$endTime) = self::beginAndEnd($option);
//>>2.构建数据模型
if ($params['user_ids']){
$buildData = $buildData->whereIn('lanzu_order_main.user_id',$params['user_ids']);
}else{
return 0;
}
$buildData = $buildData
->leftJoin('lanzu_user_relation_bind','lanzu_user_relation_bind.user_id','lanzu_order_main.user_id')
->whereRaw('lanzu_order_main.created_at > lanzu_user_relation_bind.created_at')
->whereBetween('lanzu_order_main.created_at',[$beginTime,$endTime]);
}
}elseif ($params['user_type']=='market_service'||$params['user_type']=='lanzu_mp'){//市场服务站角色 及服务商
if ($params['condition']==1){//获取时间范围
list($beginTime,$endTime) = self::beginAndEnd($option);
//>>2.构建数据模型
$buildData = $buildData->whereBetween('created_at',[$beginTime,$endTime]);
}
}
if ($params['data_type']=='count_user'){
$result = $buildData
->groupBy('lanzu_order_main.user_id')
->pluck('lanzu_order_main.user_id')
->toArray();
$result = count($result);
}elseif ($params['data_type']=='number'){
$result = $buildData->count();
}elseif ($params['data_type']=='amount'){
$result = $buildData->sum('money');
}
return $result;
}
/**
* 查询时间范围
* @param $option
* @return array
*/
public static function beginAndEnd($option)
{
switch ($option) {
case '1':
$beginTime = mktime(0, 0, 0, date('m'), date('d'), date('Y'));
$endTime = mktime(0, 0, 0, date('m'), date('d') + 1, date('Y')) - 1;
break;
case '-1':
$beginTime = mktime(0, 0, 0, date('m'), date('d') - 1, date('Y'));
$endTime = mktime(0, 0, 0, date('m'), date('d'), date('Y')) - 1;
break;
case '7':
$beginTime = mktime(0, 0, 0, date('m'), date('d') - 7, date('Y'));
$endTime = mktime(0, 0, 0, date('m'), date('d') + 1, date('Y')) - 1;
break;
case 'w':
$beginTime = mktime(0, 0, 0, date("m"), date("d") - date("w") + 1, date("Y"));
$endTime = mktime(23, 59, 59, date("m"), date("d") - date("w") + 7, date("Y"));
break;
case 'lw':
$beginTime = mktime(0, 0, 0, date("m"), date("d") - date("w") + 1 - 7, date("Y"));
$endTime = mktime(23, 59, 59, date("m"), date("d") - date("w") + 7 - 7, date("Y"));
break;
case '30':
$beginTime = mktime(0, 0, 0, date('m'), 1, date('Y'));
$endTime = mktime(23, 59, 59, date('m'), date('t'), date('Y'));
break;
case '-30':
$beginTime = mktime(0, 0, 0, date('m') - 1, 1, date('Y'));
$endTime = strtotime(date("Y-m-d H:i:s", mktime(23, 59, 59, date("m"), 0, date("Y"))));
break;
default:
$beginTime = mktime(0, 0, 0, date('m'), date('d'), date('Y'));
$endTime = mktime(0, 0, 0, date('m'), date('d') + 1, date('Y')) - 1;
break;
}
return [$beginTime,$endTime];
}
/**
* 构建数据模型
* @param $condition
* @return mixed
*/
public static function buildData()
{
$build = ImsCjdcOrderMain
::whereIn('state', [3, 4, 5, 10])
->where('type',1);
return $build;
}
}

4
app/Admin/Controllers/ImsCjdcOrderMainController.php

@ -54,7 +54,6 @@ class ImsCjdcOrderMainController extends AdminController
$grid->model()->where('market_id',$marketId); $grid->model()->where('market_id',$marketId);
} }
$grid->column('nick_name', '用户信息'); $grid->column('nick_name', '用户信息');
$grid->order_num; $grid->order_num;
$grid->state('订单状态') $grid->state('订单状态')
@ -68,6 +67,9 @@ class ImsCjdcOrderMainController extends AdminController
} }
return '<span style="color: #ceccce">未支付</span>'; return '<span style="color: #ceccce">未支付</span>';
}); });
$grid->column('shipping_type', '配送方式')
->using(config('order.shipping_type'))
->label([1 => '#FF9900', 2 => '#99CCFF', 3 => '#CCCCCC']);
$grid->created_at('下单时间')->display(function ($time) { $grid->created_at('下单时间')->display(function ($time) {
return date('Y-m-d H:i:s',$time); return date('Y-m-d H:i:s',$time);
}); });

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

@ -2,6 +2,7 @@
namespace App\Admin\Controllers\v3; namespace App\Admin\Controllers\v3;
use App\Admin\Actions\Grid\v3\GoodsActivitySetting;
use App\Admin\Repositories\v3\GoodsActivity; use App\Admin\Repositories\v3\GoodsActivity;
use Dcat\Admin\Form; use Dcat\Admin\Form;
use Dcat\Admin\Grid; use Dcat\Admin\Grid;
@ -14,7 +15,10 @@ use App\Models\v3\GoodsActivity as GoodsActivityModel;
use Dcat\Admin\Form\NestedForm; use Dcat\Admin\Form\NestedForm;
use App\Models\v3\GoodsCategory as GoodsCategoryModel; use App\Models\v3\GoodsCategory as GoodsCategoryModel;
use App\Admin\Common\Auth; use App\Admin\Common\Auth;
use App\Admin\Forms\v3\GoodsActivitySettingForm;
use Dcat\Admin\Admin; use Dcat\Admin\Admin;
use Dcat\Admin\Layout\Content;
use Dcat\Admin\Widgets\Card;
class GoodsActivityController extends AdminController class GoodsActivityController extends AdminController
{ {
@ -47,7 +51,7 @@ class GoodsActivityController extends AdminController
$grid->column('name')->editable(); $grid->column('name')->editable();
$grid->column('price')->editable(); $grid->column('price')->editable();
$grid->column('type_text'); $grid->column('type_text');
$grid->column('inventory')->editable();
$grid->column('market_id')->display(function($marketId){ $grid->column('market_id')->display(function($marketId){
$item = MarketModel::getMarketInfo($marketId,'name'); $item = MarketModel::getMarketInfo($marketId,'name');
return empty($item) ? '' : $item->name; return empty($item) ? '' : $item->name;
@ -60,10 +64,10 @@ class GoodsActivityController extends AdminController
$item = CategoryModel::getInfo($categoryId,'title'); $item = CategoryModel::getInfo($categoryId,'title');
return empty($item) ? '' : $item->title; return empty($item) ? '' : $item->title;
}); });
$grid->goods_category_id->display(function ($goodsCategoryId){
$item = GoodsCategoryModel::getInfo($goodsCategoryId,'title');
return empty($item) ? '' : $item->title;
});
// $grid->goods_category_id->display(function ($goodsCategoryId){
// $item = GoodsCategoryModel::getInfo($goodsCategoryId,'title');
// return empty($item) ? '' : $item->title;
// });
$grid->column('expire_time_text'); $grid->column('expire_time_text');
$grid->column('sort'); $grid->column('sort');
$grid->column('on_sale')->switch(); $grid->column('on_sale')->switch();
@ -84,6 +88,8 @@ class GoodsActivityController extends AdminController
}); });
// 每页10条 // 每页10条
$grid->paginate(10); $grid->paginate(10);
// $grid->tools([new GoodsActivitySetting()]);
}); });
} }
@ -181,7 +187,7 @@ class GoodsActivityController extends AdminController
$form->currency('vip_price')->required()->floatTwo()->symbol('¥'); $form->currency('vip_price')->required()->floatTwo()->symbol('¥');
$form->text('goods_unit')->help('如:斤,个,盒,500克,1000克,1500克等'); $form->text('goods_unit')->help('如:斤,个,盒,500克,1000克,1500克等');
$form->radio('is_infinite')->options(['关闭','开启'])->default(1); $form->radio('is_infinite')->options(['关闭','开启'])->default(1);
$form->number('inventory')->required()->attribute('min', 1)->default(1);
$form->number('inventory')->required()->attribute('min', 0)->default(1);
$form->number('restrict_num')->attribute('min', 0)->default(1)->help('0表示不限购,单笔订单限购数量'); $form->number('restrict_num')->attribute('min', 0)->default(1)->help('0表示不限购,单笔订单限购数量');
$form->number('start_num')->attribute('min', 1)->default(1); $form->number('start_num')->attribute('min', 1)->default(1);
$form->number('time_limit_days')->help('A时间段内限购'); $form->number('time_limit_days')->help('A时间段内限购');
@ -225,6 +231,15 @@ class GoodsActivityController extends AdminController
$spec = $form->input('spec'); $spec = $form->input('spec');
$detailsImgs = $form->input('details_imgs'); $detailsImgs = $form->input('details_imgs');
$goodsCategoryId = $form->input('goods_category_id'); $goodsCategoryId = $form->input('goods_category_id');
$inventory = $form->input('inventory');
// 规格
if(!empty($inventory)){
if(!is_numeric($inventory) || $inventory < 0){
return $form->error('库存必须为大于等于0的数字');
}
}
if(!empty($storeId)){ if(!empty($storeId)){
// 商品所属市场,根据店铺查询市场 // 商品所属市场,根据店铺查询市场
$info = StoreModel::getStoreInfo($storeId,'market_id'); $info = StoreModel::getStoreInfo($storeId,'market_id');
@ -272,4 +287,12 @@ class GoodsActivityController extends AdminController
}); });
}); });
} }
public function SettingForm(Content $content)
{
return $content
->title('活动设置')
->body(new Card(new GoodsActivitySettingForm()));
}
} }

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

@ -219,7 +219,7 @@ class GoodsController extends AdminController
$form->currency('vip_price')->required()->symbol('¥'); $form->currency('vip_price')->required()->symbol('¥');
$form->text('goods_unit')->help('如:斤,个,盒,500克,1000克,1500克等'); $form->text('goods_unit')->help('如:斤,个,盒,500克,1000克,1500克等');
$form->radio('is_infinite')->options(['关闭','开启'])->default(1); $form->radio('is_infinite')->options(['关闭','开启'])->default(1);
$form->number('inventory')->required()->attribute('min', 1)->default(1);
$form->number('inventory')->required()->attribute('min', 0)->default(1);
$form->number('restrict_num')->attribute('min', 0)->default(0)->help('0表示不限购'); $form->number('restrict_num')->attribute('min', 0)->default(0)->help('0表示不限购');
$form->number('start_num')->attribute('min', 1)->default(1); $form->number('start_num')->attribute('min', 1)->default(1);
}); });

52
app/Admin/Controllers/v3/Salesman.php

@ -0,0 +1,52 @@
<?php
namespace App\Admin\Controllers\v3;
use App\Models\v3\SalesmanData;
use Dcat\Admin\Controllers\AdminController;
use Dcat\Admin\Grid;
class Salesman extends AdminController
{
protected function grid()
{
if (false){
return Grid::make(new SalesmanData(),function (Grid $grid){
$grid->paginate(10);
$grid->column('person_id','懒ID');
$grid->column('nick_name','拓展员');
$grid->column('total','社区总数');
$grid->column('t_num','今日订单数');
$grid->column('t_amount','今日成交额');
$grid->column('y_num','昨日订单数');
$grid->column('y_amount','昨日成交额');
$grid->column('w_num','本周订单数');
$grid->column('w_amount','本周成交额');
$grid->column('m_num','本月订单数');
$grid->column('m_amount','本月成交额');
$grid->disableActions();
$grid->filter(function (Grid\Filter $filter){
$filter->equal('person_id','拓展员懒ID');
});
});
}else{
return Grid::make(new \App\Admin\Repositories\v3\Salesman(),function (Grid $grid){
$grid->paginate(10);
$grid->column('person_id','懒ID');
$grid->column('nick_name','拓展员');
$grid->column('total','社区总数');
$grid->column('t_num','今日订单数');
$grid->column('t_amount','今日成交额');
$grid->disableActions();
$grid->filter(function (Grid\Filter $filter){
$filter->equal('person_id','拓展员懒ID');
});
});
}
}
}

2
app/Admin/Extensions/MyDetailPage.php

@ -40,6 +40,7 @@ class MyDetailPage extends LazyRenderable
el:"#detail", el:"#detail",
data:{ data:{
dialogFormVisible: false, dialogFormVisible: false,
market_name: "{$order['market_name']}",
order_num: "{$order['order_num']}", order_num: "{$order['order_num']}",
name: "{$order['name']}", name: "{$order['name']}",
state: "{$order['state']}", state: "{$order['state']}",
@ -47,6 +48,7 @@ class MyDetailPage extends LazyRenderable
updated_at: "{$order['updated_at']}", updated_at: "{$order['updated_at']}",
pay_type: "{$order['pay_type']}", pay_type: "{$order['pay_type']}",
shipping_type: "{$order['shipping_type']}", shipping_type: "{$order['shipping_type']}",
shipping_type_num: "{$order['shipping_type_num']}",
tel: "{$order['tel']}", tel: "{$order['tel']}",
delivery_time_note: "{$order['delivery_time_note']}", delivery_time_note: "{$order['delivery_time_note']}",
refuse_refund_note: "{$order['refuse_refund_note']}", refuse_refund_note: "{$order['refuse_refund_note']}",

108
app/Admin/Forms/GoodsNewCopyForm.php

@ -1,108 +0,0 @@
<?php
namespace App\Admin\Forms;
use Dcat\Admin\Widgets\Form;
use Symfony\Component\HttpFoundation\Response;
use App\Models\v3\StoreNew as StoreModel;
use App\Models\v3\GoodsNew as GoodsModel;
use App\Models\v3\GoodsNewBanners as GoodsBannerModel;
use Illuminate\Support\Facades\DB;
class GoodsNewCopyForm extends Form
{
/**
* Handle the form request.
*
* @param array $input
*
* @return Response
*/
public function handle(array $input)
{
// 获取外部传递参数
$goodsId = $input['goods_id'];
$storeIds= $input['store_ids'];
$goods = GoodsModel::find($goodsId);
$goodsBanners = GoodsBannerModel::where('goods_id',$goodsId)->get();
$markets = StoreModel::whereIn('id',$storeIds)->pluck('market_id','id');
foreach($storeIds as $key =>$value){
$storeId = $value;
$model = new GoodsModel();
$model->store_id = $storeId;
$model->market_id = $markets[$storeId];
$model->category_id = $goods->category_id;
$model->name = $goods->name;
$model->cover_img = $goods->cover_img;
$model->goods_unit = $goods->goods_unit;
$model->tags = $goods->tags;
$model->spec = $goods->spec;
$model->details_imgs = $goods->details_imgs;
$model->content = $goods->content;
$model->details = $goods->details;
$model->price = $goods->price;
$model->original_price = $goods->original_price;
$model->vip_price = $goods->vip_price;
$model->start_num = $goods->start_num;
$model->restrict_num = $goods->restrict_num;
$model->is_infinite = $goods->is_infinite;
$model->inventory = $goods->inventory;
$model->on_sale = $goods->on_sale;
$model->sort = $goods->sort;
$model->remark = $goods->remark;
if($model->save() && !empty($goodsBanners)){
$goodsId = $model->getKey();
$banners = [];
foreach($goodsBanners as $kb => $vb){
$banners[] = [
'goods_id' => $goodsId,
'type' => $vb->type,
'path' => $vb->path,
'sort' => $vb->sort,
'created_at' => time(),
'updated_at' => time(),
];
GoodsBannerModel::insert($banners);
}
}else{
return $this->error('修改失败');
};
}
return $this->error('修改成功');
}
/**
* Build a form here.
*/
public function form()
{
$id = $this->getKey();
$goods = GoodsModel::select('name')->find($id);
$this->hidden('goods_id')->value($id);
$name = empty($goods->name)?'':$goods->name;
$this->display('name')->value($name);
$stores = StoreModel::getStoreArray();
$this->multipleSelect('store_ids','选择店铺')->required()->options($stores)->help('选择店铺,将当前商品复制到所选店铺。注意选择重复店铺问题!!!');
}
/**
* The data of the form.
*
* @return array
*/
public function default()
{
return [];
}
}

73
app/Admin/Forms/GoodsNewImageForm.php

@ -1,73 +0,0 @@
<?php
namespace App\Admin\Forms;
use App\Models\v3\GoodsBanners;
use Dcat\Admin\Widgets\Form;
use Symfony\Component\HttpFoundation\Response;
use App\Models\v3\GoodsNew as GoodsModel;
use App\Models\v3\GoodsNewBanners as GoodsBannerModel;
use Illuminate\Support\Facades\DB;
class GoodsNewImageForm extends Form
{
/**
* Handle the form request.
*
* @param array $input
*
* @return Response
*/
public function handle(array $input)
{
// 获取外部传递参数
$goodsId = $input['goods_id'];
$coverImg= $input['cover_img'];
$bannerImg= $input['img_banner'];
if($goodsId > 0 && !empty($coverImg)){
$data = ['cover_img' => $coverImg];
GoodsModel::where('id',$goodsId)->update($data);
}
if($goodsId > 0 && !empty($bannerImg)){
$banner = GoodsBannerModel::where('goods_id',$goodsId)->first();
if(empty($banner)){
$banner = new GoodsBanners();
$banner->goods_id = $goodsId;
$banner->type = 1;
$banner->created_at = time();
}
$banner->path = $bannerImg;
$banner->updated_at = time();
$banner->save();
}
return $this->error('修改成功');
}
/**
* Build a form here.
*/
public function form()
{
$id = $this->getKey();
$goods = GoodsModel::select('name')->find($id);
$goodName = empty($goods->name)?'':$goods->name;
$this->hidden('goods_id')->value($id);
$this->display('name','商品名称')->value($goodName);
$this->image('cover_img','封面图')->url('ops/files');
$this->image('img_banner','轮播图')->url('ops/files');
}
/**
* The data of the form.
*
* @return array
*/
public function default()
{
return [];
}
}

68
app/Admin/Forms/v3/GoodsActivitySettingForm.php

@ -0,0 +1,68 @@
<?php
namespace App\Admin\Forms\v3;
use Dcat\Admin\Widgets\Form;
use Symfony\Component\HttpFoundation\Response;
use Illuminate\Support\Facades\Redis;
use App\Libs\Redis\RedisKey;
class GoodsActivitySettingForm extends Form
{
/**
* Handle the form request.
*
* @param array $input
*
* @return Response
*/
public function handle(array $input)
{
// 获取外部传递参数
$flashSale = $input['flash_sale'];
$groupBuy= $input['group_buy'];
$newProduct= $input['new_product'];
$data = [
'flash_sale' => $flashSale,
'group_buy' => $groupBuy,
'new_product' => $newProduct,
];
$res = Redis::hmset(RedisKey::ACTIVITY_TYPE_LIMIT_NUMS , $data);
if($res){
return $this->success('修改成功','/goods_activity');
}else{
return $this->error('修改失败');
}
}
/**
* Build a form here.
*/
public function form()
{
$data = Redis::hgetall(RedisKey::ACTIVITY_TYPE_LIMIT_NUMS);
$flashSale = isset($data['flash_sale'])?$data['flash_sale']:0;
$groupBuy= isset($data['group_buy'])?$data['group_buy']:0;
$newProduct= isset($data['new_product'])?$data['new_product']:0;
$this->display(RedisKey::ACTIVITY_TYPE_LIMIT_NUMS , '设置')->value('同一活动类型的商品,单笔订单可购买商品种数');
$this->number('flash_sale','秒杀')->attribute('min', 0)->default(1)->value($flashSale);
$this->number('group_buy','团购')->attribute('min', 0)->default(1)->value($groupBuy);
$this->number('new_product','新品')->attribute('min', 0)->default(1)->value($newProduct);
}
/**
* The data of the form.
*
* @return array
*/
public function default()
{
return [];
}
}

83
app/Admin/Metrics/Examples/Order/OrderData.php

@ -3,6 +3,7 @@
namespace App\Admin\Metrics\Examples\Order; namespace App\Admin\Metrics\Examples\Order;
use App\Admin\Common\Order;
use App\Models\ImsCjdcOrder; use App\Models\ImsCjdcOrder;
use App\Models\ImsCjdcOrderMain; use App\Models\ImsCjdcOrderMain;
use Dcat\Admin\Widgets\Metrics\Card; use Dcat\Admin\Widgets\Metrics\Card;
@ -50,48 +51,7 @@ class OrderData extends Card
*/ */
public function getOrderData($params,$option) public function getOrderData($params,$option)
{ {
//如果市场id存在
$buildData = $this->buildData();
if ($params['market_id']) {//是否存在市场id
if (is_array($params['market_id'])) {
$buildData = $buildData->whereIn('lanzu_order_main.market_id',$params['market_id']);
} else {
$buildData = $buildData->where('lanzu_order_main.market_id',$params['market_id']);
}
}
if ($params['user_type']=='lanzu_cs'||$params['user_type']=='lanzu_biz'){//社区角色
if ($params['condition']==1){//获取时间范围
list($beginTime,$endTime) = $this->beginAndEnd($option);
//>>2.构建数据模型
if ($params['user_ids']){
$buildData = $buildData->whereIn('lanzu_order_main.user_id',$params['user_ids']);
}else{
return 0;
}
$buildData = $buildData
->leftJoin('lanzu_user_relation_bind','lanzu_user_relation_bind.user_id','lanzu_order_main.user_id')
->whereRaw('lanzu_order_main.created_at > lanzu_user_relation_bind.created_at')
->whereBetween('lanzu_order_main.created_at',[$beginTime,$endTime]);
}
}elseif ($params['user_type']=='market_service'||$params['user_type']=='lanzu_mp'){//市场服务站角色 及服务商
if ($params['condition']==1){//获取时间范围
list($beginTime,$endTime) = $this->beginAndEnd($option);
//>>2.构建数据模型
$buildData = $buildData->whereBetween('created_at',[$beginTime,$endTime]);
}
}
if ($params['data_type']=='count_user'){
$result = $buildData
->groupBy('lanzu_order_main.user_id')
->pluck('lanzu_order_main.user_id')
->toArray();
$result = count($result);
}elseif ($params['data_type']=='number'){
$result = $buildData->count();
}elseif ($params['data_type']=='amount'){
$result = $buildData->sum('money');
}
$result = Order::getOrderData($params,$option);
return $result; return $result;
} }
@ -102,40 +62,7 @@ class OrderData extends Card
*/ */
public function beginAndEnd($option) public function beginAndEnd($option)
{ {
switch ($option) {
case '1':
$beginTime = mktime(0, 0, 0, date('m'), date('d'), date('Y'));
$endTime = mktime(0, 0, 0, date('m'), date('d') + 1, date('Y')) - 1;
break;
case '-1':
$beginTime = mktime(0, 0, 0, date('m'), date('d') - 1, date('Y'));
$endTime = mktime(0, 0, 0, date('m'), date('d'), date('Y')) - 1;
break;
case '7':
$beginTime = mktime(0, 0, 0, date('m'), date('d') - 7, date('Y'));
$endTime = mktime(0, 0, 0, date('m'), date('d') + 1, date('Y')) - 1;
break;
case 'w':
$beginTime = mktime(0, 0, 0, date("m"), date("d") - date("w") + 1, date("Y"));
$endTime = mktime(23, 59, 59, date("m"), date("d") - date("w") + 7, date("Y"));
break;
case 'lw':
$beginTime = mktime(0, 0, 0, date("m"), date("d") - date("w") + 1 - 7, date("Y"));
$endTime = mktime(23, 59, 59, date("m"), date("d") - date("w") + 7 - 7, date("Y"));
break;
case '30':
$beginTime = mktime(0, 0, 0, date('m'), 1, date('Y'));
$endTime = mktime(23, 59, 59, date('m'), date('t'), date('Y'));
break;
case '-30':
$beginTime = mktime(0, 0, 0, date('m') - 1, 1, date('Y'));
$endTime = strtotime(date("Y-m-d H:i:s", mktime(23, 59, 59, date("m"), 0, date("Y"))));
break;
default:
$beginTime = mktime(0, 0, 0, date('m'), date('d'), date('Y'));
$endTime = mktime(0, 0, 0, date('m'), date('d') + 1, date('Y')) - 1;
break;
}
list($beginTime,$endTime) = Order::beginAndEnd($option);
return [$beginTime,$endTime]; return [$beginTime,$endTime];
} }
@ -146,9 +73,7 @@ class OrderData extends Card
*/ */
public function buildData() public function buildData()
{ {
$build = ImsCjdcOrderMain
::whereIn('state', [3, 4, 5, 10])
->where('type',1);
$build = Order::buildData();
return $build; return $build;
} }

67
app/Admin/Repositories/v3/Salesman.php

@ -0,0 +1,67 @@
<?php
namespace App\Admin\Repositories\v3;
use App\Admin\Common\Order;
use App\Models\LanzuCsInfo;
use App\Models\v3\SalesmanData;
use Dcat\Admin\Grid;
use Dcat\Admin\Repositories\EloquentRepository;
use Illuminate\Support\Facades\DB;
class Salesman extends EloquentRepository
{
protected $eloquentClass = \App\Models\v3\User::class;
public function get(Grid\Model $model)
{
$userId = $model->filter()->input('user_id');
$build = LanzuCsInfo::select(
DB::raw('count("lanzu_cs_info.person_id") as total'),
DB::raw('group_concat(lanzu_cs_info.admin_user_id) as admin_user_id'),
DB::raw('group_concat(rb.user_id) as user_id'),
'lanzu_cs_info.person_id','lanzu_user.nick_name')
->groupBy('lanzu_cs_info.person_id')
->leftJoin('lanzu_user','lanzu_user.id','lanzu_cs_info.person_id')
->leftJoin('lanzu_user_relation_bind as rb','rb.source_id','lanzu_cs_info.admin_user_id')
->where('lanzu_cs_info.person_id','>',0);
if ($userId){
$build = $build->where('lanzu_user.id',$userId);
}
//>>1.获取业务员
$rows = $build->paginate(10)->toArray();
//>>2.获取业务员下的所有社区的绑定用户
foreach ($rows['data'] as &$value){
$value['admin_user_id'] = array_unique(explode(',',$value['admin_user_id']));
$value['total'] = count($value['admin_user_id']);
$uid = explode(',',$value['user_id']);
$value['t_num'] = Order::getOrderData([
'user_type'=>'lanzu_biz',//谁取数据 user_type 用户类型
'data_type'=>'number',//取什么数据 data_type 数据类型
'market_id'=>'',//取哪个市场数据
'condition'=>1,//取数据维度 condition
'user_ids'=>$uid?$uid:null
],1);//今日订单数
$value['t_amount'] = Order::getOrderData([
'user_type'=>'lanzu_biz',//谁取数据 user_type 用户类型
'data_type'=>'amount',//取什么数据 data_type 数据类型
'market_id'=>'',//取哪个市场数据
'condition'=>1,//取数据维度 condition
'user_ids'=>$uid?$uid:null
],1);//今日订单金额
$value['m_amount'] = Order::getOrderData([
'user_type'=>'lanzu_biz',//谁取数据 user_type 用户类型
'data_type'=>'amount',//取什么数据 data_type 数据类型
'market_id'=>'',//取哪个市场数据
'condition'=>1,//取数据维度 condition
'user_ids'=>$uid?$uid:null
],'30');//本月订单金额
unset($value['admin_user_id']);
unset($value['user_id']);
}
return $model->makePaginator($rows['total'],$rows['data']); // 传入总记录数// 传入数据二维数组
}
}

2
app/Admin/routes.php

@ -16,6 +16,7 @@ Route::group([
//$router->resource('/', 'LanzuCsInfoController'); //$router->resource('/', 'LanzuCsInfoController');
$router->resource('/speaker', 'LanzuServiceSpeakerController'); $router->resource('/speaker', 'LanzuServiceSpeakerController');
$router->resource('/mp', 'LanzuMpInfoController'); $router->resource('/mp', 'LanzuMpInfoController');
$router->resource('/salesman', 'v3\Salesman');
$router->any('/mp_data', 'LanzuMpInfoController@showData'); $router->any('/mp_data', 'LanzuMpInfoController@showData');
$router->resource('/mm', 'LanzuMmInfoController'); $router->resource('/mm', 'LanzuMmInfoController');
$router->resource('/market', 'ImsCjdcMarketController'); $router->resource('/market', 'ImsCjdcMarketController');
@ -59,6 +60,7 @@ Route::group([
$router->resource('/goods', 'v3\GoodsController'); $router->resource('/goods', 'v3\GoodsController');
$router->resource('/goods_activity', 'v3\GoodsActivityController'); $router->resource('/goods_activity', 'v3\GoodsActivityController');
$router->resource('/goods_new', 'v3\GoodsNewController'); $router->resource('/goods_new', 'v3\GoodsNewController');
$router->get('/activity_setting', 'v3\GoodsActivityController@SettingForm');
// 平台管理 // 平台管理
$router->resource('/banners', 'v3\BannersController'); $router->resource('/banners', 'v3\BannersController');

111
app/Http/Controllers/Salesman.php

@ -0,0 +1,111 @@
<?php
namespace App\Http\Controllers;
use App\Admin\Common\Order;
use App\Models\LanzuCsInfo;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log;
class Salesman extends \Illuminate\Routing\Controller
{
public function addData()
{
set_time_limit(0);
$rows = LanzuCsInfo::select(
DB::raw('count("lanzu_cs_info.person_id") as total'),
DB::raw('group_concat(lanzu_cs_info.admin_user_id) as admin_user_id'),
DB::raw('group_concat(rb.user_id) as user_id'),
'lanzu_cs_info.person_id','lanzu_user.nick_name')
->groupBy('lanzu_cs_info.person_id')
->leftJoin('lanzu_user','lanzu_user.id','lanzu_cs_info.person_id')
->leftJoin('lanzu_user_relation_bind as rb','rb.source_id','lanzu_cs_info.admin_user_id')
->where('lanzu_cs_info.person_id','>',0)->get()->toArray();
foreach ($rows as &$value){
$value['admin_user_id'] = array_unique(explode(',',$value['admin_user_id']));
$value['total'] = count($value['admin_user_id']);
$uid = explode(',',$value['user_id']);
$value['t_num'] = Order::getOrderData([
'user_type'=>'lanzu_biz',//谁取数据 user_type 用户类型
'data_type'=>'number',//取什么数据 data_type 数据类型
'market_id'=>'',//取哪个市场数据
'condition'=>1,//取数据维度 condition
'user_ids'=>$uid?$uid:null
],1);//今日订单数
$value['t_amount'] = Order::getOrderData([
'user_type'=>'lanzu_biz',//谁取数据 user_type 用户类型
'data_type'=>'amount',//取什么数据 data_type 数据类型
'market_id'=>'',//取哪个市场数据
'condition'=>1,//取数据维度 condition
'user_ids'=>$uid?$uid:null
],1);//今日订单金额
$value['y_num'] = Order::getOrderData([
'user_type'=>'lanzu_biz',//谁取数据 user_type 用户类型
'data_type'=>'number',//取什么数据 data_type 数据类型
'market_id'=>'',//取哪个市场数据
'condition'=>1,//取数据维度 condition
'user_ids'=>$uid?$uid:null
],-1);//昨日订单数
$value['y_amount'] = Order::getOrderData([
'user_type'=>'lanzu_biz',//谁取数据 user_type 用户类型
'data_type'=>'amount',//取什么数据 data_type 数据类型
'market_id'=>'',//取哪个市场数据
'condition'=>1,//取数据维度 condition
'user_ids'=>$uid?$uid:null
],-1);//昨日订单金额
$value['w_num'] = Order::getOrderData([
'user_type'=>'lanzu_biz',//谁取数据 user_type 用户类型
'data_type'=>'number',//取什么数据 data_type 数据类型
'market_id'=>'',//取哪个市场数据
'condition'=>1,//取数据维度 condition
'user_ids'=>$uid?$uid:null
],'w');//本周订单 数
$value['w_amount'] = Order::getOrderData([
'user_type'=>'lanzu_biz',//谁取数据 user_type 用户类型
'data_type'=>'amount',//取什么数据 data_type 数据类型
'market_id'=>'',//取哪个市场数据
'condition'=>1,//取数据维度 condition
'user_ids'=>$uid?$uid:null
],'w');//本周订单金额
$value['m_num'] = Order::getOrderData([
'user_type'=>'lanzu_biz',//谁取数据 user_type 用户类型
'data_type'=>'number',//取什么数据 data_type 数据类型
'market_id'=>'',//取哪个市场数据
'condition'=>1,//取数据维度 condition
'user_ids'=>$uid?$uid:null
],'30');//本月订单数
$value['m_amount'] = Order::getOrderData([
'user_type'=>'lanzu_biz',//谁取数据 user_type 用户类型
'data_type'=>'amount',//取什么数据 data_type 数据类型
'market_id'=>'',//取哪个市场数据
'condition'=>1,//取数据维度 condition
'user_ids'=>$uid?$uid:null
],'30');//本月订单金额
unset($value['admin_user_id']);
unset($value['user_id']);
}
DB::beginTransaction();
try {
DB::table('lanzu_salesman_data')->delete();
$result = DB::table('lanzu_salesman_data')->insert($rows);
if ($result){
echo 'success';
}else{
echo 'fail';
}
DB::commit();
}catch (\Exception $e){
Log::debug('社区拓展员数据添加失败',[$e->getMessage()]);
DB::rollBack();
}
}
}

12
app/Libs/Redis/RedisKey.php

@ -0,0 +1,12 @@
<?php
namespace App\Libs\Redis;
/**
* @Constants
*/
class RedisKey
{
const ACTIVITY_TYPE_LIMIT_NUMS = 'activity_type_limit_nums';
}

8
app/Models/ImsCjdcOrderMain.php

@ -4,7 +4,7 @@ namespace App\Models;
use App\Admin\Common\Rpc; use App\Admin\Common\Rpc;
use Dcat\Admin\Traits\HasDateTimeFormatter; use Dcat\Admin\Traits\HasDateTimeFormatter;
use App\Models\v3\Market as MarketModel;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
@ -59,9 +59,15 @@ class ImsCjdcOrderMain extends Model
$order['created_at'] = date('Y-m-d H:i:s', $order['created_at']); $order['created_at'] = date('Y-m-d H:i:s', $order['created_at']);
$order['updated_at'] = $order['updated_at'] ? date('Y-m-d H:i:s', $order['updated_at']) : null; $order['updated_at'] = $order['updated_at'] ? date('Y-m-d H:i:s', $order['updated_at']) : null;
$order['pay_type'] = config('order.pay_type')[$order['pay_type']]; $order['pay_type'] = config('order.pay_type')[$order['pay_type']];
$order['shipping_type_num'] = $order['shipping_type'];
$order['shipping_type'] = config('order.shipping_type')[$order['shipping_type']]; $order['shipping_type'] = config('order.shipping_type')[$order['shipping_type']];
$order['horseman_name'] = $order['shipping_name'] ?? LanzuServiceHorseman::getName($order['horseman_id']); $order['horseman_name'] = $order['shipping_name'] ?? LanzuServiceHorseman::getName($order['horseman_id']);
// 获取市场
$marketId = $order['market_id']?$order['market_id']:0;
$market = MarketModel::getMarketInfo($marketId,'name');
$order['market_name'] = $market?$market['name']:'';
//获取市场经纬度 //获取市场经纬度
//$market = LanzuMarket::where('id',$order['market_id'])->first()->toArray(); //$market = LanzuMarket::where('id',$order['market_id'])->first()->toArray();
//$order['distance'] = Rpc::getDistance($market['lng'],$market['lat'],$order['lng'],$order['lat'])['result']; //$order['distance'] = Rpc::getDistance($market['lng'],$market['lat'],$order['lng'],$order['lat'])['result'];

13
app/Models/v3/SalesmanData.php

@ -0,0 +1,13 @@
<?php
namespace App\Models\v3;
use Illuminate\Database\Eloquent\Model;
class SalesmanData extends Model
{
protected $table = 'lanzu_salesman_data';
protected $dateFormat = 'U';
}

1
composer.json

@ -10,6 +10,7 @@
"require": { "require": {
"php": "^7.2.5", "php": "^7.2.5",
"alibabacloud/client": "^1.5", "alibabacloud/client": "^1.5",
"dcat/easy-excel": "^1.0",
"dcat/laravel-admin": "^1.6", "dcat/laravel-admin": "^1.6",
"fideloper/proxy": "^4.2", "fideloper/proxy": "^4.2",
"fruitcake/laravel-cors": "^1.0", "fruitcake/laravel-cors": "^1.0",

3
config/database.php

@ -143,7 +143,8 @@ return [
'options' => [ 'options' => [
'cluster' => env('REDIS_CLUSTER', 'redis'), 'cluster' => env('REDIS_CLUSTER', 'redis'),
'prefix' => env('REDIS_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_database_'),
// 'prefix' => env('REDIS_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_database_'),
'prefix' => env('REDIS_PREFIX', ''),
], ],
'default' => [ 'default' => [

23
resources/views/orderdetail.php

@ -11,21 +11,28 @@
<td colspan="5">联系电话:{{tel}}</td> <td colspan="5">联系电话:{{tel}}</td>
</tr> </tr>
<tr> <tr>
<td class="text-nowrap" scope="row">收货地址:{{address}}</td>
<td class="text-nowrap" scope="row" v-if="shipping_type_num == 1 || shipping_type_num == 2">收货地址:{{address}}</td>
<td class="text-nowrap" scope="row" v-if="shipping_type_num == 3">自提地址:{{market_name}}</td>
<td colspan="5">更新时间:{{updated_at}}</td> <td colspan="5">更新时间:{{updated_at}}</td>
</tr> </tr>
<tr>
<td class="text-nowrap" scope="row" v-if="shipping_type_num == 1 || shipping_type_num == 2">预约送达时间:{{delivery_time_note}}</td>
<td class="text-nowrap" scope="col" v-if="shipping_type_num == 1 || shipping_type_num == 2">配送员: {{horseman_name}}</td>
</tr>
<tr> <tr>
<td class="text-nowrap" scope="row">预约送达时间:{{delivery_time_note}}</td>
<td class="text-nowrap" scope="col">配送员: {{horseman_name}}</td>
<td class="text-nowrap" scope="row" v-if="shipping_type_num == 1 || shipping_type_num == 2">配送距离:{{distance}}</td>
<td colspan="5" v-if="shipping_type_num == 1 || shipping_type_num == 2">配送费:{{delivery_money}} </td>
</tr> </tr>
<tr> <tr>
<td class="text-nowrap" scope="row">配送距离:{{distance}}</td>
<td colspan="5">配送费:{{delivery_money}} </td>
<td class="text-nowrap" scope="row">配送方式:{{shipping_type}}</td>
<td class="text-nowrap" scope="col"></td>
</tr> </tr>
<tr> <tr>
<td class="text-nowrap" scope="col" v-if="note">订单备注:{{note}}</td> <td class="text-nowrap" scope="col" v-if="note">订单备注:{{note}}</td>
<td class="text-nowrap" scope="col" v-if="refuse_refund_note">拒绝退款原因:{{refuse_refund_note}}</td> <td class="text-nowrap" scope="col" v-if="refuse_refund_note">拒绝退款原因:{{refuse_refund_note}}</td>
</tr> </tr>
<tr> <tr>
<td class="text-nowrap" scope="col" v-if="total_refund_note">退款原因:{{total_refund_note}}</td> <td class="text-nowrap" scope="col" v-if="total_refund_note">退款原因:{{total_refund_note}}</td>
@ -61,8 +68,10 @@
总金额: {{total_money}} 总金额: {{total_money}}
&ensp;&ensp; &ensp;&ensp;
优惠金额: <span style="color: red">-{{coupon_money}}</span> 优惠金额: <span style="color: red">-{{coupon_money}}</span>
&ensp;&ensp; &ensp;&ensp;
配送费: <span style="color: green">+{{delivery_money}}</span>
<span style="color: green" v-if="shipping_type_num == 1 || shipping_type_num == 2"> 配送费: +{{delivery_money}} </span>
&ensp;&ensp; &ensp;&ensp;
增值服务费: <span style="color: green">+{{services_money?services_money:0}}</span> 增值服务费: <span style="color: green">+{{services_money?services_money:0}}</span>
&ensp;&ensp; &ensp;&ensp;

1
routes/web.php

@ -19,3 +19,4 @@ Route::get('/', function(){
Route::get('/test', 'TestController@Test'); Route::get('/test', 'TestController@Test');
Route::any('/rpc', 'TestController@testRpc'); Route::any('/rpc', 'TestController@testRpc');
Route::any('/add', 'Salesman@addData');
Loading…
Cancel
Save