|
|
<?php
|
|
|
|
|
|
namespace app\adminapi\controller\v1;
|
|
|
|
|
|
use app\adminapi\ApiController;
|
|
|
use think\facade\Db;
|
|
|
|
|
|
class Bonus extends ApiController
|
|
|
{
|
|
|
public function getBonusList()
|
|
|
{
|
|
|
$page = input('page');
|
|
|
$pageSize = input('pageSize');
|
|
|
|
|
|
$do = Db::name('bonus_type');
|
|
|
|
|
|
$bonus = $do
|
|
|
->page($page, $pageSize)
|
|
|
->select()
|
|
|
->toArray();
|
|
|
|
|
|
if (!$bonus) {
|
|
|
$bonus = [];
|
|
|
}
|
|
|
|
|
|
$send_type = [
|
|
|
'1' => '會員發放',
|
|
|
'2' => '商品發放',
|
|
|
'3' => '訂單方式',
|
|
|
'4' => '線下發放',
|
|
|
'5' => '線上發放',
|
|
|
'6' => '註冊發放',
|
|
|
];
|
|
|
|
|
|
foreach ($bonus as $key => $val) {
|
|
|
$bonus[$key]['send_type'] = $send_type[$val['send_type']];
|
|
|
$bonus[$key]['bonus_number'] = Db::name('bonus')->where('bonus_type_id', $val['type_id'])->sum('bonus_number');
|
|
|
$bonus[$key]['remain_number'] = Db::name('bonus')->where('bonus_type_id', $val['type_id'])->sum('remain_number');
|
|
|
}
|
|
|
|
|
|
$rtn = [
|
|
|
'total' => $do->count(),
|
|
|
'data' => $bonus
|
|
|
];
|
|
|
return $this->Success($rtn);
|
|
|
}
|
|
|
|
|
|
public function getBonus()
|
|
|
{
|
|
|
$type_id = input('type_id');
|
|
|
$bonus = Db::name('bonus_type')
|
|
|
->field('type_id,type_name,type_money,min_amount,send_type,send_start_date,send_end_date,use_start_date,use_end_date')
|
|
|
->where('type_id', $type_id)
|
|
|
->find();
|
|
|
|
|
|
$bonus['send_start_date'] = $bonus['send_start_date']?date('Y-m-d', $bonus['send_start_date']):'';
|
|
|
$bonus['send_end_date'] = $bonus['send_end_date']?date('Y-m-d', $bonus['send_end_date']):'';
|
|
|
$bonus['use_start_date'] = $bonus['use_start_date']?date('Y-m-d', $bonus['use_start_date']):'';
|
|
|
$bonus['use_end_date'] = $bonus['use_end_date']?date('Y-m-d', $bonus['use_end_date']):'';
|
|
|
|
|
|
return $this->Success($bonus);
|
|
|
}
|
|
|
|
|
|
public function addBonus()
|
|
|
{
|
|
|
$data = input('post.');
|
|
|
unset($data['act']);
|
|
|
|
|
|
$data['send_start_date'] = isset($data['send_start_date']) ? strtotime($data['send_start_date']) : 0;
|
|
|
$data['send_end_date'] = isset($data['send_end_date']) ? strtotime($data['send_end_date']) : 0;
|
|
|
$data['use_start_date'] = isset($data['use_start_date']) ? strtotime($data['use_start_date']) : 0;
|
|
|
$data['use_end_date'] = isset($data['use_end_date']) ? strtotime($data['use_end_date']) : 0;
|
|
|
|
|
|
$do = Db::name('bonus_type');
|
|
|
$result = $do->insert($data);
|
|
|
|
|
|
|
|
|
if (!$result) {
|
|
|
return $this->Error('操作失败');
|
|
|
}
|
|
|
return $this->Success('操作成功');
|
|
|
}
|
|
|
|
|
|
public function updateBonus()
|
|
|
{
|
|
|
$data = input('post.');
|
|
|
unset($data['act']);
|
|
|
$data['send_start_date'] = !empty($data['send_start_date']) ? strtotime($data['send_start_date']) : 0;
|
|
|
$data['send_end_date'] = !empty($data['send_end_date']) ? strtotime($data['send_end_date']) : 0;
|
|
|
$data['use_start_date'] = !empty($data['use_start_date']) ? strtotime($data['use_start_date']) : 0;
|
|
|
$data['use_end_date'] = !empty($data['use_end_date']) ? strtotime($data['use_end_date']) : 0;
|
|
|
|
|
|
try{
|
|
|
Db::name('bonus_type')
|
|
|
->where('type_id', $data['type_id'])
|
|
|
->update($data);
|
|
|
}catch(\Exception $e){
|
|
|
return $this->Error('操作失败');
|
|
|
}
|
|
|
|
|
|
return $this->Success('操作成功');
|
|
|
}
|
|
|
|
|
|
public function deleteBonus()
|
|
|
{
|
|
|
$id = input('id');
|
|
|
|
|
|
$do = Db::name('bonus_type');
|
|
|
|
|
|
$do->where('type_id', $id)->delete();
|
|
|
|
|
|
return $this->Success('操作成功');
|
|
|
}
|
|
|
|
|
|
public function getUseBonusList()
|
|
|
{
|
|
|
$page = input('page');
|
|
|
$pageSize = input('pageSize');
|
|
|
|
|
|
$do = Db::name('bonus');
|
|
|
|
|
|
$rtn = $do
|
|
|
->page($page, $pageSize)
|
|
|
->select()
|
|
|
->toArray();
|
|
|
|
|
|
if (!$rtn) {
|
|
|
$rtn = [];
|
|
|
}
|
|
|
|
|
|
$send_type = [
|
|
|
'1' => '會員發放',
|
|
|
'2' => '商品發放',
|
|
|
'3' => '訂單方式',
|
|
|
'4' => '線下發放',
|
|
|
'5' => '線上發放',
|
|
|
'6' => '註冊發放',
|
|
|
];
|
|
|
|
|
|
foreach ($rtn as $key => $val) {
|
|
|
if (!empty($val['send_type'])) {
|
|
|
$rtn[$key]['send_type'] = $send_type[$val['send_type']];
|
|
|
} else {
|
|
|
$rtn[$key]['send_type'] = '未知';
|
|
|
}
|
|
|
$rtn[$key]['order_id'] = empty($val['order_id']) ? '' : $val['order_id'];
|
|
|
$rtn[$key]['user_id'] = empty($val['user_id']) ? '' : $val['user_id'];
|
|
|
$rtn[$key]['used_time'] = empty($val['used_time']) ? '未使用' : $val['used_time'];
|
|
|
}
|
|
|
|
|
|
$rtn = [
|
|
|
'total' => $do->count(),
|
|
|
'data' => $rtn
|
|
|
];
|
|
|
return $this->Success($rtn);
|
|
|
}
|
|
|
public function getUseList()
|
|
|
{
|
|
|
$result = Db::name('user_bonus')
|
|
|
->alias('ub')
|
|
|
->join('users u', 'ub.user_id = u.user_id')
|
|
|
->join('order_info o', 'ub.order_id = o.order_id')
|
|
|
->field('ub.*,u.sso_user_id,o.order_sn')
|
|
|
->where('ub.bonus_id', input('bonus_id'))
|
|
|
->select()
|
|
|
->toArray();
|
|
|
|
|
|
if (!$result) {
|
|
|
$result = [];
|
|
|
}
|
|
|
|
|
|
foreach ($result as $key => $val) {
|
|
|
$result[$key]['used_time'] = empty($val['used_time']) ? '未使用' : date('Y-m-d H:i:s', $val['used_time']);
|
|
|
}
|
|
|
return $this->Success($result);
|
|
|
}
|
|
|
|
|
|
public function send()
|
|
|
{
|
|
|
$data = [
|
|
|
'bonus_type_id' => input('type_id'),
|
|
|
'create_time' => time()
|
|
|
];
|
|
|
|
|
|
if (empty(input('type_id'))) {
|
|
|
return $this->Error('請選擇優惠券');
|
|
|
}
|
|
|
try {
|
|
|
//如何send_type為1,則產生一組優惠券
|
|
|
if (input('send_type') == 1) {
|
|
|
$data['bonus_number'] = input('number');
|
|
|
$data['remain_number'] = input('number');
|
|
|
$data['bonus_sn'] = $this->genBonusSn();
|
|
|
$result = Db::name('bonus')->insert($data);
|
|
|
} else {
|
|
|
$data['bonus_number'] = 1;
|
|
|
$data['remain_number'] = 1;
|
|
|
for ($i = 0; $i < input('number'); $i++) {
|
|
|
$data['bonus_sn'] = $this->genBonusSn();
|
|
|
$result = Db::name('bonus')->insert($data);
|
|
|
}
|
|
|
}
|
|
|
return $this->Success('操作成功');
|
|
|
} catch (\Exception $e) {
|
|
|
return $this->Error($e->getMessage());
|
|
|
}
|
|
|
}
|
|
|
|
|
|
private function genBonusSn($length = 10)
|
|
|
{
|
|
|
$characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890';
|
|
|
$code = '';
|
|
|
|
|
|
for ($i = 0; $i < $length; $i++) {
|
|
|
$code .= $characters[rand(0, strlen($characters) - 1)];
|
|
|
}
|
|
|
|
|
|
//檢查是否重複
|
|
|
$result = Db::name('user_bonus')
|
|
|
->where('bonus_sn', $code)
|
|
|
->where('used_time', 0)
|
|
|
->find();
|
|
|
|
|
|
//如果重複就重新產生
|
|
|
if ($result) {
|
|
|
$code = $this->genBonusSn();
|
|
|
}
|
|
|
|
|
|
return $code;
|
|
|
}
|
|
|
}
|