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()]; } } }