You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
shipin/app/adminapi/controller/v1/marketing/StoreCombination.php

244 lines
7.1 KiB

<?php
// +----------------------------------------------------------------------
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
// +----------------------------------------------------------------------
// | Copyright (c) 2016~2023 https://www.crmeb.com All rights reserved.
// +----------------------------------------------------------------------
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
// +----------------------------------------------------------------------
// | Author: CRMEB Team <admin@crmeb.com>
// +----------------------------------------------------------------------
namespace app\adminapi\controller\v1\marketing;
use app\adminapi\controller\AuthController;
use app\services\activity\combination\StoreCombinationServices;
use app\services\activity\combination\StorePinkServices;
use think\facade\App;
/**
* 拼团管理
* Class StoreCombination
* @package app\admin\controller\store
*/
class StoreCombination extends AuthController
{
/**
* StoreCombination constructor.
* @param App $app
* @param StoreCombinationServices $services
*/
public function __construct(App $app, StoreCombinationServices $services)
{
parent::__construct($app);
$this->services = $services;
}
/**
* 拼团列表
* @return mixed
*/
public function index()
{
$where = $this->request->getMore([
['start_status', ''],
['is_show', ''],
['store_name', '']
]);
$where['is_del'] = 0;
$list = $this->services->systemPage($where);
return app('json')->success($list);
}
/**
* 拼团统计
* @return mixed
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\ModelNotFoundException
* @throws \think\exception\DbException
*/
public function statistics()
{
/** @var StorePinkServices $storePinkServices */
$storePinkServices = app()->make(StorePinkServices::class);
$info = $storePinkServices->getStatistics();
return app('json')->success($info);
}
/**
* 详情
* @param $id
* @return mixed
*/
public function read($id)
{
$info = $info = $this->services->getInfo((int)$id);
return app('json')->success(compact('info'));
}
/**
* 保存新建的资源
* @param int $id
*/
public function save($id = 0)
{
$data = $this->request->postMore([
[['product_id', 'd'], 0],
[['title', 's'], ''],
[['info', 's'], ''],
[['unit_name', 's'], ''],
['images', []],
['section_time', []],
[['is_host', 'd'], 0],
[['is_show', 'd'], 0],
[['num', 'd'], 0],
[['temp_id', 'd'], 0],
[['effective_time', 'd'], 0],
[['people', 'd'], 0],
[['description', 's'], ''],
['attrs', []],
['items', []],
['num', 1],
['once_num', 1],
['sort', 0],
['copy', 0],
['virtual', 100],
['logistics', []],//物流方式
['freight', 1],//运费设置
['postage', 0],//邮费
['custom_form', ''],
['virtual_type', 0],
['is_commission', 0],
['head_commission', 0],
]);
$this->validate($data, \app\adminapi\validate\marketing\StoreCombinationValidate::class, 'save');
if ($data['section_time']) {
[$start_time, $end_time] = $data['section_time'];
if (strtotime($end_time) < time()) {
return app('json')->fail(400507);
}
}
$combination = [];
if ($id) {
$combination = $this->services->get((int)$id);
if (!$combination) {
return app('json')->fail(100026);
}
}
//限制编辑
if ($data['copy'] == 0 && $combination) {
if ($combination['stop_time'] < time()) {
return app('json')->fail(400508);
}
}
if ($data['num'] < $data['once_num']) {
return app('json')->fail(400500);
}
if ($data['copy'] == 1) {
$id = 0;
unset($data['copy']);
}
$this->services->saveData($id, $data);
return app('json')->success(100000);
}
/**
* 删除拼团
* @param $id
* @return mixed
*/
public function delete($id)
{
$this->services->update($id, ['is_del' => 1]);
return app('json')->success(100002);
}
/**
* 修改状态
* @param $id
* @param $status
* @return mixed
*/
public function set_status($id, $status)
{
$this->services->update($id, ['is_show' => $status]);
return app('json')->success($status == 0 ? 100014 : 100015);
}
/**
* 拼团列表
* @return mixed
*/
public function combine_list()
{
$where = $this->request->getMore([
['status', ''],
['data', '', '', 'time'],
]);
/** @var StorePinkServices $storePinkServices */
$storePinkServices = app()->make(StorePinkServices::class);
$list = $storePinkServices->systemPage($where);
return app('json')->success($list);
}
/**
* 拼团人列表
* @param $id
* @return mixed
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException
*/
public function order_pink($id)
{
/** @var StorePinkServices $storePinkServices */
$storePinkServices = app()->make(StorePinkServices::class);
$list = $storePinkServices->getPinkMember($id);
return app('json')->success(compact('list'));
}
/**
* 拼团统计
* @param $id
* @return mixed
*/
public function combinationStatistics($id)
{
$data = $this->services->combinationStatistics($id);
return app('json')->success($data);
}
/**
* 活动参与人
* @param $id
* @return mixed
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException
*/
public function combinationStatisticsList($id)
{
$where = $this->request->getMore([
['real_name', '', '', 'keyword'],
['status', '']
]);
$where['cid'] = $id;
/** @var StorePinkServices $storePinkServices */
$storePinkServices = app()->make(StorePinkServices::class);
$list = $storePinkServices->systemPage($where);
return app('json')->success($list);
}
/**
* 拼团订单
* @param $id
* @return mixed
*/
public function combinationStatisticsOrder($id)
{
$where = $this->request->getMore([
['real_name', ''],
['status', '']
]);
return app('json')->success($this->services->combinationStatisticsOrder($id, $where));
}
}