$out_trade_no)); if (empty($groupOrder)) { return false; } // checkPostData 校验数据是否正确 sign // $tt = time(); if ($groupOrder && self::ORDER_STATUS_WAIT_PAY == $groupOrder['state']) { $updateFields = ['state'=> self::ORDER_STATUS_HAS_PAY, 'pay_time' => $tt, 'wx_notify_data' => json_encode($postData, JSON_UNESCAPED_UNICODE)]; pdo_update('cjdc_grouporder', $updateFields, array('id' => $groupOrder['id'])); if (empty($groupOrder['group_id'])) { return ''; } $groupId = $groupOrder['group_id']; $count = pdo_get('cjdc_grouporder', array('group_id' => $groupId, 'state '=> self::ORDER_STATUS_HAS_PAY ), array('count(user_id) as count')); $group = pdo_get('cjdc_group', array('id' => $groupId)); if ($group['kt_num'] == $count['count']) { $state = Group::STATUS_SUCCESS; $callHeadURL = "https://".$_SERVER['HTTP_HOST'] . "/app/index.php?i=".$groupOrder['uniacid']."&c=entry&a=wxapp"; $sign = Config::genSign(['uniacid' => $groupOrder['uniacid'], 'group_id' => $groupId, 'timeStamp' => $tt]); Http::httpGet("{$callHeadURL}&do=SendOrdersToStore&m=zh_cjdianc&group_id={$groupId}&sign={$sign}&timeStamp={$tt}"); //把订单自动派发给门店 Http::httpGet("{$callHeadURL}&do=GroupPrint&m=zh_cjdianc&group_id={$groupId}&sign={$sign}&timeStamp={$tt}"); //拼团打印 Http::httpGet("{$callHeadURL}&do=GroupMessage&m=zh_cjdianc&group_id={$groupId}&sign={$sign}&timeStamp={$tt}"); //拼团模板消息 } else { $state = Group::STATUS_GROUPING; } //改变团状态 pdo_update('cjdc_group', array('state' => $state, 'yg_num +=' => 1), array('id' => $groupOrder['group_id'])); return true; } return false; } /** * 派送拼团订单给门店 * @param $group * @return array */ static function dispatchOrderToStore($group) { $e = [ 'success' => false, 'message' => '' ]; if (empty($group)) { $e['message'] = '无拼团'; return $e; } $groupOrders = pdo_getall('cjdc_grouporder', ['group_id' => $group['id'], 'state' => self::ORDER_STATUS_HAS_PAY]); if (empty($groupOrders)) { $e['message'] = '无订单!'; return $e; } foreach($groupOrders as $k => $groupOrder) { if (empty($groupOrder['dispatch_order_id'])) { continue; } $postData = json_decode($groupOrder['submit_data'], true); if (empty($postData)) { $e['message'] = 'dispatchOrder出错'; return $e; } $postData["type"] = Order::TYPE_GROUP; $postData['pay_time'] = date('Y-m-d H:i:s'); $postData["state"] = Order::ORDER_STATUS_FINISHING; unset($postData["isAdd"]); unset($postData["groupId"]); unset($postData["gType"]); $res = pdo_insert('cjdc_order', $postData); $orderId = pdo_insertid(); if (!$res) { continue; } pdo_update('cjdc_grouporder', ['dispatch_order_id' => $orderId], ['id' => $groupOrder['id']]); $orderGoodsArr = pdo_getall('cjdc_group_order_goods', ['order_id' => $groupOrder['id']]); $goodsTotalPrice = 0; foreach ($orderGoodsArr as $kk => $orderGoods) { $data2['name'] = $orderGoods['name']; //商品名称 $data2['number'] = $orderGoods['num']; //商品数量 $data2['money'] = $orderGoods['union_price']; //商品单价 $data2['img'] = $orderGoods['img']; //商品图片 $data2['spec'] = $orderGoods['spec']; //商品规格 $data2['dishes_id'] = $orderGoods['goods_id']; //商品id $data2['is_qg'] = 2; //不是抢购商品 $data2['uniacid'] = $orderGoods['uniacid']; //小程序id $data2['order_id'] = $orderId; $goodsTotalPrice = $goodsTotalPrice*1 + ($orderGoods['num']* $orderGoods['union_price']); $res2 = pdo_insert('cjdc_order_goods', $data2); } $financeData = ['pay_price' => $postData['money'], 'store_id' => $postData['store_id'], 'order_id' => $orderId,'order_type' => Order::TYPE_GROUP , 'goods_price' => $goodsTotalPrice ,'refund_price' => 0]; Finance::addOrderPriceStat($financeData); } $e['success'] = true; return $e; } /** * @param $_GPC * @param $_W * @param $data * @param $submitGoodsInfo * @return mixed */ static function placeGroupOrder($_GPC, $_W, $data, $submitGoodsInfo) { $tt = time(); $groupMemberNum = Group::G_2_NUM; // 防止恶意改变 主团人数,初始化只能 2 3 if (Group::G_3_NUM == $data['gType']) { $groupMemberNum = Group::G_3_NUM; } $submitGoods = $submitGoodsInfo[0]; $goodsPrice = $submitGoodsInfo[1]; $expireTime = Group::expireTime($_GPC['dq_time']); $group = null; $insertResult = null; if ($data['isAdd']) { if (empty($data['groupId'])) { $data2['store_id'] = $data['store_id']; $data2['kt_num'] = $groupMemberNum; //开团人数 $data2['yg_num'] = 0; //购买人数为1 $data2['kt_time'] = $tt; // 开团时间 $data2['dq_time'] = $expireTime; // 到期时间 expire_time 暂时这么处理,稍后调整 $data2['state'] = Group::STATUS_START; $data2['user_id'] = $_GPC['user_id']; $data2['uniacid'] = $_W['uniacid']; $insertResult = pdo_insert('cjdc_group', $data2); $data['groupId'] = pdo_insertid(); if (empty($insertResult) ) { $e['message'] = '下单失败'; return $e; } } } $group = pdo_get('cjdc_group', array('id' => $data['groupId'])); if (empty($group)) { $e['message'] = '找不到该团'; return $e; } if (empty($data['isAdd']) && $group['user_id'] == $_GPC['user_id']) { $e['message'] = '你已经开团了,请不要重复开团'; $e['code'] = 'HAS_OPEN'; return $e; } $saveData['order_num'] = self::genOrderNum(); //订单号 $saveData['user_id'] = $_GPC['user_id']; $saveData['group_id'] = $data['groupId']; //$saveData['logo'] = $_GPC['logo']; $saveData['store_id'] = $data['store_id']; $saveData['total_price'] = $goodsPrice + $data['box_money']*1 + $data['ps_money'] *1; $saveData['pay_price'] = $data['money']; $saveData['receive_name'] = $data['name']; $saveData['receive_tel'] = $data['tel']; $saveData['receive_address'] = $data['address']; $saveData['note'] = $data['note']; $saveData['time'] = $tt; $saveData['code'] = self::payCode($_GPC['user_id']); $saveData['xf_time'] = $expireTime; $saveData['uniacid'] = $_W['uniacid']; $saveData['pay_type'] = $data['pay_type']; $saveData['state'] = self::ORDER_STATUS_WAIT_PAY; $saveData['submit_data'] = json_encode($data, JSON_UNESCAPED_UNICODE); $groupOrderRes = pdo_insert('cjdc_grouporder', $saveData); $groupOrderId = pdo_insertid(); if (empty($groupOrderRes)) { $e['message'] = '提交订单失败'; return $e; } // 保存商品 if ($submitGoods && $groupOrderRes) { foreach ($submitGoods as $k => $goods) { $goodData = [ 'store_id' => $data['store_id'], 'order_id' => $groupOrderId, 'goods_id' => $goods['dishes_id'], 'name' => $goods['name'], 'logo' => $goods['img'], 'img' => $goods['img'], 'union_price' => $goods['money'], 'num' => $goods['number'], 'spec' => $goods['spec'], 'uniacid' => $goods['uniacid'], 'created_at' => $tt ]; pdo_insert('cjdc_group_order_goods', $goodData); } } if ($_GPC['coupon_id']) { pdo_update('cjdc_usercoupons', array('state' => 1), array('id' => $_GPC['coupon_id'])); } if ($_GPC['coupon_id2']) { pdo_update('cjdc_usercoupons', array('state' => 1), array('id' => $_GPC['coupon_id2'])); } pdo_delete('cjdc_shopcar', array('user_id' => $_GPC['user_id'], 'store_id' => $_GPC['store_id'], 'type' => 1)); $e['success'] = true; $e['message'] = 'ok'; $e['groupId'] = $data['groupId']; $e['orderId'] = $groupOrderId; return $groupOrderId; } }