/** * [addcodeAction 添加云码] * @return [type] [description] */ public function addcodeAction() { if ($this->request->isPost()) { if (!$this->validFlag) { $error = json_encode(array('ret' => 0, 'msg' => $this->warnMsg)); $this->view->setVars(array('error' => $error)); } else { for ($i = 0; $i < $this->_sanReq['num']; $i++) { $code = \Mall\Utils\Inputs::createCode(); $type = $this->_sanReq['type']; $starTime = strtotime($this->_sanReq['starTime']); $endTime = strtotime($this->_sanReq['endTime']); $goodsId = $this->_sanReq['gid']; $value .= "('" . $code . "', '" . $type . "', '" . $goodsId . "', '" . $starTime . "', '" . $endTime . "', '" . $_SERVER['REQUEST_TIME'] . "'),"; $values = "VALUES " . $value; } $this->code->batchInnserCode(trim($values, ',')); $this->log('云码添加成功'); $this->response->redirect("codes/index"); } } }
public function addCouponsAction() { if ($this->request->isPost()) { if (!$this->validFlag) { $error = json_encode(array('ret' => 0, 'msg' => $this->warnMsg)); } else { for ($i = 0; $i < $this->_sanReq['num']; $i++) { $cpsn = \Mall\Utils\Inputs::createCode('6'); $crid = $this->_sanReq['crid']; $starTime = strtotime($this->_sanReq['starTime']); $endTime = strtotime($this->_sanReq['endTime']); $status = $this->_sanReq['status']; $value .= "('" . $crid . "', '" . $cpsn . "', '" . $starTime . "', '" . $endTime . "', '" . $status . "', '" . $_SERVER['REQUEST_TIME'] . "'),"; $values = "VALUES " . $value; } $this->coupons->batchAddCoupons(trim($values, ',')); $this->log('添加优惠期成功'); $this->response->redirect("coupons/listCoupons"); } } $rule = $this->coupons->showCouponsRule(); $this->view->setVars(array('rule' => $rule, 'error' => isset($error) ? $error : '')); }
/** * 下单@L */ public function goAction() { if (!$this->validFlag || !$this->_sanReq['select']) { echo json_encode(array('ret' => 0, 'msg' => $this->warnMsg)); $this->view->disable(); return; } else { $select = json_decode($this->_sanReq['select'], true); //收货地址 $addr = (new \Mall\Mdu\AddressModule())->getAddrById($this->uid, $this->_sanReq['add_id']); //取快递费用 $shipFee = sprintf("%.2f", (new \Mall\Mdu\ShippingPayModule())->getShipPayByPro($addr['pro_id'])); //发票 if ($this->_sanReq['is_inv'] == 3) { $this->_sanReq['inv_type'] = 0; $this->_sanReq['inv_title'] = ''; } //订单编码 $orderSn = \Mall\Utils\Inputs::makeOrderSn(); //商品总价,订单金额 $totalFee = $paiedFee = 0; //优惠金额 备用 $paiedOffFee = 0; //立即购买 if (isset($select['n']) && $select['n'] > 0) { $goodsNum = intval($select['n']); //获取商品属性 以及判断库存 $gInfo = $this->cart->getGoodsInfo($this->uid, $select['g'], $select['a'], $goodsNum); if ($gInfo != 10000) { //单件商品是否超过最大购买量 if (intval($goodsNum) > self::MAX_NUM) { echo json_encode(array('ret' => 0)); $this->view->disable(); return; } if (!($goodsDates = $this->cart->getBuyNowNames($gInfo, $select['g'], $select['a']))) { echo json_encode(array('ret' => 0)); } else { //云码生效标识 $codeFlag = 0; //判断是否使用源码 if ($codeInfo = $this->di['session']->get('codeInfo')) { //重新获取云码信息 排除多终端记录的session $codeInfo = (new \Mall\Mdu\CodesModule())->getCodeInfo($codeInfo['yc_id']); $ids = explode(',', $codeInfo['yc_good_ids']); if ((in_array($select['g'], $ids) || $codeInfo['yc_good_ids'] == 0) && $codeInfo['yc_type'] == 3 && !$codeInfo['yc_used_time']) { if ($goodsNum != 1) { echo json_encode(array('ret' => 0)); $this->view->disable(); return false; } //源码暂时不使用运费 $paiedOffFee = sprintf('%.2f', $goodsDates['goods_price'] + $shipFee); $codeFlag = 1; } else { $this->session->remove('codeInfo'); } } //商品总价 $totalFee = sprintf('%.2f', $goodsDates['goods_price'] * $goodsNum); $paiedFee = sprintf('%.2f', $totalFee + $shipFee - $paiedOffFee); } } else { echo json_encode(array('ret' => 3)); } //下单 if ($this->order->addBuyNowOrder($this->uid, $this->mobi, $orderSn, $totalFee, $paiedFee, $paiedOffFee, $this->_sanReq['memo'], $shipFee, $this->_sanReq['is_inv'], $this->_sanReq['inv_type'], $this->_sanReq['inv_title'], $_SERVER['REQUEST_TIME'], $addr, $goodsDates, $goodsNum, $codeFlag) != 1) { echo json_encode(array('ret' => 0)); } } else { $attrsIds = $goodsIds = []; foreach ($select as $val) { array_push($attrsIds, $val['a']); array_push($goodsIds, $val['g']); } if (count($attrsIds) != count($goodsIds)) { exit(json_encode(array('ret' => 0))); } $data = $this->cart->getOrderDatas($this->uid, $goodsIds, $attrsIds); $goodsDates = $this->cart->getCartNames($data); if ($goodsDates == 10000 || !$goodsDates) { echo json_encode(array('ret' => 3)); $this->view->disable(); return; } else { //商品总价 $filterGoodsSum = 0; foreach ($goodsDates as $g) { $totalFee += sprintf('%.2f', $g['goods_price'] * $g['car_good_num']); } $paiedFee = sprintf('%.2f', $totalFee + $shipFee); } //下单 if ($this->order->addBuyCartOrder($this->uid, $this->mobi, $orderSn, $totalFee, $paiedFee, $paiedOffFee, $this->_sanReq['memo'], $shipFee, $this->_sanReq['is_inv'], $this->_sanReq['inv_type'], $this->_sanReq['inv_title'], $_SERVER['REQUEST_TIME'], $addr, $goodsDates, $attrsIds, $goodsIds) != 1) { echo json_encode(array('ret' => 0)); } } //clear cookie setcookie('cg', '', time() - 3600); echo json_encode(array('ret' => 1)); $this->view->disable(); return; } }
/** * [addBackOrder 添加售后订单] * * @param $uid * @param $data * @param $uname * @param $actRole * @return boolean */ public function addBackOrder($uid, $data, $uname, $actRole) { //判断订单是否存在,订单状态是否正确 $order = new \Mall\Mdu\Models\OrderModel(); if ($actRole == self::BORD_ACT_ROLE_BACKEND) { if (!($orderInfo = $order->getSpecifyOrderBySn($data['order_sn'], self::ORDER_STATUS_FINISHED))) { return array('ret' => 0, 'code' => self::MSG_ORDER_NONE); } } else { if (!($orderInfo = $order->getSpecifyOrder($uid, $data['order_sn'], self::ORDER_STATUS_FINISHED))) { return array('ret' => 0, 'code' => self::MSG_ORDER_NONE); } } $orderLogModel = new \Mall\Mdu\Models\OrderLogsModel(); //确认订单时间 $confirmTime = $orderLogModel->getLogTime($orderInfo['order_id'], self::LOG_TYPE_ORDER, $this->di['sysconfig']['orderActType']['received'])['ord_act_addtime']; $currentTime = $_SERVER["REQUEST_TIME"]; //判断是否超过该售后类型的售后时间 switch ($data['bord_type']) { case self::BORD_TYPE_BACK: //退货 if ($currentTime - $confirmTime > $this->di['sysconfig']['supportTime']['back']) { return array('ret' => 0, 'code' => self::MSG_BACK_EXPIRED); } break; case self::BORD_TYPE_EXCHANGE: //换货 if ($currentTime - $confirmTime > $this->di['sysconfig']['supportTime']['exchange']) { return array('ret' => 0, 'code' => self::MSG_CHANGE_EXPIRED); } break; case self::BORD_TYPE_EXCHANGE_MODULE: //更换智能模块 if ($currentTime - $confirmTime > $this->di['sysconfig']['supportTime']['exchangeModel']) { return array('ret' => 0, 'code' => self::MSG_MODULE_CHANGE_EXPIRED); } break; default: return array('ret' => 0, 'code' => self::MSG_BORD_TYPE_INVALID); } //判断省市区是否关联 if (!(new \Mall\Mdu\Models\RegionModel())->getSpecifyDis($data['pro'], $data['city'], $data['dis'])) { return array('ret' => 0, 'code' => self::ERROR); } $og = new \Mall\Mdu\Models\OrdergoodsModel(); if ($orderGoods = $og->getOrderGoodsById($data['order_goods_id'])) { $gnum = 0; //已售后数量 $goodsNums = $this->back->getBordGoodsNum($data['order_sn'], $orderGoods['attrs_barcode']); foreach ($goodsNums as $goodsNum) { $gnum += intval($goodsNum['bord_goods_num']); } if (intval($data['goods_num']) > intval($orderGoods['ord_goods_num']) - $gnum) { return array('ret' => 0, 'code' => self::MSG_BORD_NUM_OVERFLOW); } $data['bord_imgs'] = isset($data['pic']) ? $data['pic'] : ''; $data['order_id'] = $orderGoods['order_id']; $data['goods_name'] = $orderGoods['goods_name']; $data['goods_sn'] = $orderGoods['goods_sn']; $data['attrs_info'] = $orderGoods['attrs_info']; $data['attrs_barcode'] = $orderGoods['attrs_barcode']; $data['attrs_img'] = $orderGoods['attrs_img']; $data['tel'] = ''; if (!empty($data['area_code'])) { $data['tel'] .= $data['area_code'] . '-' . $data['tel_num']; if ($data['ext']) { $data['tel'] .= '-' . $data['ext']; } } $data['bord_sn'] = \Mall\Utils\Inputs::makeOrderSn(); //生成售后编号 $this->di['db']->begin(); if ($actRole == self::BORD_ACT_ROLE_BACKEND) { $bordId = $this->back->addBackOrderByAdmin($data['order_uid'], $data); } else { $bordId = $this->back->addBackOrder($uid, $data); } if (!$bordId) { $this->di['db']->rollback(); return array('ret' => 0, 'code' => self::ERROR); } //该订单商品允许的售后数量已全部用完 if (intval($data['goods_num']) + $gnum >= intval($orderGoods['ord_goods_num'])) { //将该订单商品设为已售后 if (!$og->setOrderGoodsBacked($data['order_goods_id'])) { $this->di['db']->rollback(); return array('ret' => 0, 'code' => self::ERROR); } } //写入售后日志 if (!$orderLogModel->addBordLog($bordId, $actRole, $this->di['sysconfig']['supportActType']['apply'], $uid, $uname, '申请售后')) { $this->di['db']->rollback(); return array('ret' => 0, 'code' => self::ERROR); } $this->di['db']->commit(); return array('ret' => 1, 'id' => $bordId); } }
/** * [创建新订单] * @param [array] $goodsData [订单商品详情] * @param [string] $consignee [收货人姓名] * @param [string] $mobi [收货人手机] * @param [string] $province [省id] * @param [string] $city [市id] * @param [string] $district [县id] * @param [string] $street [街道id] * @param [string] $addr [具体地址] * @param [string] $shippingFee [快递金额] * @param [string] $totalFee [总金额] * @return [string] [返回结果标志] */ public function createOrder($goodsData, $consignee, $mobi, $province, $city, $district, $street, $addr, $shippingFee, $totalFee) { if (!is_array($goodsData) && empty($goodsData)) { return array(self::GOODS_NONE); } $num = count($goodsData); foreach ($goodsData as $k => $val) { $goodsIds[$k] = $goodsAttrs[$k]['goodsId'] = $val['goodsId']; $goodsAttrs[$k]['goodsAttr'] = intval($val['colorId']) . ',' . intval($val['sizeId']); $colors[] = array('goodsId' => $val['goodsId'], 'attrId' => $val['colorId']); $sizes[] = array('goodsId' => $val['goodsId'], 'attrId' => $val['sizeId']); } $colorAttrs = $this->goods->getAttrNames($colors); $sizeAttrs = $this->goods->getAttrNames($sizes); $colorNum = count($colorAttrs); $sizeNum = count($sizeAttrs); //获取每条数据的颜色和尺码 for ($k = 0; $k < $num; $k++) { for ($m = 0; $m < $colorNum; $m++) { if ($goodsData[$k]['goodsId'] == $colorAttrs[$m]['goods_id'] && $goodsData[$k]['colorId'] == $colorAttrs[$m]['attrs_id']) { $goodsData[$k]['colorName'] = $colorAttrs[$m]['attrs_name']; break; } } for ($n = 0; $n < $sizeNum; $n++) { if ($goodsData[$k]['goodsId'] == $sizeAttrs[$n]['goods_id'] && $goodsData[$k]['sizeId'] == $sizeAttrs[$n]['attrs_id']) { $goodsData[$k]['sizeName'] = $sizeAttrs[$n]['attrs_name']; break; } } $goodsData[$k]['attrs_info'] = json_encode(array(array('id' => $goodsData[$k]['colorId'], 'name' => $goodsData[$k]['colorName']), array('id' => $goodsData[$k]['sizeId'], 'name' => $goodsData[$k]['sizeName']))); } //获取商品详情,比如尺码颜色属性,售价库存等等 $allAttrs = $this->goods->batchCheckNums($goodsAttrs); //取属性图片 $attrsImgs = $this->goods->getAttrsImg($goodsAttrs); $cou = count($allAttrs); if ($num != $cou) { return array(self::ATTR_NONE); } //获取商品的信息,比如货号商品名等等 $allInfos = $this->goods->batchGoodsInfo($goodsIds); if (empty($allInfos)) { return array(self::GOODS_NONE); } $infoNum = count($allInfos); for ($i = 0; $i < $cou; $i++) { $value = $allAttrs[$i]; $col = explode(',', $value['attrs_ids'])[0]; $allAttrs[$i]['attrs_img'] = $attrsImgs[$i][$col]; for ($j = 0; $j < $infoNum; $j++) { if ($allAttrs[$i]['goods_id'] == $allInfos[$j]['goods_id']) { $allAttrs[$i]['goods_sn'] = $allInfos[$j]['goods_sn']; $allAttrs[$i]['goods_name'] = $allInfos[$j]['goods_name']; $allAttrs[$i]['goods_market'] = $allInfos[$j]['goods_market']; $allAttrs[$i]['goods_price'] = $allInfos[$j]['goods_price']; break; } } for ($k = 0; $k < $num; $k++) { if ($allAttrs[$i]['goods_id'] == $goodsData[$k]['goodsId'] && $allAttrs[$i]['attrs_ids'] == $goodsData[$k]['colorId'] . ',' . $goodsData[$k]['sizeId']) { $allAttrs[$i]['goods_num'] = $goodsData[$k]['goodsNum']; $allAttrs[$i]['attrs_info'] = $goodsData[$k]['attrs_info']; break; } } } $this->di['db']->begin(); if ($orderId = $this->order->createOrder(\Mall\Utils\Inputs::makeOrderSn(), $consignee, $mobi, $province, $city, $district, $street, $addr, $shippingFee, $totalFee, $_SERVER['REQUEST_TIME'])) { if ($this->orderGoods->createOrderGoods($orderId, $allAttrs)) { $this->di['db']->commit(); return array(self::SUCCESS, $orderId); } else { $this->di['db']->rollback(); return array(self::ERROR); } } else { $this->di['db']->rollback(); return array(self::ERROR); } }