1242 lines
47 KiB
PHP
1242 lines
47 KiB
PHP
<?php
|
||
|
||
namespace app\admin\controller;
|
||
|
||
use app\admin\controller\Base;
|
||
use app\common\model\Category;
|
||
use app\common\model\Yushou;
|
||
use \think\Request;
|
||
use think\facade\View;
|
||
use app\common\model\Goods as GoodsModel;
|
||
use app\common\model\GoodsList;
|
||
use app\common\model\AdminGoodsLog;
|
||
use think\facade\Db;
|
||
use app\common\model\Shang;
|
||
|
||
class Goods extends Base
|
||
{
|
||
/**
|
||
* 盒子列表
|
||
*/
|
||
public function goods(Request $request)
|
||
{
|
||
$title = trim(input('get.title'));
|
||
$status = trim(input('get.status'));
|
||
$type = trim(input('get.type'));
|
||
$whe = array();
|
||
if ($title) {
|
||
$whe[] = ['title', 'like', '%' . $title . '%'];
|
||
}
|
||
if ($status) {
|
||
$whe[] = ['status', '=', $status];
|
||
}
|
||
if ($type) {
|
||
$whe[] = ['type', '=', $type];
|
||
} else {
|
||
$whe[] = ['type', 'notIn', [4, 7]];
|
||
}
|
||
$field = "*";
|
||
$order = "id desc";
|
||
$data = GoodsModel::getList($whe, $field, $order, $this->page);
|
||
View::assign('list', $data['list']);
|
||
View::assign('count', $data['count']);
|
||
View::assign('page', $data['page']);
|
||
return View::fetch("Goods/goods");
|
||
}
|
||
|
||
/**
|
||
* 添加盒子
|
||
*/
|
||
public function goods_add(Request $request)
|
||
{
|
||
if (!$request->isPost()) {
|
||
$item_card = \app\common\model\ItemCard::where('id', '<', 3)->select()->toArray();
|
||
$shang = Shang::where('id', 'between', [34, 38])->select()->toArray();
|
||
|
||
View::assign('shang', $shang);
|
||
View::assign('item_card', $item_card);
|
||
return View::fetch("Goods/goods_add");
|
||
} else {
|
||
$data = input('post.');
|
||
if (empty($data['title'])) {
|
||
return $this->renderError("请输入盒子名称");
|
||
}
|
||
if (RegMoney($data['price'])) {
|
||
return $this->renderError("盒子价格输入不规范,最多保留两位小数");
|
||
}
|
||
if (RegZero($data['sort'])) {
|
||
return $this->renderError("排序输入不规范,请输入整数");
|
||
}
|
||
if ($data['type'] == 1||$data['type'] == 11) {
|
||
if (RegInt($data['stock'])) {
|
||
return $this->renderError("库存输入不规范,请设置大于0的整数");
|
||
}
|
||
if ($data['lock_is'] == 1) {
|
||
if (RegInt($data['lock_time'])) {
|
||
return $this->renderError("请设置锁箱时间");
|
||
}
|
||
} elseif ($data['lock_is'] == 0) {
|
||
$data['lock_time'] = 0;
|
||
} else {
|
||
return $this->renderError("锁箱类型选择错误");
|
||
}
|
||
if ($data['integral_is'] != 0 && $data['integral_is'] != 1) {
|
||
return $this->renderError("发积分开关选择错误");
|
||
}
|
||
if ($data['show_is'] != 0 && $data['show_is'] != 1) {
|
||
return $this->renderError("首页显示开关选择错误");
|
||
}
|
||
$data['prize_num'] = 0;
|
||
$data['category_id'] = 0;
|
||
} elseif ($data['type'] == 2) {
|
||
$data['stock'] = 0;
|
||
$data['lock_is'] = 0;
|
||
$data['lock_time'] = 0;
|
||
$data['show_is'] = 0;
|
||
$data['prize_num'] = 0;
|
||
if ($data['integral_is'] != 0 && $data['integral_is'] != 1) {
|
||
return $this->renderError("发积分开关选择错误");
|
||
}
|
||
$data['category_id'] = 0;
|
||
} elseif ($data['type'] == 3) {
|
||
$data['stock'] = 1;
|
||
$data['lock_is'] = 0;
|
||
$data['lock_time'] = 0;
|
||
$data['show_is'] = 0;
|
||
$data['category_id'] = 0;
|
||
$data['prize_num'] = 0;
|
||
// if (RegInt($data['prize_num'])) {
|
||
// return $this->renderError("擂台赏抽全局赏数量设置错误,请设置大于0的整数");
|
||
// }
|
||
if ($data['integral_is'] != 0 && $data['integral_is'] != 1) {
|
||
return $this->renderError("发积分开关选择错误");
|
||
}
|
||
|
||
} elseif ($data['type'] == 5) {
|
||
if (RegInt($data['stock'])) {
|
||
return $this->renderError("库存输入不规范,请设置大于0的整数");
|
||
}
|
||
$data['lock_is'] = 0;
|
||
$data['lock_time'] = 0;
|
||
$data['prize_num'] = 0;
|
||
$data['show_is'] = 0;
|
||
$data['coupon_is'] = 0;
|
||
$data['coupon_pro'] = 0;
|
||
$data['integral_is'] = 0;
|
||
$data['category_id'] = 0;
|
||
} elseif ($data['type'] == 6) {
|
||
if (RegInt($data['stock'])) {
|
||
return $this->renderError("库存输入不规范,请设置大于0的整数");
|
||
}
|
||
if ($data['lock_is'] == 1) {
|
||
if (RegInt($data['lock_time'])) {
|
||
return $this->renderError("请设置锁箱时间");
|
||
}
|
||
} elseif ($data['lock_is'] == 0) {
|
||
$data['lock_time'] = 0;
|
||
} else {
|
||
return $this->renderError("锁箱类型选择错误");
|
||
}
|
||
if ($data['integral_is'] != 0 && $data['integral_is'] != 1) {
|
||
return $this->renderError("发积分开关选择错误");
|
||
}
|
||
if ($data['show_is'] != 0 && $data['show_is'] != 1) {
|
||
return $this->renderError("首页显示开关选择错误");
|
||
}
|
||
$data['prize_num'] = 0;
|
||
$data['category_id'] = 0;
|
||
} elseif ($data['type'] == 8) {
|
||
$data['stock'] = 0;
|
||
$data['lock_is'] = 0;
|
||
$data['lock_time'] = 0;
|
||
$data['show_is'] = 0;
|
||
$data['prize_num'] = 0;
|
||
if ($data['integral_is'] != 0 && $data['integral_is'] != 1) {
|
||
return $this->renderError("发积分开关选择错误");
|
||
}
|
||
$data['category_id'] = 0;
|
||
} elseif ($data['type'] == 9) {
|
||
$data['stock'] = 0;
|
||
$data['lock_is'] = 0;
|
||
$data['lock_time'] = 0;
|
||
$data['show_is'] = 0;
|
||
$data['prize_num'] = 0;
|
||
if ($data['integral_is'] != 0 && $data['integral_is'] != 1) {
|
||
return $this->renderError("发积分开关选择错误");
|
||
}
|
||
$data['category_id'] = 0;
|
||
} elseif ($data['type'] == 10) {
|
||
if (RegInt($data['stock'])) {
|
||
return $this->renderError("库存输入不规范,请设置大于0的整数");
|
||
}
|
||
$data['lock_is'] = 0;
|
||
$data['lock_time'] = 0;
|
||
$data['prize_num'] = 0;
|
||
$data['show_is'] = 0;
|
||
$data['coupon_is'] = 0;
|
||
$data['coupon_pro'] = 0;
|
||
$data['integral_is'] = 0;
|
||
$data['category_id'] = 0;
|
||
$data['stock'] = 1;
|
||
} else {
|
||
return $this->renderError("盒子类型选择错误");
|
||
}
|
||
$data['sale_time'] = 0;
|
||
// if (isset($data['sale_time'])) {
|
||
// $data['sale_time'] = strtotime($data['sale_time']);
|
||
// } else {
|
||
// $data['sale_time'] = 0;
|
||
// }
|
||
if (empty($data['imgurl'])) {
|
||
return $this->renderError("请上传盒子封面图");
|
||
}
|
||
if (empty($data['imgurl_detail'])) {
|
||
return $this->renderError("请上传盒子详情图");
|
||
}
|
||
$data['status'] = 2;
|
||
$data['addtime'] = time();
|
||
$dd = GoodsModel::insert($data);
|
||
if ($dd) {
|
||
return $this->renderSuccess("添加成功");
|
||
} else {
|
||
return $this->renderError("网络繁忙,请稍后");
|
||
}
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 编辑盒子
|
||
*/
|
||
public function goods_edit(Request $request)
|
||
{
|
||
if (!$request->isPost()) {
|
||
$id = $request->param('id/d', 0);
|
||
$info = GoodsModel::where(['id' => $id])->find();
|
||
if (!$info) {
|
||
return $this->renderError("请求参数错误");
|
||
}
|
||
$info['sale_time'] = '';
|
||
// if ($info['sale_time']) {
|
||
// $info['sale_time'] = date('Y-m-d', $info['sale_time']);
|
||
// } else {
|
||
// $info['sale_time'] = '';
|
||
// }
|
||
$type = $info['type'];
|
||
$item_card = \app\common\model\ItemCard::where('id', '<', 3)->select()->toArray();
|
||
$shang = Shang::where('id', 'between', [34, 38])->select()->toArray();
|
||
View::assign('shang', $shang);
|
||
View::assign('item_card', $item_card);
|
||
View::assign('type', $type);
|
||
View::assign('info', $info);
|
||
// return $this->renderSuccess('',$info);
|
||
return View::fetch("Goods/goods_edit");
|
||
} else {
|
||
$data = input('post.');
|
||
if (empty($data['id'])) {
|
||
return $this->renderError("请求参数错误");
|
||
}
|
||
$info = GoodsModel::where(['id' => $data['id']])->find();
|
||
if (!$info) {
|
||
return $this->renderError("请求参数错误1");
|
||
}
|
||
if (empty($data['title'])) {
|
||
return $this->renderError("请输入盒子名称");
|
||
}
|
||
if (RegMoney($data['price'])) {
|
||
return $this->renderError("盒子价格输入不规范,最多保留两位小数");
|
||
}
|
||
if (RegZero($data['sort'])) {
|
||
return $this->renderError("排序输入不规范,请输入整数");
|
||
}
|
||
$type = $info['type'];
|
||
if ($type == 1||$type == 11) {
|
||
if (RegInt($data['stock'])) {
|
||
return $this->renderError("库存输入不规范,请设置大于0的整数");
|
||
}
|
||
if ($data['lock_is'] == 1) {
|
||
if (RegInt($data['lock_time'])) {
|
||
return $this->renderError("请设置锁箱时间");
|
||
}
|
||
} elseif ($data['lock_is'] == 0) {
|
||
$data['lock_time'] = 0;
|
||
} else {
|
||
return $this->renderError("锁箱类型选择错误");
|
||
}
|
||
$data['prize_num'] = 0;
|
||
$data['category_id'] = 0;
|
||
} elseif ($type == 2) {
|
||
$data['stock'] = 0;
|
||
$data['lock_is'] = 0;
|
||
$data['lock_time'] = 0;
|
||
$data['prize_num'] = 0;
|
||
$data['category_id'] = 0;
|
||
} elseif ($type == 3) {
|
||
if ($info['stock'] != $data['stock']) {
|
||
return $this->renderError("不可修改库存");
|
||
}
|
||
$data['lock_is'] = 0;
|
||
$data['lock_time'] = 0;
|
||
$data['category_id'] = 0;
|
||
$data['prize_num'] = 0;
|
||
} elseif ($type == 5) {
|
||
if (RegInt($data['stock'])) {
|
||
return $this->renderError("库存输入不规范,请设置大于0的整数");
|
||
}
|
||
$data['lock_is'] = 0;
|
||
$data['lock_time'] = 0;
|
||
$data['prize_num'] = 0;
|
||
$data['coupon_is'] = 0;
|
||
$data['coupon_pro'] = 0;
|
||
$data['integral_is'] = 0;
|
||
$data['category_id'] = 0;
|
||
} elseif ($type == 6) {
|
||
|
||
if (RegInt($data['stock'])) {
|
||
return $this->renderError("库存输入不规范,请设置大于0的整数");
|
||
}
|
||
if ($data['lock_is'] == 1) {
|
||
if (RegInt($data['lock_time'])) {
|
||
return $this->renderError("请设置锁箱时间");
|
||
}
|
||
} elseif ($data['lock_is'] == 0) {
|
||
$data['lock_time'] = 0;
|
||
} else {
|
||
return $this->renderError("锁箱类型选择错误");
|
||
}
|
||
if ($data['show_is'] != 0 && $data['show_is'] != 1) {
|
||
return $this->renderError("首页显示开关选择错误");
|
||
}
|
||
$data['prize_num'] = 0;
|
||
$data['category_id'] = 0;
|
||
|
||
} elseif ($type == 8) {
|
||
$data['stock'] = 0;
|
||
$data['lock_is'] = 0;
|
||
$data['lock_time'] = 0;
|
||
$data['prize_num'] = 0;
|
||
$data['category_id'] = 0;
|
||
|
||
} elseif ($type == 9) {
|
||
$data['stock'] = 0;
|
||
$data['lock_is'] = 0;
|
||
$data['lock_time'] = 0;
|
||
$data['prize_num'] = 0;
|
||
$data['category_id'] = 0;
|
||
|
||
} elseif ($type == 10) {
|
||
if (RegInt($data['stock'])) {
|
||
return $this->renderError("库存输入不规范,请设置大于0的整数");
|
||
}
|
||
$data['lock_is'] = 0;
|
||
$data['lock_time'] = 0;
|
||
$data['prize_num'] = 0;
|
||
$data['coupon_is'] = 0;
|
||
$data['coupon_pro'] = 0;
|
||
$data['integral_is'] = 0;
|
||
$data['category_id'] = 0;
|
||
$data['stock'] = 1;
|
||
} else {
|
||
return $this->renderError("盒子类型选择错误");
|
||
}
|
||
$data['sale_time'] = 0;
|
||
// if (isset($data['sale_time'])) {
|
||
// $data['sale_time'] = strtotime($data['sale_time']);
|
||
// } else {
|
||
// $data['sale_time'] = 0;
|
||
// }
|
||
if (empty($data['imgurl'])) {
|
||
return $this->renderError("请上传盒子封面图");
|
||
}
|
||
if (empty($data['imgurl_detail'])) {
|
||
return $this->renderError("请上传盒子封面图");
|
||
}
|
||
$data['update_time'] = time();
|
||
if ($data['stock'] < $info['stock']) {
|
||
return $this->renderError("不能减少库存");
|
||
}
|
||
Db::startTrans();
|
||
$res = [];
|
||
#添加套
|
||
if ($type == 1 || $type == 11 || $type == 5 ||$type == 10 || $type == 6) {
|
||
if (($data['stock'] > $info['stock'])) {
|
||
#赏品
|
||
$goods_list = GoodsList::where(['goods_id' => $info['id']])
|
||
->where(['num' => 1])
|
||
->select()->toArray();
|
||
if ($goods_list) {
|
||
#循环数据
|
||
$save_sports_data = [];
|
||
$start_num = $info['stock'] + 1;
|
||
for ($i = $start_num; $i <= $data['stock']; $i++) {
|
||
foreach ($goods_list as $k => $v) {
|
||
unset($v['id']);
|
||
unset($v['num']);
|
||
$v['num'] = $i;
|
||
$v['surplus_stock'] = $v['stock'];
|
||
$save_sports_data[] = $v;
|
||
}
|
||
}
|
||
#添加赏品
|
||
$res[] = GoodsList::insertAll($save_sports_data);
|
||
}
|
||
}
|
||
}
|
||
$res[] = $info->allowField([])->update($data);
|
||
#添加日志
|
||
$info['update_time'] = date('Y-m-d H:i:i:s',$info['update_time']);
|
||
$data['update_time'] = date('Y-m-d H:i:i:s',$data['update_time']);
|
||
$res[] = AdminGoodsLog::add_goods_log(session('admin_id'),$info['id'],0,json_encode($info),json_encode($data));
|
||
if (resCheck($res)) {
|
||
Db::commit();
|
||
return $this->renderSuccess("编辑成功");
|
||
} else {
|
||
Db::rollback();
|
||
return $this->renderError("网络繁忙,请稍后");
|
||
}
|
||
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 上、下架,删除盒子
|
||
*/
|
||
public function goods_del(Request $request)
|
||
{
|
||
$id = $request->post('id/d');
|
||
$status = $request->post('type/d');
|
||
$data = GoodsModel::where(['id' => $id])->field('id')->find();
|
||
if (!$data) {
|
||
return $this->renderError("数据不存在");
|
||
}
|
||
if ($status == 1 || $status == 2) {
|
||
$result = GoodsModel::where(['id' => $id])->update(['status' => $status]);
|
||
} elseif ($status == 3) {
|
||
$result = GoodsModel::where(['id' => $id])->update(['delete_time' => time(), 'status' => 2]);
|
||
// $goods = GoodsList::field('id')->where(['goods_id' => $id])->find();
|
||
// if ($goods) {
|
||
// GoodsList::field('id')->where(['goods_id' => $id])->delete();
|
||
// }
|
||
} else {
|
||
return $this->renderError("请求参数错误");
|
||
}
|
||
if ($result) {
|
||
return $this->renderSuccess("操作成功");
|
||
} else {
|
||
return $this->renderError("网络繁忙,请稍后");
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 盒子奖品
|
||
*/
|
||
public function goodslist(Request $request)
|
||
{
|
||
$goods_id = $request->param('goods_id/d', 0);
|
||
$info = GoodsModel::where(['id' => $goods_id])->find();
|
||
if (!$info) {
|
||
return $this->renderError('请求参数错误');
|
||
}
|
||
$type = $info['type'];
|
||
$title = trim(input('get.title'));
|
||
$lian_ji_type = input('get.lian_ji_type');
|
||
$whe = array();
|
||
$whe[] = ['goods_id', '=', $goods_id];
|
||
|
||
if ($type == 1 || $type == 3 || $type == 5 || $type == 6 || $type == 10 || $type == 11) {
|
||
$whe[] = ['num', '=', 1];
|
||
} elseif ($type == 2 || $type == 8 || $type == 9) {
|
||
$whe[] = ['num', '=', 0];
|
||
} else {
|
||
return $this->renderError('请求参数错误1');
|
||
}
|
||
if (!empty($title)) {
|
||
$whe[] = ['title', 'like', '%' . $title . '%'];
|
||
}
|
||
if (!empty($lian_ji_type)) {
|
||
$whe[] = ['lian_ji_type', '=', $lian_ji_type];
|
||
}
|
||
$field = "*";
|
||
$order = "sort desc,shang_id asc,id asc";
|
||
$data = GoodsList::getList($whe, $field, $order, 150);
|
||
$real_pro = 0;
|
||
foreach ($data['list'] as &$value) {
|
||
$value['shang'] = Shang::where(['id' => $value['shang_id']])->value('title');
|
||
// if ($value['goods_type'] == 2) {
|
||
// $value['sale_time'] = date('Y-m-d', $value['sale_time']);
|
||
// } else {
|
||
// $value['sale_time'] = '';
|
||
// }
|
||
$real_pro += $value['real_pro'];
|
||
}
|
||
View::assign('list', $data['list']);
|
||
View::assign('count', $data['count']);
|
||
View::assign('page', $data['page']);
|
||
View::assign('goods_id', $goods_id);
|
||
View::assign('type', $type);
|
||
View::assign('real_pro', $real_pro);
|
||
return View::fetch("Goods/goodslist");
|
||
|
||
}
|
||
|
||
/**
|
||
* 添加奖品
|
||
*/
|
||
public function goodslist_add(Request $request)
|
||
{
|
||
if (!$request->isPost()) {
|
||
$goods_id = $request->param('goods_id/d', 0);
|
||
$info = GoodsModel::where(['id' => $goods_id])->find();
|
||
if (!$info) {
|
||
return $this->renderError('请求参数错误');
|
||
}
|
||
if ($info['type'] == 1 || $info['type'] == 5 || $info['type'] == 10 || $info['type'] == 11|| $info['type'] == 6) {
|
||
$shang = Shang::where('id', '<=', 33)->where('id', '<>', 5)->select()->toArray();
|
||
} elseif ($info['type'] == 2 || $info['type'] == 8 || $info['type'] == 9) {
|
||
$shang = Shang::where('id', 'between', [34, 38])->select()->toArray();
|
||
} elseif ($info['type'] == 3) {
|
||
$shang = Shang::where('id', 'between', [4, 33])->select()->toArray();
|
||
} else {
|
||
return $this->renderError('请求参数错误1');
|
||
}
|
||
View::assign('shang', $shang);
|
||
View::assign('goods_id', $goods_id);
|
||
View::assign('type', $info['type']);
|
||
return View::fetch('Goods/goodslist_add');
|
||
} else {
|
||
$data = input('post.');
|
||
if (empty($data['goods_id'])) {
|
||
return $this->renderError('请求参数错误1');
|
||
}
|
||
$info = GoodsModel::where(['id' => $data['goods_id']])->find();
|
||
if (!$info) {
|
||
return $this->renderError('请求参数错误2');
|
||
}
|
||
$type = $info['type'];
|
||
if (empty($data['title'])) {
|
||
return $this->renderError('请输入奖品名称');
|
||
}
|
||
if (empty($data['shang_id'])) {
|
||
return $this->renderError('请选择奖品类型');
|
||
}
|
||
if (RegMoney($data['price'])) {
|
||
return $this->renderError('奖品售价设置错误,最多保留两位小数');
|
||
}
|
||
if (RegMoney($data['money'])) {
|
||
return $this->renderError('兑换价格设置错误,最多保留两位小数');
|
||
}
|
||
if (RegMoney($data['sc_money'])) {
|
||
return $this->renderError('参考价格设置错误,最多保留两位小数');
|
||
}
|
||
if ($data['goods_type'] == 1) {
|
||
$data['sale_time'] = 0;
|
||
} else if (in_array($data['goods_type'], [2, 8, 9])) {
|
||
if (empty($data['sale_time'])) {
|
||
return $this->renderError('请选择预售时间');
|
||
}
|
||
$today_time = strtotime(date('Y-m-d', time()));
|
||
$data['sale_time'] = strtotime($data['sale_time']);
|
||
if ($today_time >= $data['sale_time']) {
|
||
return $this->renderError('预售时间请在今天之后');
|
||
}
|
||
} else {
|
||
return $this->err('奖品类型选择错误');
|
||
}
|
||
//2023-11-17无作用
|
||
$data['reward_num'] = 0;
|
||
//
|
||
|
||
if ($type == 1 || $type == 5 || $type == 10 || $type == 6 || $type == 11) {
|
||
if ($data['shang_id'] == 1 || $data['shang_id'] == 2 || $data['shang_id'] == 3 || $data['shang_id'] == 5) {
|
||
if ($data['stock'] != 1) {
|
||
return $this->renderError('特殊奖品库存请设置为1');
|
||
}
|
||
}
|
||
if (RegInt($data['stock'])) {
|
||
return $this->renderError('奖品数量设置错误,请设置大于0的整数');
|
||
}
|
||
$data['surplus_stock'] = $data['stock'];
|
||
#盒子套数
|
||
$stock = $info['stock'];
|
||
#循环数据
|
||
$save_sports_data = [];
|
||
$prize_code = getPrizeCode() . '_' . time();
|
||
for ($i = 1; $i <= $stock; $i++) {
|
||
$data['num'] = $i;
|
||
$data['prize_code'] = $prize_code;
|
||
$save_sports_data[] = $data;
|
||
}
|
||
} elseif (in_array($type,[2,8,9])) {
|
||
if (RegMoney($data['real_pro']*100)) {
|
||
return $this->renderError('真实概率设置错误,最多保留两位小数1');
|
||
}
|
||
|
||
$prize_code = getPrizeCode() . '_' . time();
|
||
$data['prize_code'] = $prize_code;
|
||
} else if ($type == 3) {
|
||
if ($data['shang_id'] == 1 || $data['shang_id'] == 2 || $data['shang_id'] == 3 || $data['shang_id'] == 5) {
|
||
if ($data['stock'] != 1) {
|
||
return $this->renderError('特殊奖品库存请设置为1');
|
||
}
|
||
}
|
||
if (RegInt($data['stock'])) {
|
||
return $this->renderError('奖品数量设置错误,请设置大于0的整数');
|
||
}
|
||
$data['surplus_stock'] = $data['stock'];
|
||
#盒子套数
|
||
$stock = $info['stock'];
|
||
#循环数据
|
||
$save_sports_data = [];
|
||
$prize_code = getPrizeCode() . '_' . time();
|
||
for ($i = 1; $i <= $stock; $i++) {
|
||
$data['num'] = $i;
|
||
$data['prize_code'] = $prize_code;
|
||
$save_sports_data[] = $data;
|
||
}
|
||
if (RegInt($data['prize_num']) && $data['shang_id'] == 5) {
|
||
return $this->renderError("擂台赏抽全局赏数量设置错误,请设置大于0的整数");
|
||
}
|
||
} else {
|
||
return $this->err('请求参数错误');
|
||
}
|
||
if (RegZero($data['sort'])) {
|
||
return $this->renderError('排序请输入整数');
|
||
}
|
||
// if ($data['card_no']) {
|
||
// $card_no_info = GoodsList::field('id')->where('card_no', '=', $data['card_no'])->find();
|
||
// if ($card_no_info) {
|
||
// return $this->renderError('赠送编号已存在');
|
||
// }
|
||
// } else {
|
||
$data['card_no'] = NULL;
|
||
// }
|
||
|
||
if (empty($data['imgurl'])) {
|
||
return $this->renderError('请上传图片');
|
||
}
|
||
$data['addtime'] = time();
|
||
if (isset($save_sports_data)) {
|
||
$res = GoodsList::insertAll($save_sports_data);
|
||
} else {
|
||
$res = GoodsList::insert($data);
|
||
}
|
||
if ($res) {
|
||
return $this->renderSuccess('添加成功');
|
||
} else {
|
||
return $this->renderError('添加失败');
|
||
}
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 编辑奖品
|
||
*/
|
||
public function goodslist_edit(Request $request)
|
||
{
|
||
if (!$request->isPost()) {
|
||
$id = $request->param('id/d', 0);
|
||
$goods = GoodsList::where(['id' => $id])->find();
|
||
if (!$goods) {
|
||
return $this->renderError('请求参数错误');
|
||
}
|
||
if ($goods['goods_type'] == 2) {
|
||
$goods['sale_time'] = date('Y-m-d', $goods['sale_time']);
|
||
} else {
|
||
$goods['sale_time'] = '';
|
||
}
|
||
$goods_id = $goods['goods_id'];
|
||
$info = GoodsModel::where(['id' => $goods_id])->find();
|
||
if (!$info) {
|
||
return $this->renderError('请求参数错误1');
|
||
}
|
||
if ($info['type'] == 1 || $info['type'] == 5 || $info['type'] == 6 || $info['type'] == 10 | $info['type'] == 11) {
|
||
$shang = Shang::where('id', '<=', 33)->where('id', '<>', 5)->select()->toArray();
|
||
} elseif ($info['type'] == 2 || $info['type'] == 8 || $info['type'] == 9) {
|
||
$shang = Shang::where('id', 'between', [34, 38])->select()->toArray();
|
||
} elseif ($info['type'] == 3) {
|
||
$shang = Shang::where('id', 'between', [4, 33])->select()->toArray();
|
||
} else {
|
||
return $this->renderError('请求参数错误1');
|
||
}
|
||
|
||
View::assign('goods', $goods);
|
||
View::assign('shang', $shang);
|
||
View::assign('type', $info['type']);
|
||
return View::fetch('Goods/goodslist_edit');
|
||
} else {
|
||
|
||
$data = input('post.');
|
||
if (empty($data['id'])) {
|
||
return $this->renderError('请求参数错误1');
|
||
}
|
||
$goods = GoodsList::where(['id' => $data['id']])->find();
|
||
if (!$goods) {
|
||
return $this->renderError('请求参数错误2');
|
||
}
|
||
$info = GoodsModel::where(['id' => $goods['goods_id']])->find();
|
||
if (!$info) {
|
||
return $this->renderError('请求参数错误3');
|
||
}
|
||
$type = $info['type'];
|
||
if (empty($data['title'])) {
|
||
return $this->renderError('请输入奖品名称');
|
||
}
|
||
if (empty($data['shang_id'])) {
|
||
return $this->renderError('请选择奖品类型');
|
||
}
|
||
if (RegMoney($data['price'])) {
|
||
return $this->renderError('奖品售价设置错误,最多保留两位小数');
|
||
}
|
||
if (RegMoney($data['money'])) {
|
||
return $this->renderError('兑换价格设置错误,最多保留两位小数');
|
||
}
|
||
if (RegMoney($data['sc_money'])) {
|
||
return $this->renderError('参考价格设置错误,最多保留两位小数');
|
||
}
|
||
if ($data['goods_type'] == 1) {
|
||
$data['sale_time'] = 0;
|
||
} else if ($data['goods_type'] == 2) {
|
||
if (empty($data['sale_time'])) {
|
||
return $this->renderError('请选择预售时间');
|
||
}
|
||
$today_time = strtotime(date('Y - m - d', time()));
|
||
$data['sale_time'] = strtotime($data['sale_time']);
|
||
if ($today_time >= $data['sale_time']) {
|
||
return $this->renderError('预售时间请在今天之后');
|
||
}
|
||
} else {
|
||
return $this->err('奖品类型选择错误');
|
||
}
|
||
|
||
//2023-11-17无作用
|
||
$data['reward_num'] = 0;
|
||
//
|
||
|
||
if ($type == 1 || $type == 5 || $type == 10 || $type == 6 || $type == 11) {
|
||
|
||
} elseif ($type == 2 || $type == 8 || $type == 9) {
|
||
if (RegMoney($data['real_pro']*100)) {
|
||
return $this->renderError('真实概率设置错误,最多保留两位小数');
|
||
}
|
||
} else if ($type == 3) {
|
||
if (RegInt($data['prize_num']) && $data['shang_id'] == 5) {
|
||
return $this->renderError("擂台赏抽全局赏数量设置错误,请设置大于0的整数");
|
||
}
|
||
} else {
|
||
return $this->err('请求参数错误');
|
||
}
|
||
if (RegZero($data['sort'])) {
|
||
return $this->renderError('排序请输入整数');
|
||
}
|
||
// if ($data['card_no']) {
|
||
// $card_no_info = GoodsList::field('id')
|
||
// ->where('prize_code', '<>', $goods['prize_code'])
|
||
// ->where('card_no', '=', trim($data['card_no']))
|
||
// ->find();
|
||
// if ($card_no_info) {
|
||
// return $this->renderError('赠送编号已存在');
|
||
// }
|
||
// } else {
|
||
$data['card_no'] = NULL;
|
||
// }
|
||
|
||
if (empty($data['imgurl'])) {
|
||
return $this->renderError('请上传图片');
|
||
}
|
||
$data['update_time'] = time();
|
||
unset($data['id']);
|
||
$res1 = GoodsList::where(['prize_code' => $goods['prize_code']])->update($data);
|
||
|
||
if ($res1) {
|
||
#添加日志
|
||
$goods['update_time'] = date('Y-m-d H:i:i:s',$goods['update_time']);
|
||
$data['update_time'] = date('Y-m-d H:i:i:s',$data['update_time']);
|
||
$res2 = AdminGoodsLog::add_goods_log(session('admin_id'),$info['id'],$goods['id'],json_encode($goods),json_encode($data));
|
||
return $this->renderSuccess('编辑成功');
|
||
} else {
|
||
return $this->renderError('编辑失败');
|
||
}
|
||
}
|
||
}
|
||
|
||
|
||
/**
|
||
* 奖品删除
|
||
*/
|
||
public function goodslist_del(Request $request)
|
||
{
|
||
$id = \request()->param('id/d', 0);
|
||
$prize_code = GoodsList::field('prize_code')
|
||
->where(['id' => $id])
|
||
->value('prize_code');
|
||
if (!$prize_code) {
|
||
return $this->renderError("请勿重复操作");
|
||
}
|
||
#删除奖品
|
||
$res = GoodsList::field('id')
|
||
->where(['prize_code' => $prize_code])
|
||
->delete();
|
||
if ($res) {
|
||
return $this->renderSuccess("操作成功");
|
||
} else {
|
||
return $this->renderError("操作失败");
|
||
}
|
||
}
|
||
|
||
|
||
/**
|
||
* 消费赠送
|
||
*/
|
||
public function give()
|
||
{
|
||
$title = trim(input('get.title'));
|
||
$whe = array();
|
||
$whe[] = ['goods_id', '=', 0];
|
||
if (!empty($title)) {
|
||
$whe[] = ['title', 'like', '%' . $title . '%'];
|
||
}
|
||
$field = "*";
|
||
$order = "give_money asc,id asc";
|
||
$data = GoodsList::getList($whe, $field, $order, $this->page);
|
||
foreach ($data['list'] as &$value) {
|
||
$value['shang'] = Shang::where(['id' => $value['shang_id']])->value('title');
|
||
}
|
||
|
||
$range_time = getConfig('give_time')['range_time'];
|
||
View::assign('range_time', $range_time);
|
||
View::assign('list', $data['list']);
|
||
View::assign('count', $data['count']);
|
||
View::assign('page', $data['page']);
|
||
return View::fetch("Goods/give");
|
||
}
|
||
|
||
/**
|
||
* 消费赠送添加
|
||
*/
|
||
public function give_add(Request $request)
|
||
{
|
||
if (!$request->isPost()) {
|
||
$shang = Shang::where('id', 'between', [10, 33])->select()->toArray();
|
||
View::assign('shang', $shang);
|
||
return View::fetch('Goods/give_add');
|
||
} else {
|
||
$data = input('post.');
|
||
if (empty($data['title'])) {
|
||
return $this->renderError('请输入奖品名称');
|
||
}
|
||
if (empty($data['shang_id'])) {
|
||
return $this->renderError('请选择奖品类型');
|
||
}
|
||
if (RegMoney($data['price'])) {
|
||
return $this->renderError('奖品售价设置错误,最多保留两位小数');
|
||
}
|
||
if (RegMoney($data['money'])) {
|
||
return $this->renderError('兑换价格设置错误,最多保留两位小数');
|
||
}
|
||
if (RegInt($data['give_money'])) {
|
||
return $this->renderError('消费阀值设置错误,请设置大于0的整数');
|
||
}
|
||
if (empty($data['imgurl'])) {
|
||
return $this->renderError('请上传图片');
|
||
}
|
||
$prize_code = getPrizeCode() . '_' . time();
|
||
$data['prize_code'] = $prize_code;
|
||
$data['goods_id'] = 0;
|
||
$data['addtime'] = time();
|
||
$dd = (new GoodsList())->insert($data);
|
||
if ($dd) {
|
||
return $this->renderSuccess('添加成功');
|
||
} else {
|
||
return $this->renderError('添加失败');
|
||
}
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 消费赠送编辑
|
||
*/
|
||
public function give_edit(Request $request)
|
||
{
|
||
if (!$request->isPost()) {
|
||
$id = request()->param('id/d', 0);
|
||
$info = GoodsList::where(['id' => $id])->find();
|
||
if (!$info) {
|
||
return $this->renderError('请求参数错误');
|
||
}
|
||
$shang = Shang::where('id', 'between', [10, 33])->select()->toArray();
|
||
View::assign('shang', $shang);
|
||
View::assign('info', $info);
|
||
return View::fetch('Goods/give_edit');
|
||
} else {
|
||
$data = input('post.');
|
||
if (empty($data['id'])) {
|
||
return $this->renderError('请求参数错误');
|
||
}
|
||
$info = GoodsList::where(['id' => $data['id']])->find();
|
||
if (!$info) {
|
||
return $this->renderError('请求参数错误1');
|
||
}
|
||
if (empty($data['title'])) {
|
||
return $this->renderError('请输入奖品名称');
|
||
}
|
||
if (empty($data['shang_id'])) {
|
||
return $this->renderError('请选择奖品类型');
|
||
}
|
||
if (RegMoney($data['price'])) {
|
||
return $this->renderError('奖品售价设置错误,最多保留两位小数');
|
||
}
|
||
if (RegMoney($data['money'])) {
|
||
return $this->renderError('兑换价格设置错误,最多保留两位小数');
|
||
}
|
||
if (RegInt($data['give_money'])) {
|
||
return $this->renderError('消费阀值设置错误,请设置大于0的整数');
|
||
}
|
||
if (empty($data['imgurl'])) {
|
||
return $this->renderError('请上传图片');
|
||
}
|
||
$data['update_time'] = time();
|
||
unset($data['id']);
|
||
$dd = $info->allowField([])->save($data);
|
||
if ($dd) {
|
||
return $this->renderSuccess('编辑成功');
|
||
} else {
|
||
return $this->renderError('编辑失败');
|
||
}
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 消费赠送删除
|
||
*/
|
||
public function give_del(Request $request)
|
||
{
|
||
$id = \request()->param('id/d', 0);
|
||
$info = GoodsList::field('prize_code')
|
||
->where(['id' => $id])
|
||
->find();
|
||
if (!$info) {
|
||
return $this->renderError("请勿重复操作");
|
||
}
|
||
#删除奖品
|
||
$res = GoodsList::field('id')
|
||
->where(['id' => $id])
|
||
->delete();
|
||
if ($res) {
|
||
return $this->renderSuccess("操作成功");
|
||
} else {
|
||
return $this->renderError("操作失败");
|
||
}
|
||
}
|
||
|
||
#无限令规则
|
||
public function give_time()
|
||
{
|
||
$data = request()->param();
|
||
$data['time'] = time();
|
||
$result = setConfig('give_time', $data);
|
||
if ($result) {
|
||
return $this->renderSuccess('修改成功');
|
||
} else {
|
||
return $this->renderError('修改失败');
|
||
}
|
||
}
|
||
|
||
|
||
/**
|
||
* 预售日历
|
||
*/
|
||
public function yushou_rili()
|
||
{
|
||
$title = trim(input('get.title'));
|
||
$whe = array();
|
||
if ($title) {
|
||
$whe[] = ['title', 'like', '%' . $title . '%'];
|
||
}
|
||
$field = "*";
|
||
$order = "sort desc,id desc";
|
||
$data = Yushou::getList($whe, $field, $order, $this->page);
|
||
foreach ($data['list'] as &$value) {
|
||
$value['goods_title'] = GoodsModel::where(['id' => $value['goods_id']])->value('title');
|
||
$value['sale_time'] = date('Y-m-d', $value['sale_time']);
|
||
}
|
||
View::assign('list', $data['list']);
|
||
View::assign('count', $data['count']);
|
||
View::assign('page', $data['page']);
|
||
return View::fetch("Goods/yushou_rili");
|
||
}
|
||
|
||
/**
|
||
* 预售日历添加
|
||
*/
|
||
public function yushou_rili_add(Request $request)
|
||
{
|
||
if (!$request->isPost()) {
|
||
$goods = GoodsModel::where('type', '=', 1)->select()->toArray();
|
||
View::assign('goods', $goods);
|
||
return View::fetch('Goods/yushou_rili_add');
|
||
} else {
|
||
$data = input('post.');
|
||
if (empty($data['title'])) {
|
||
return $this->renderError('请输入标题');
|
||
}
|
||
if ($data['goods_id']) {
|
||
$goods = GoodsModel::where('type', '=', 1)->where('id', '=', $data['goods_id']);
|
||
if (!$goods) {
|
||
return $this->renderError('盒子选择错误');
|
||
}
|
||
} else {
|
||
$data['goods_id'] = 0;
|
||
}
|
||
if (empty($data['sale_time'])) {
|
||
return $this->renderError('请选择预售时间');
|
||
}
|
||
$data['sale_time'] = strtotime($data['sale_time']);
|
||
$today_time = strtotime(date('Y-m-d', time()));
|
||
if ($data['sale_time'] < $today_time) {
|
||
return $this->renderError('预售时间选择错误');
|
||
}
|
||
if (RegZero($data['sort'])) {
|
||
return $this->renderError('排序设置错误,请输入整数');
|
||
}
|
||
if (empty($data['imgurl'])) {
|
||
return $this->renderError('请上传图片');
|
||
}
|
||
$data['addtime'] = time();
|
||
$dd = (new Yushou())->insert($data);
|
||
if ($dd) {
|
||
return $this->renderSuccess('添加成功');
|
||
} else {
|
||
return $this->renderError('添加失败');
|
||
}
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 预售日历编辑
|
||
*/
|
||
public function yushou_rili_edit(Request $request)
|
||
{
|
||
if (!$request->isPost()) {
|
||
$id = request()->param('id/d', 0);
|
||
$info = Yushou::where(['id' => $id])->find();
|
||
if (!$info) {
|
||
return $this->renderError('请求参数错误');
|
||
}
|
||
$info['sale_time'] = date('Y-m-d', $info['sale_time']);
|
||
$goods = GoodsModel::where('type', '=', 1)->select()->toArray();
|
||
View::assign('goods', $goods);
|
||
View::assign('info', $info);
|
||
return View::fetch('Goods/yushou_rili_edit');
|
||
} else {
|
||
$data = input('post.');
|
||
if (empty($data['id'])) {
|
||
return $this->renderError('请求参数错误');
|
||
}
|
||
$info = Yushou::where(['id' => $data['id']])->find();
|
||
if (!$info) {
|
||
return $this->renderError('请求参数错误1');
|
||
}
|
||
if (empty($data['title'])) {
|
||
return $this->renderError('请输入标题');
|
||
}
|
||
if ($data['goods_id']) {
|
||
$goods = GoodsModel::where('type', '=', 1)->where('id', '=', $data['goods_id']);
|
||
if (!$goods) {
|
||
return $this->renderError('盒子选择错误');
|
||
}
|
||
} else {
|
||
$data['goods_id'] = 0;
|
||
}
|
||
if (empty($data['sale_time'])) {
|
||
return $this->renderError('请选择预售时间');
|
||
}
|
||
$data['sale_time'] = strtotime($data['sale_time']);
|
||
$today_time = strtotime(date('Y-m-d', time()));
|
||
if ($data['sale_time'] < $today_time) {
|
||
return $this->renderError('预售时间选择错误');
|
||
}
|
||
if (RegZero($data['sort'])) {
|
||
return $this->renderError('排序设置错误,请输入整数');
|
||
}
|
||
if (empty($data['imgurl'])) {
|
||
return $this->renderError('请上传图片');
|
||
}
|
||
$data['update_time'] = time();
|
||
unset($data['id']);
|
||
$dd = $info->allowField([])->save($data);
|
||
if ($dd) {
|
||
return $this->renderSuccess('编辑成功');
|
||
} else {
|
||
return $this->renderError('编辑失败');
|
||
}
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 预售日历删除
|
||
*/
|
||
public function yushou_rili_del(Request $request)
|
||
{
|
||
$id = \request()->param('id/d', 0);
|
||
$info = Yushou::field('id')->where(['id' => $id])->find();
|
||
if (!$info) {
|
||
return $this->renderError("请勿重复操作");
|
||
}
|
||
#删除奖品
|
||
$res = Yushou::field('id')->where(['id' => $id])->delete();
|
||
if ($res) {
|
||
return $this->renderSuccess("操作成功");
|
||
} else {
|
||
return $this->renderError("操作失败");
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 获取同步地址列表
|
||
*/
|
||
public function get_sync_addresses()
|
||
{
|
||
$config = getConfig('systemconfig');
|
||
$syncAddresses = isset($config['sync_address']) && is_array($config['sync_address'])
|
||
? $config['sync_address']
|
||
: [];
|
||
|
||
return $this->renderSuccess('获取成功', $syncAddresses);
|
||
}
|
||
|
||
/**
|
||
* 同步盒子数据
|
||
*/
|
||
public function sync_goods()
|
||
{
|
||
$goods_id = $this->request->post('goods_id/d', 0);
|
||
$targets = $this->request->post('targets/a', []);
|
||
|
||
if (empty($goods_id)) {
|
||
return $this->renderError('盒子ID不能为空');
|
||
}
|
||
|
||
if (empty($targets)) {
|
||
return $this->renderError('同步目标不能为空');
|
||
}
|
||
|
||
# 获取盒子数据
|
||
$goods = \app\common\model\Goods::find($goods_id);
|
||
if (!$goods) {
|
||
return $this->renderError('盒子不存在');
|
||
}
|
||
|
||
# 检查是否有async_code,没有则生成
|
||
if (empty($goods['async_code'])) {
|
||
$async_code = $this->generateUUID();
|
||
$goods->async_code = $async_code;
|
||
$goods->async_date = date('Y-m-d H:i:s');
|
||
$goods->save();
|
||
} else {
|
||
$async_code = $goods['async_code'];
|
||
}
|
||
|
||
# 获取盒子奖品数据
|
||
$goodsList = \app\common\model\GoodsList::where('goods_id', $goods_id)->select()->toArray();
|
||
|
||
# 准备同步数据
|
||
$syncData = [
|
||
'goods' => $goods->toArray(),
|
||
'goodsList' => $goodsList,
|
||
'async_code' => $async_code,
|
||
'sync_time' => time()
|
||
];
|
||
|
||
# 发送到所有目标
|
||
$successCount = 0;
|
||
$failCount = 0;
|
||
$errorMessages = [];
|
||
|
||
foreach ($targets as $target) {
|
||
$result = $this->sendSyncData($target, $syncData);
|
||
if ($result['success']) {
|
||
$successCount++;
|
||
} else {
|
||
$failCount++;
|
||
$errorMessages[] = $target . ': ' . $result['message'];
|
||
}
|
||
}
|
||
|
||
# 更新同步状态
|
||
$goods->async_date = date('Y-m-d H:i:s');
|
||
$goods->save();
|
||
|
||
if ($failCount == 0) {
|
||
return $this->renderSuccess("同步成功,已成功同步到 {$successCount} 个目标");
|
||
} else if ($successCount > 0) {
|
||
return $this->renderSuccess("部分同步成功:{$successCount} 个成功,{$failCount} 个失败。\n失败信息:" . implode("\n", $errorMessages));
|
||
} else {
|
||
return $this->renderError("同步失败:" . implode("\n", $errorMessages));
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 生成UUID
|
||
*/
|
||
private function generateUUID()
|
||
{
|
||
return sprintf('%04x%04x-%04x-%04x-%04x-%04x%04x%04x',
|
||
mt_rand(0, 0xffff), mt_rand(0, 0xffff),
|
||
mt_rand(0, 0xffff),
|
||
mt_rand(0, 0x0fff) | 0x4000,
|
||
mt_rand(0, 0x3fff) | 0x8000,
|
||
mt_rand(0, 0xffff), mt_rand(0, 0xffff), mt_rand(0, 0xffff)
|
||
);
|
||
}
|
||
|
||
/**
|
||
* 发送同步数据到目标
|
||
*/
|
||
private function sendSyncData($target, $data)
|
||
{
|
||
try {
|
||
# 准备请求数据
|
||
$jsonData = json_encode($data);
|
||
|
||
# 初始化CURL
|
||
$ch = curl_init();
|
||
curl_setopt($ch, CURLOPT_URL, $target . "/api/goods/receive_sync");
|
||
curl_setopt($ch, CURLOPT_POST, 1);
|
||
curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonData);
|
||
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
||
curl_setopt($ch, CURLOPT_HTTPHEADER, [
|
||
'Content-Type: application/json',
|
||
'Content-Length: ' . strlen($jsonData)
|
||
]);
|
||
curl_setopt($ch, CURLOPT_TIMEOUT, 30); # 30秒超时
|
||
|
||
# 执行请求
|
||
$response = curl_exec($ch);
|
||
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
|
||
$error = curl_error($ch);
|
||
curl_close($ch);
|
||
|
||
if ($error) {
|
||
return ['success' => false, 'message' => "CURL错误: $error"];
|
||
}
|
||
|
||
if ($httpCode != 200) {
|
||
return ['success' => false, 'message' => "HTTP错误码: $httpCode"];
|
||
}
|
||
|
||
$result = json_decode($response, true);
|
||
if (!$result || !isset($result['status'])) {
|
||
return ['success' => false, 'message' => "无效的响应: $response"];
|
||
}
|
||
|
||
if ($result['status'] != 1) {
|
||
return ['success' => false, 'message' => $result['msg'] ?? '同步失败'];
|
||
}
|
||
|
||
return ['success' => true];
|
||
} catch (\Exception $e) {
|
||
return ['success' => false, 'message' => "异常: " . $e->getMessage()];
|
||
}
|
||
}
|
||
|
||
}
|