* @day: 2017/11/02 */ namespace app\models\auction; use app\admin\model\system\SystemConfig; use crmeb\traits\ModelTrait; use crmeb\basic\BaseModel; use http\Env\Request; use think\facade\Db; /** * 竞拍上坪 Model * Class WechatNews * @package app\admin\model\wechat */ class AuctionProduct extends BaseModel { use ModelTrait; protected $pk = 'id'; protected $name = 'auction_product'; protected $autoWriteTimestamp = true; /** * 用户商品 * @param $data * @param $uid * @return array * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\DbException * @throws \think\db\exception\ModelNotFoundException */ public static function user_product($data, $uid){ $model = self::where('uid', $uid)->order('sort DESC,id DESC'); $model->page($data['page'], $data['limit']); $list = $model->select()->toArray(); return $list; } public static function random($id, $uid) { $auction = Auction::find($id); AuctionOrder::startTrans(); $order = AuctionOrder::where([['auction_id', '=', $id], ['frequency', '=', $auction['frequency']]])->column('product_id'); $product = self::where('auction_id', $auction['id'])->where('id', 'notIn', $order)->orderRaw('rand()')->limit(1)->find(); // 随机出来一个商品 if (empty($product)){ $config = SystemConfig::where('config_tab_id', 24)->select(); $data = [ 'auction_id' => $auction['id'] ]; foreach ($config as $v) { if ($v['menu_name'] == 'product_name') $data['name'] = json_decode($v['value']); if ($v['menu_name'] == 'product_image') $data['image'] = json_decode($v['value']); if ($v['menu_name'] == 'product_slider_image') $data['slider_image'] = $v['value']; if ($v['menu_name'] == 'product_price') $data['price'] = json_decode($v['value']); if ($v['menu_name'] == 'product_hanging_price') $data['hanging_price'] = json_decode($v['value']); } $productSave = AuctionProduct::insertGetId($data);// 如果商品卖完,没达到预约量自动创建商品 $product = self::find($productSave); // 创建订单 $orderData = [ 'uid' => $uid, 'collection_id' => $product['uid'], 'order_id' => getNewOrderId(), 'auction_id' => $id, 'product_id' => $product['id'], 'name' => $product['name'], 'image' => $product['image'], 'price' => $product['hanging_price'], 'actual_price' => $product['hanging_price'] - $product['price'], 'create_time' => time(), 'frequency' => $auction['frequency'] ]; $res = AuctionOrder::create($orderData); if ($res) { AuctionOrder::comimt(); return $orderData; }else{ AuctionOrder::rollbackTrans(); return 'false'; } }else{ // 创建订单 $orderData = [ 'uid' => $uid, 'collection_id' => $product['uid'], 'order_id' => getNewOrderId(), 'auction_id' => $id, 'product_id' => $product['id'], 'name' => $product['name'], 'image' => $product['image'], 'price' => $product['hanging_price'], 'actual_price' => $product['hanging_price'] - $product['price'], 'create_time' => time(), 'frequency' => $auction['frequency'] ]; $res = AuctionOrder::create($orderData); if ($res) { AuctionOrder::commitTrans(); return $orderData; }else{ AuctionOrder::rollbackTrans(); return 'false'; } } } }