public function getCatProValue($params) { $objMdlCat = app::get('syscategory')->model('cat'); $filter['cat_id'] = $params['cat_id']; if ($filter['cat_id']) { $cat = $objMdlCat->getRow('level,is_leaf', $filter); if ($cat['level'] != 3) { throw new LogicException('cat_id必须为三级类目的id'); } } $propIds = explode(',', $params['prop_id']); if (!$params['prop_id']) { $objMdlCatRelProp = app::get('syscategory')->model('cat_rel_prop'); $catRelPropList = $objMdlCatRelProp->getList('*', $filter, 0, -1, 'order_sort ASC'); if (!$catRelPropList) { return array(); } $propIds = array_column($catRelPropList, 'prop_id'); } $objMdlProps = app::get('syscategory')->model('props'); $props = $objMdlProps->getList('*', array('prop_id' => $propIds, 'prop_type' => $params['type']), 0, -1, 'order_sort ASC'); $props = array_bind_key($props, 'prop_id'); $objMdlPropValues = app::get('syscategory')->model('prop_values'); $propValues = $objMdlPropValues->getList('*', array('prop_id' => $propIds)); foreach ($propValues as $key => $val) { $newPropValues[$val['prop_id']][$val['prop_value_id']] = $val; } foreach ($props as $key => $value) { $props[$key]['prop_value'] = $newPropValues[$value['prop_id']]; } return $props; }
public function getData($params) { $filter = $this->__filter($params); $data['trade_rates'] = array(); $countTotal = app::get('sysrate')->model('traderate')->count($filter); if ($countTotal) { $pageTotal = ceil($countTotal / $params['page_size']); $page = $params['page_no'] ? $params['page_no'] : 1; $limit = $params['page_size'] ? $params['page_size'] : 10; $currentPage = $pageTotal < $page ? $totalPage : $page; $offset = ($currentPage - 1) * $limit; $orderBy = $params['orderBy'] ? $params['orderBy'] : 'modified_time desc'; $data['trade_rates'] = app::get('sysrate')->model('traderate')->getList($params['fields']['rows'], $filter, $offset, $limit, $orderBy); if (isset($params['fields']['extends']['appeal'])) { foreach ((array) $data['trade_rates'] as $info) { if ($info['appeal_status'] != 'NO_APPEAL') { $rateIds[] = $info['rate_id']; } } if (!empty($rateIds)) { $appealData = app::get('sysrate')->model('appeal')->getList($params['fields']['extends']['appeal'], ['rate_id' => $rateIds]); $appealData = array_bind_key($appealData, 'rate_id'); } foreach ((array) $data['trade_rates'] as $key => $row) { $data['trade_rates'][$key]['appeal'] = $appealData[$row['rate_id']] ? $appealData[$row['rate_id']] : []; } } } $data['total_results'] = $countTotal; return $data; }
public function list_freepostage() { $this->contentHeaderTitle = app::get('topshop')->_('免邮管理'); $filter = input::get(); if (!$filter['pages']) { $filter['pages'] = 1; } $pageSize = 10; $params = array('page_no' => $pageSize * ($filter['pages'] - 1), 'page_size' => $pageSize, 'fields' => '*', 'shop_id' => $this->shopId); $freepostageListData = app::get('topshop')->rpcCall('promotion.freepostage.list', $params, 'seller'); $count = $freepostageListData['count']; $pagedata['freepostageList'] = $freepostageListData['freepostages']; //处理翻页数据 $current = $filter['pages'] ? $filter['pages'] : 1; $filter['pages'] = time(); if ($count > 0) { $total = ceil($count / $pageSize); } $pagedata['pagers'] = array('link' => url::action('topshop_ctl_promotion_freepostage@list_freepostage', $filter), 'current' => $current, 'total' => $total, 'token' => $filter['pages']); $gradeList = app::get('topshop')->rpcCall('user.grade.list'); // 组织会员等级的key,value的数组,方便取会员等级名称 $gradeKeyValue = array_bind_key($gradeList, 'grade_id'); // 增加列表中会员等级名称字段 foreach ($pagedata['freepostageList'] as &$v) { $valid_grade = explode(',', $v['valid_grade']); $checkedGradeName = array(); foreach ($valid_grade as $gradeId) { $checkedGradeName[] = $gradeKeyValue[$gradeId]['grade_name']; } $v['valid_grade_name'] = implode(',', $checkedGradeName); } $pagedata['now'] = time(); $pagedata['total'] = $count; return $this->page('topshop/promotion/freepostage/index.html', $pagedata); }
public function getList($params) { $objMdlCat = app::get('syscategory')->model('cat'); $row = "cat_id,cat_name,level,parent_id"; if ($params['fields']) { $row = $params['fields']; $row = str_append($row, 'cat_id'); } if ($params['cat_id']) { $filter['cat_id'] = explode(',', $params['cat_id']); } if ($params['cat_path']) { $filter['cat_path|has'] = ',' . $params['cat_path'] . ','; } if (isset($params['parent_id']) && intval($params['parent_id']) >= 0) { $filter['parent_id'] = $params['parent_id']; } elseif (is_array($params['parent_id'])) { $filter['parent_id'] = explode(',', $params['parent_id']); } if ($params['cat_name'] && $params['level']) { $filter['cat_name'] = $params['cat_name']; $filter['level'] = $params['level']; } if ($params['level']) { $filter['level'] = $params['level']; } $catList = $objMdlCat->getList($row, $filter); return array_bind_key($catList, 'cat_id'); }
public function tradeList($params) { if ($params['oauth']['account_id'] && $params['oauth']['auth_type'] == "member") { $params['user_id'] = $params['oauth']['account_id']; } elseif ($params['oauth']['account_id'] && $params['oauth']['auth_type'] == "shop") { $sellerId = $params['oauth']['account_id']; $params['shop_id'] = app::get('systrade')->rpcCall('shop.get.loginId', array('seller_id' => $sellerId), 'seller'); } $tradeRow = $params['fields']['rows']; $orderRow = $params['fields']['extends']['order']; $activityRow = $params['fields']['extends']['activity']; //分页使用 $pageSize = $params['page_size'] ? $params['page_size'] : 40; $pageNo = $params['page_no'] ? $params['page_no'] : 1; $max = 1000000; if ($pageSize >= 1 && $pageSize < 500 && $pageNo >= 1 && $pageNo < 200 && $pageSize * $pageNo < $max) { $limit = $pageSize; $page = ($pageNo - 1) * $limit; } $orderBy = $params['orderBy']; if (!$params['orderBy']) { $orderBy = "created_time desc"; } unset($params['fields'], $params['page_no'], $params['page_size'], $params['order_by'], $params['oauth']); foreach ($params as $k => $val) { if (!$val) { unset($params[$k]); continue; } if ($k == "status" || $k == "tid") { $params[$k] = explode(',', $val); } } $objMdlTrade = app::get('systrade')->model('trade'); $count = $objMdlTrade->count($params); $tradeLists = $objMdlTrade->getList($tradeRow, $params, $page, $limit, $orderBy); $tradeLists = array_bind_key($tradeLists, 'tid'); if ($orderRow && $tradeLists) { $orderRow = str_append($orderRow, 'tid'); $objMdlOrder = app::get('systrade')->model('order'); $tids = array_column($tradeLists, 'tid'); $orderLists = $objMdlOrder->getList($orderRow, array('tid' => $tids)); //是否需要显示标签促销tag if ($activityRow && $orderLists) { $oids = array_column($orderLists, 'oid'); $promotionActivityData = app::get('systrade')->model('promotion_detail')->getList('promotion_tag,oid', ['promotion_type' => 'activity', 'oid' => $oids]); //一个子订单只可参加一次标签促销活动 $promotionActivityData = array_bind_key($promotionActivityData, 'oid'); } foreach ($orderLists as $key => $value) { if ($promotionActivityData[$value['oid']]['promotion_tag']) { $value['promotion_tag'] = $promotionActivityData[$value['oid']]['promotion_tag']; } $tradeLists[$value['tid']]['order'][] = $value; } } $trade['list'] = $tradeLists; $trade['count'] = $count; return $trade; }
public function tradeList($params, $oauth) { if (isset($oauth['shop_id'])) { $params['shop_id'] = $oauth['shop_id']; } else { if ($params['oauth']['account_id'] && $params['oauth']['auth_type'] == "member") { $params['user_id'] = $params['oauth']['account_id']; } elseif ($params['oauth']['account_id'] && $params['oauth']['auth_type'] == "shop") { $sellerId = $params['oauth']['account_id']; $params['shop_id'] = app::get('systrade')->rpcCall('shop.get.loginId', array('seller_id' => $sellerId), 'seller'); } } $tradeRow = $params['fields']['rows']; $orderRow = $params['fields']['extends']['order']; //lastmodify的范围划分 if ($params['update_time_start'] > 0 && $params['update_time_end'] > 0) { $params['modified_time|between'] = array($params['update_time_start'], $params['update_time_end']); } unset($params['update_time_start']); unset($params['update_time_end']); //分页使用 $pageSize = $params['page_size'] ? $params['page_size'] : 40; $pageNo = $params['page_no'] ? $params['page_no'] : 1; $max = 1000000; if ($pageSize >= 1 && $pageSize < 500 && $pageNo >= 1 && $pageNo < 200 && $pageSize * $pageNo < $max) { $limit = $pageSize; $page = ($pageNo - 1) * $limit; } $orderBy = $params['orderBy']; if (!$params['orderBy']) { $orderBy = "created_time desc"; } unset($params['fields'], $params['page_no'], $params['page_size'], $params['order_by'], $params['oauth']); foreach ($params as $k => $val) { if (!$val) { unset($params[$k]); continue; } if ($k == "status" || $k == "tid") { $params[$k] = explode(',', $val); } } $objMdlTrade = app::get('systrade')->model('trade'); $count = $objMdlTrade->count($params); $tradeLists = $objMdlTrade->getList($tradeRow, $params, $page, $limit, $orderBy); $tradeLists = array_bind_key($tradeLists, 'tid'); if ($orderRow && $tradeLists) { $orderRow = str_append($orderRow, 'tid'); $objMdlOrder = app::get('systrade')->model('order'); $tids = array_column($tradeLists, 'tid'); $orderLists = $objMdlOrder->getList($orderRow, array('tid' => $tids)); foreach ($orderLists as $key => $value) { $tradeLists[$value['tid']]['order'][] = $value; } } $trade['list'] = $tradeLists; $trade['count'] = $count; return $trade; }
public function get($params) { $fields = $params['fields'] ? $params['fields'] : "*"; $filter['item_id'] = $params['item_id']; $objMdlItemCount = app::get('sysitem')->model('item_count'); $itemInfoCount = $objMdlItemCount->getList($fields, $filter); return array_bind_key($itemInfoCount, 'item_id'); }
public function getList($params) { $prop_id = explode(',', $params['prop_id']); $objMdlProps = app::get('syscategory')->model('props'); $props = $objMdlProps->getList('*', array('prop_id' => $prop_id)); $props = array_bind_key($props, 'prop_id'); return $props; }
public function index() { $objLibFilter = kernel::single('topc_item_filter'); $params = $objLibFilter->decode(input::get()); $params['use_platform'] = '0,1'; //判断自营 自营是1,非自营是0 if ($params['is_selfshop'] == '1') { $pagedata['isself'] = '0'; } else { $pagedata['isself'] = '1'; } //如果不是从分类进入,并且没有关键字搜索则不能进入列表页 $params['search_keywords'] = trim($params['search_keywords']); if (empty($params['cat_id']) && empty($params['search_keywords'])) { return redirect::back(); } //默认图片 $pagedata['image_default_id'] = app::get('image')->getConf('image.set'); //搜索或者筛选获取商品 $searchParams = $this->__preFilter($params); $searchParams['fields'] = 'item_id,title,image_default_id,price,promotion.ids'; $itemsList = app::get('topc')->rpcCall('item.search', $searchParams); //检测是否有参加团购活动 if ($itemsList['list']) { $itemsList['list'] = array_bind_key($itemsList['list'], 'item_id'); $itemIds = array_keys($itemsList['list']); $activityParams['item_id'] = implode(',', $itemIds); $activityParams['status'] = 'agree'; $activityParams['end_time'] = 'bthan'; $activityParams['start_time'] = 'sthan'; $activityParams['fields'] = 'activity_id,item_id,activity_tag,price,activity_price'; $activityItemList = app::get('topc')->rpcCall('promotion.activity.item.list', $activityParams); if ($activityItemList['list']) { foreach ($activityItemList['list'] as $key => $value) { $itemsList['list'][$value['item_id']]['activity'] = $value; $itemsList['list'][$value['item_id']]['price'] = $value['activity_price']; } } } //根据条件搜索出最多商品的分类,进行显示渐进式筛选项 $filterItems = app::get('topc')->rpcCall('item.search.filterItems', $params); //渐进式筛选的数据 $pagedata['screen'] = $filterItems; $pagedata['items'] = $itemsList['list']; //根据条件搜索出的商品 $pagedata['count'] = $itemsList['total_found']; //根据条件搜索到的总数 //已有的搜索条件 $tmpFilter = $params; unset($tmpFilter['pages']); $pagedata['filter'] = $objLibFilter->encode($tmpFilter); //分页 $pagedata['pagers'] = $this->__pages($params['pages'], $pagedata['count'], $pagedata['filter']); //已选择的搜索条件 $pagedata['activeFilter'] = $params; return $this->page('topc/list/index.html', $pagedata); }
public function getList($params) { $filter['shop_id'] = explode(',', $params['shop_id']); $objMdlShop = app::get('sysshop')->model('shop'); $objMdlshopType = app::get('sysshop')->model('shop_type'); $shopdata = $objMdlShop->getList('shop_id,shop_name,shop_type', $filter); $type = $objMdlshopType->getList('suffix,shop_type'); $type = array_bind_key($type, 'shop_type'); foreach ($shopdata as $value) { $shopName[$value['shop_id']] = $value['shop_name'] . $type[$value['shop_type']]['suffix']; } return $shopName; }
public function modifier_activity_id(&$colList) { foreach ($colList as $id) { $activityIds[] = $id; } // shop.get.list $data = app::get('syspromotion')->model('activity')->getList('activity_name,activity_id', array('activity_id' => $activityIds)); $data = array_bind_key($data, 'activity_id'); foreach ($colList as $k => $row) { if ($data[$row]['activity_name']) { $colList[$k] = $data[$row]['activity_name']; } } }
public function couponDetail() { $coupon_id = input::get('coupon_id'); $pagedata['couponInfo'] = app::get('topm')->rpcCall('promotion.coupon.get', array('coupon_id' => $coupon_id)); // 获取会员等级名称 $validGrade = explode(',', $pagedata['couponInfo']['valid_grade']); $gradeList = app::get('topm')->rpcCall('user.grade.list', array(), 'buyer'); $gradeNameArr = array_bind_key($gradeList, 'grade_id'); $validGradeNameArr = array(); foreach ($validGrade as $v) { $validGradeNameArr[] = $gradeNameArr[$v]['grade_name']; } $pagedata['couponInfo']['valid_grade_name'] = implode(',', $validGradeNameArr); return $this->page('topm/member/coupon/couponDetail.html', $pagedata); }
public function get($params) { $objMdlSeller = app::get('sysshop')->model('seller'); $data = $objMdlSeller->getList('*', ['shop_id' => $params['shop_id'], 'seller_type' => '1']); if (empty($data)) { return array(); } $sellerIds = array_column($data, 'seller_id'); $accountData = app::get('sysshop')->model('account')->getList('seller_id,login_account,disabled', ['seller_id' => $sellerIds]); $data = array_bind_key($data, 'seller_id'); foreach ($accountData as $row) { if ($data[$row['seller_id']]) { $data[$row['seller_id']]['login_account'] = $row['login_account']; $data[$row['seller_id']]['disabled'] = $row['disabled']; } } return $data; }
public function search() { $tradeStatus = array('WAIT_BUYER_PAY' => '等待付款', 'WAIT_SELLER_SEND_GOODS' => '等待发货', 'WAIT_BUYER_CONFIRM_GOODS' => '等待确认收货', 'TRADE_FINISHED' => '已完成', 'TRADE_CLOSED' => '已关闭', 'TRADE_CLOSED_BY_SYSTEM' => '已关闭'); $this->contentHeaderTitle = app::get('topshop')->_('订单查询'); $postFilter = input::get(); $filter = $this->_checkParams($postFilter); $limit = $this->limit; $status = $filter['status']; if (is_array($filter['status'])) { $status = implode(',', $filter['status']); } $page = $filter['pages'] ? $filter['pages'] : 1; $params = array('status' => $status, 'tid' => $filter['tid'], 'create_time_start' => $filter['created_time_start'], 'create_time_end' => $filter['created_time_end'], 'page_no' => $page, 'page_size' => $limit, 'order_by' => 'created_time desc', 'fields' => 'tid,shop_id,user_id,status,payment,total_fee,post_fee,payed_fee,receiver_name,created_time,receiver_mobile,discount_fee,adjust_fee,order.title,order.price,order.num,order.pic_path,order.tid,order.oid,order.item_id,need_invoice,invoice_name,invoice_type,invoice_main,pay_type'); $tradeList = app::get('topshop')->rpcCall('trade.get.list', $params, 'seller'); $count = $tradeList['count']; $tradeList = $tradeList['list']; foreach ($tradeList as $key => $value) { $usersId[] = $value['user_id']; if ($value['status'] == 'WAIT_SELLER_SEND_GOODS') { $tids[] = $value['tid']; $tradeList[$key]['is_apply_abnormal'] = true; } else { $tradeList[$key]['is_apply_abnormal'] = false; //不能申请取消异常订单 } } if ($tids) { $abnormalData = app::get('topshop')->rpcCall('trade.abnormal.list.get', ['role' => 'seller', 'tid' => $tids, 'fields' => 'tid']); $tradeAnormalData = array_bind_key($abnormalData['tradeAnormal'], 'tid'); } $username = app::get('topshop')->rpcCall('user.get.account.name', ['user_id' => implode(',', $usersId)], 'seller'); foreach ($tradeList as $key => $value) { $tradeList[$key]['status_depict'] = $tradeStatus[$value['status']]; $tradeList[$key]['user_login_name'] = $username[$value['user_id']]; if ($tradeAnormalData[$value['tid']]) { $tradeList[$key]['is_apply_abnormal'] = false; } } $pagedata['orderlist'] = $tradeList; $pagedata['count'] = $count; $pagedata['image_default_id'] = app::get('image')->getConf('image.set'); $pagedata['pagers'] = $this->__pager($postFilter, $page, $count); return view::make('topshop/trade/item.html', $pagedata); }
/** * 将image表中的历史数据转存到images中 */ public function move() { $objImage = app::get('image')->model('image'); $objImages = app::get('image')->model('images'); $db = app::get('systrade')->database(); $count = $objImage->count(); logger::info(sprintf('Total %d image', $count)); logger::info(sprintf('image data from sdb_image_image move to sdb_image_images ... start.')); $pagesize = 10; for ($i = 0; $i < $count; $i += $pagesize) { $oldImages = $objImage->getList('*', array(), $i, $pagesize); if (empty($oldImages)) { continue; } $imageIds = array_column($oldImages, 'image_id'); $oldImagesAttach = app::get('image')->model('image_attach')->getList('*', array('image_id' => $imageIds)); $oldImagesAttach = array_bind_key($oldImagesAttach, 'image_id'); foreach ($oldImages as $row) { $insert = array(); if (!$row['ident']) { continue; } if (!file_exists(MEDIA_DIR . $row['ident'])) { continue; } $insert['storage'] = $row['storage']; $insert['image_name'] = $row['image_name']; $insert['ident'] = $row['ident']; $insert['url'] = kernel::get_host_mirror_img() . str_replace(PUBLIC_DIR, '', MEDIA_DIR) . $row['ident']; $insert['width'] = $row['width']; $insert['height'] = $row['height']; $insert['last_modified'] = $row['last_modified']; $insert['target_id'] = $oldImagesAttach[$row['image_id']]['target_id']; $insert['target_type'] = $oldImagesAttach[$row['image_id']]['target_type']; try { $objImages->insert($insert); } catch (Exception $e) { print_r($e); } } } logger::info(sprintf('image data from sdb_image_image move to sdb_image_images ... ok.' . "\n")); return true; }
public function doDelivery($params, $oauth) { if ($oauth['shop_id']) { $params['shop_id'] = $oauth['shop_id']; } $item = json_decode($params['items'], true); unset($params['items']); $item = $this->__checkItems($item); if (!$item) { throw new LogicException('发货明细不存在'); } $oids = array_column($item, 'oid'); $db = app::get('systrade')->database(); $db->beginTransaction(); try { //更新订单发货状态 $tradeData = array('tid' => $params['tid'], 'status' => 'WAIT_BUYER_CONFIRM_GOODS', 'consign_time' => time()); $objMdlOrder = app::get('systrade')->model('order'); $orders = $objMdlOrder->getList('sendnum,oid', array('oid' => $oids)); $orders = array_bind_key($orders, 'oid'); $objMath = kernel::single('ectools_math'); foreach ($item as $value) { $updateData['sendnum'] = $objMath->number_plus(array($value['number'], $orders[$value['oid']]['sendnum'])); $updateData['status'] = "WAIT_BUYER_CONFIRM_GOODS"; $updateData['oid'] = $value['oid']; $updateData['consign_time'] = time(); $isSave = $objMdlOrder->save($updateData); if (!$isSave) { throw new LogicException("更新子订单发货状态失败"); } } $objMdlTrade = app::get('systrade')->model('trade'); $issave = $objMdlTrade->save($tradeData); if (!$issave) { throw new LogicException("更新订单发货状态失败"); } $db->commit(); } catch (Exception $e) { $db->rollback(); throw $e; } return true; }
/** * ShopEx licence * * @copyright Copyright (c) 2005-2010 ShopEx Technologies Inc. (http://www.shopex.cn) * @license http://ecos.shopex.cn/ ShopEx License */ function theme_widget_shop_coupons(&$setting) { if (!$setting['coupons']) { return $setting; } $params['coupon_id'] = implode(',', $setting['coupons']); $params['fields'] = "coupon_id,shop_id,coupon_name,deduct_money"; $data = app::get('topc')->rpcCall('promotion.coupon.list.byid', $params); $shopIds = array_column($data, 'shop_id'); $shopData = app::get('topc')->rpcCall('shop.get.list', ['shop_id' => $shopIds, 'fields' => 'shop_id,shop_name,shop_logo']); $shop = array_bind_key($shopData, 'shop_id'); foreach ($data as &$row) { $row['deduct_money'] = intval($row['deduct_money']); $row['shop_logo'] = $shop[$row['shop_id']]['shop_logo']; $row['shop_name'] = $shop[$row['shop_id']]['shop_name']; } $setting['data'] = $data; return $setting; }
public function get($params) { if (!$params['brand_id'] && !$params['brand_name']) { throw new \LogicException(app::get('sysspfb')->_('id 和name 至少一项必填')); } if ($params['brand_id']) { $filter['brand_id'] = explode(',', $params['brand_id']); } if ($params['brand_name']) { $filter['brand_name'] = explode(',', $params['brand_name']); } $rows = "brand_name,brand_id,brand_alias,order_sort,brand_logo,brand_desc"; if ($params['fields']) { $rows = $params['fields']; $rows = str_append($rows, 'brand_id'); } $objMdlBrand = app::get('sysspfb')->model('brand'); $brandList = $objMdlBrand->getList($rows, $filter); return array_bind_key($brandList, 'brand_id'); }
public function create($params) { $oids = array_column($params['items']['oid']); $item = array_bind_key($params['items'], 'oid'); $oids = implode(',', $oids); $fields = "tid,receiver_name,receiver_mobile,receiver_state,receiver_district,receiver_address,need_invoice,invoice_type,invoice_name,invoice_main,post_fee,orders.tid,orders.oid,orders.sku_id,orders.bn,orders.title,orders.num"; $filter = array('tid' => $params['tid'], 'shop_id' => $params['shop_id'], 'seller_id' => $params['seller_id'], 'user_id' => $params['user_id'], 'fields' => $fields, 'oid' => $oids); $trades = app::get('syslogistics')->rpcCall('trade.get', $filter); $orders = array_bind_key($trades['orders'], 'oid'); $deliveryId = $params['delivery_id']; $delivery = array('delivery_id' => $deliveryId, 'tid' => $trades['tid'], 'post_fee' => $trades['post_fee'], 'receiver_name' => $trades['receiver_name'], 'receiver_state' => $trades['receiver_state'], 'receiver_city' => $trades['receiver_city'], 'receiver_district' => $trades['receiver_district'], 'receiver_address' => $trades['receiver_address'], 'receiver_zip' => $trades['receiver_zip'], 'receiver_mobile' => $trades['receiver_mobile'], 'receiver_phone' => $trades['receiver_phone'], 'shop_id' => $params['shop_id'], 'user_id' => $params['user_id'], 'seller_id' => $params['seller_id'], 'logi_id' => $params['corp_id'], 'logi_name' => $params['corp_name'], 'corp_code' => $params['corp_code'], 'logi_no' => trim($params['logi_no']), 'dlytmpl_id' => $params['template_id'], 'memo' => $params['memo'], 'is_protect' => 0, 'status' => "succ", 't_send' => time(), 't_confirm' => time(), 't_begin' => time()); $objMdlDelivery = app::get('syslogistics')->model('delivery'); $objMdlDeliveryDetail = app::get('syslogistics')->model('delivery_detail'); $db = app::get('syslogistics')->database(); $db->beginTransaction(); try { $result = $objMdlDelivery->save($delivery); if (!$result) { throw new \LogicException('发货单创建失败'); } foreach ($item as $order) { if ($orders[$order['oid']]) { $order['delivery_id'] = $result; $order['item_type'] = "item"; $isSave = $objMdlDeliveryDetail->save($order); if (!$isSave) { throw new \LogicException("发货单明细保存失败"); } } else { throw new \LogicException("被发货的子订单不存在"); } } $filter = array('tid' => $params['tid'], 'items' => json_encode($item), 'shop_id' => $params['shop_id']); app::get('syslogistics')->rpcCall('trade.update.delivery.status', $filter); $db->commit(); } catch (Exception $e) { $db->rollback(); throw $e; } return $result; }
/** * 获取单笔订单数据 * * @param string $fields 需要返回的约束字段 * @param int $tid 订单编号 * @param int|array $oid 子订单编号 */ public function getTradeInfo($fields, $tid, $oid = null, $filter) { $filter['tid'] = $tid; $tradeInfo = $this->objMdlTrade->getRow($fields['rows'], $filter); if (!$tradeInfo) { return array(); } if (!isset($fields['extends']['orders'])) { return $tradeInfo; } $ordersFilter['tid'] = $tid; if ($oid) { $ordersFilter['oid'] = $oid; } if (strrpos($fields['rows'], 'buyer_rate')) { $fields['extends']['orders'] = $fields['extends']['orders'] . ',aftersales_status,status,end_time,buyer_rate'; //临时 } $ordersFields = $fields['extends']['orders']; $orders = $this->objMdlOrder->getList($ordersFields . ',oid', $ordersFilter); if ($fields['extends']['activity'] && $orders) { $oids = array_column($orders, 'oid'); $promotionActivityData = app::get('systrade')->model('promotion_detail')->getList('promotion_tag,oid', ['promotion_type' => 'activity', 'oid' => $oids]); //一个子订单只可参加一次标签促销活动 $promotionActivityData = array_bind_key($promotionActivityData, 'oid'); } foreach ($orders as $k => $value) { if (!$value['aftersales_status'] && $value['buyer_rate'] == '0' && $value['status'] == 'TRADE_FINISHED' && time() - $value['end_time'] < 15 * 24 * 3600) { $orders[$k]['buyer_rate'] = '0'; $tradeInfo['buyer_rate'] = '0'; } else { $orders[$k]['buyer_rate'] = '1'; } if ($promotionActivityData[$value['oid']]['promotion_tag']) { $orders[$k]['promotion_tag'] = $promotionActivityData[$value['oid']]['promotion_tag']; } } $tradeInfo['orders'] = $orders; return $tradeInfo; }
public function getList($params) { $objMdlItem = app::get('sysitem')->model('item'); $row = $params['fields']['rows']; //分页使用 $pageSize = $params['page_size'] ? $params['page_size'] : 40; $pageNo = $params['page_no'] ? $params['page_no'] : 1; $max = 1000000; if ($pageSize >= 1 && $pageSize < 500 && $pageNo >= 1 && $pageSize * $pageNo < $max) { $limit = $pageSize; $page = ($pageNo - 1) * $limit; } $orderBy = $params['orderBy']; if (!$params['orderBy']) { $orderBy = "modified_time desc,list_time desc"; } $data = kernel::single('search_object')->instance('item')->page($page, $limit)->buildExcerpts($params['buildExcerpts'], 'title')->orderBy($orderBy)->search($row, $this->__getFilter($params)); $itemIds = array_column($data['list'], 'item_id'); if ($itemIds && $params['fields']['extends']['store']) { $itemStore = kernel::single('sysitem_item_info')->getItemStore($itemIds); } if ($itemIds && $params['fields']['extends']['promotion']) { $promotionTag = app::get('sysitem')->model('item_tag_promotion')->getList('*', array('item_id' => $itemIds)); $promotionTag = array_bind_key($promotionTag, 'item_id'); } if ($itemStore || $promotionTag) { foreach ($data['list'] as $key => &$value) { if ($itemStore) { $value['store'] = $itemStore[$value['item_id']]['store']; $value['freez'] = $itemStore[$value['item_id']]['freez']; } if ($promotionTag) { $value['promotion']['ids'] = $promotionTag[$value['item_id']]['promotion_ids']; $value['promotion']['tags'] = $promotionTag[$value['item_id']]['promotion_tags']; } } } return $data; }
public function deliveryTrade($params) { $db = app::get('systrade')->database(); $db->beginTransaction(); try { $objLibTrade = kernel::single('systrade_data_trade'); $tradeInfo = $objLibTrade->getTradeInfo('post_fee', array('tid' => $params['tid'])); //更新发货单状态 $deliveryData = array('delivery_id' => $params['delivery_id'], 'template_id' => $params['template_id'], 'logi_no' => $params['logi_no'], 'tid' => $params['tid'], 'post_fee' => $tradeInfo['post_fee'] ? $tradeInfo['post_fee'] : 0, 'corp_code' => $params['corp_code']); $result = app::get('systrade')->rpcCall('delivery.update', $deliveryData); $detail = array_bind_key($result['detail'], "oid"); //更新订单发货状态 $tradeData = array('tid' => $params['tid'], 'status' => 'WAIT_BUYER_CONFIRM_GOODS', 'consign_time' => time()); $objMdlOrder = app::get('systrade')->model('order'); $objMath = kernel::single('ectools_math'); foreach ($tradeInfo['order'] as $value) { $updateData['sendnum'] = $objMath->number_plus(array($value['sendnum'], $detail[$value['oid']]['number'])); $updateData['status'] = "WAIT_BUYER_CONFIRM_GOODS"; $updateData['oid'] = $value['oid']; $updateData['consign_time'] = time(); $isSave = $objMdlOrder->save($updateData); if (!$isSave) { throw new LogicException("更新子订单发货状态失败"); } } $objMdlTrade = app::get('systrade')->model('trade'); $issave = $objMdlTrade->save($tradeData); if (!$issave) { throw new LogicException("更新订单发货状态失败"); } $db->commit(); } catch (Exception $e) { $db->rollback(); throw $e; } return true; }
public function getAftersalesList($fields, $filter, $page = 1, $limit, $orderBy = "created_time desc") { if (empty($filter['user_id']) && empty($filter['shop_id'])) { throw new \LogicException(app::get('sysaftersales')->_('会员ID或者店铺ID必填一项')); } $pageData = $this->__preAftersalesListPage($filter, $page, $limit); $aftersalesList = $this->objMdlAftersales->getList($fields['rows'], $filter, $pageData['offset'], $limit, $orderBy); if (empty($aftersalesList)) { return array(); } if ($aftersalesList && isset($fields['extends']['sku'])) { foreach ($aftersalesList as $value) { $tradeFiltr['oid'][] = $value['oid']; } $tradeFiltr['oids'] = implode(',', $tradeFiltr['oid']); $tradeFiltr['fields'] = $fields['extends']['sku'] != '*' ? $fields['extends']['sku'] : $this->aftersalesSkuFields; $skuData = app::get('sysaftersales')->rpcCall('trade.order.list.get', $tradeFiltr); $skuData = array_bind_key($skuData, 'oid'); foreach ($aftersalesList as $k => $row) { $aftersalesList[$k]['sku'] = $skuData[$row['oid']]; } } return $aftersalesList; }
/** * @brief 根据条件查询店铺信息 * * @param string $row 需要获取的字段 * @param array $filter 查询条件 * @param bool $isRow 是否为查询单条数据 * * @return array */ public function getShopInfo($row, $filter, $isRow = true) { $row = str_append($row, 'shop_name,shop_type'); $objMdlShop = app::get('sysshop')->model('shop'); $objMdlShopType = app::get('sysshop')->model('shop_type'); $shopData = $objMdlShop->getList($row, $filter); $shopTypeData = $objMdlShopType->getList('suffix,name,shop_type'); $type = array_bind_key($shopTypeData, 'shop_type'); foreach ($shopData as $k => &$rowData) { //为店铺名称填充后缀 if ($rowData['shop_name'] && $rowData['shop_type']) { $rowData['shopname'] = $rowData['shop_name'] . $type[$rowData['shop_type']]['suffix']; $rowData['shoptype'] = $type[$rowData['shop_type']]['name']; } if ($isRow) { break; } } return $isRow ? $shopData[0] : $shopData; }
/** * @brief 根据条件获取购物车信息 * * @param array $filter * * @return array */ public function getCartInfo($filter = array(), $needInvalid = true, $platform = 'pc') { $aCart = array(); $data = $this->getBasicCartInfo($filter); if (!$data) { return $aCart; } $itemsData = $data['itemsData']; $skusData = $data['skusData']; $shopIds = implode(',', $data['shopIds']); $shopNameArr = app::get('systrade')->rpcCall('shop.get.list', array('shop_id' => $shopIds, 'fields' => 'shop_id,shop_type,shop_name')); $shopNameArr = array_bind_key($shopNameArr, 'shop_id'); $result = $this->__preCartInfo($data['cartData'], $shopNameArr, $itemsData, $skusData, $needInvalid, $platform); $aCart['resultCartData'] = $result['resultCartData']; $aCart['totalCart'] = $result['totalCart']; if (empty($aCart['resultCartData'])) { $aCart = array(); } return $aCart; }
public function search() { $shopId = input::get('shop_id'); $pagedata = $this->__common($shopId); $objLibFilter = kernel::single('topc_item_filter'); $params = $objLibFilter->decode(input::get()); $params['use_platform'] = '0,1'; if ($params['shop_id']) { $pagedata['shopCat'] = $shopCat = app::get('topc')->rpcCall('shop.cat.get', array('shop_id' => $params['shop_id'])); //echo "<pre>"; print_r($shopCat); exit; } if ($params['shop_cat_id'] && $shopCat[$params['shop_cat_id']]) { $params['shop_cat_id'] = array_keys($shopCat[$params['shop_cat_id']]['children']); $params['shop_cat_id'] = implode(',', $params['shop_cat_id']); } $searchParams = $params; $searchParams['page_no'] = $params['pages'] && $params['pages'] <= 100 ? $params['pages'] : 1; $searchParams['page_size'] = $this->limit; if (!isset($params['orderBy'])) { $params['orderBy'] = 'sold_quantity desc'; } $searchParams['orderBy'] = $params['orderBy']; $searchParams['fields'] = 'item_id,title,image_default_id,price'; $itemsList = app::get('topc')->rpcCall('item.search', $searchParams); //检测是否有参加团购活动 if ($itemsList) { $itemsList['list'] = array_bind_key($itemsList['list'], 'item_id'); $itemIds = array_keys($itemsList['list']); $activityParams['item_id'] = implode(',', $itemIds); $activityParams['status'] = 'agree'; $activityParams['end_time'] = 'bthan'; $activityParams['start_time'] = 'sthan'; $activityParams['fields'] = 'activity_id,item_id,activity_tag,price,activity_price'; $activityItemList = app::get('topc')->rpcCall('promotion.activity.item.list', $activityParams); if ($activityItemList['list']) { foreach ($activityItemList['list'] as $key => $value) { $itemsList['list'][$value['item_id']]['activity'] = $value; $itemsList['list'][$value['item_id']]['price'] = $value['activity_price']; } } } $items = $itemsList['list']; $count = $itemsList['total_found']; $pagedata['items'] = $items; $pagedata['activeFilter'] = $params; $tmpFilter = $params; unset($tmpFilter['pages']); $pagedata['filter'] = $objLibFilter->encode($tmpFilter); $current = $params['pages'] ? $params['pages'] : 1; if ($count > 0) { $total = ceil($count / $this->limit); } $params['pages'] = time(); $pagedata['pages'] = array('link' => url::action('topc_ctl_shopcenter@search', $params), 'current' => $current, 'total' => $total, 'token' => $params['pages']); $pagedata['file'] = "topc/shop/search.html"; return $this->page('topc/shop/index.html', $pagedata); }
public function getData($params) { if (isset($params['item_id'])) { $filter['item_id'] = intval($params['item_id']); $filter['is_display'] = 'true'; $reply['is_display'] = 'true'; } if (isset($params['shop_id'])) { $filter['shop_id'] = intval($params['shop_id']); $reply['is_display'] = array('true', 'false'); } if (isset($params['user_id'])) { $filter['author_id'] = intval($params['user_id']); $reply['is_display'] = 'true'; } $filter['be_reply_id'] = 0; if (isset($params['is_reply'])) { $filter['is_reply'] = $params['is_reply'] ? $params['is_reply'] : 0; } if (!$filter['item_id'] && !$filter['shop_id'] && !$filter['author_id']) { throw new LogicException('参数item_id、shop_id、user_id 至少有一项必填'); } if ($params['type']) { $filter['consultation_type'] = $params['type']; } $row = $params['fields'] ? $params['fields'] : "*"; $objMdlConsultation = app::get('sysshoppubt')->model('consultation'); $countTotal = $objMdlConsultation->count($filter); if ($countTotal) { $pageTotal = ceil($countTotal / $params['page_size']); } $page = $params['page_no'] ? $params['page_no'] : 1; $limit = $params['page_size'] ? $params['page_size'] : 10; $currentPage = $pageTotal < $page ? $pageTotal : $page; $offset = ($currentPage - 1) * $limit; $orderBy = $params['orderBy'] ? $params['orderBy'] : 'created_time desc'; $filter['reply'] = $reply; if ($filter['reply']) { $replyFilter = $filter['reply']; unset($filter['reply']); } $objMdlConsultation = app::get('sysshoppubt')->model('consultation'); $consultation = $objMdlConsultation->getList($row, $filter, $offset, $limit, $orderBy); if (!$consultation) { return $consultation; } $consultation = array_bind_key($consultation, 'consultation_id'); $ids = array_column($consultation, 'consultation_id'); $replyFilter['be_reply_id'] = $ids; $replyList = $objMdlConsultation->getList($row, $replyFilter); if ($replyList) { foreach ($replyList as $key => $val) { //多条回复使用 //$reply[$val['be_reply_id']][] = $val; $reply[$val['be_reply_id']] = $val; } foreach ($consultation as $k => $val) { if (isset($val['is_anonymity']) && $val['is_anonymity']) { $consultation[$k]['is_anonymity'] = 1; } $consultation[$k]['reply'] = $reply[$k]; } } return array('total_results' => $countTotal, 'lists' => $consultation); }
public function getPropsValueList($propValueId, $fields = '*') { if ($fields != '*') { $fields = explode(',', $fields); if (!in_array('prop_value_id', $fields)) { $fields[] = 'prop_value_id'; } $fields = implode(',', $fields); } $objMdlPropValues = app::get('sysspfb')->model('prop_values'); $propValuesList = $objMdlPropValues->getList($fields, array('prop_value_id' => $propValueId)); $data = array_bind_key($propValuesList, 'prop_value_id'); return $data; }
/** * 获取挂件临时配置的参数 * * @param string $widgetsName 挂件名称 * @param int $shopId 店铺ID */ private function getParams($widgetsName, $shopId) { //$this->widgetsParams = app::get('sysdecorate')->getConf('widgetsParams'.$shopId); $tmpParams = $this->objMdlWidgetsInstance->getList('widgets_id,shop_id,widgets_type,params', array('widgets_type' => $widgetsName, 'shop_id' => $shopId)); $this->widgetsParams = array_bind_key($tmpParams, 'widgets_type'); return $this->widgetsParams[$widgetsName] ? $this->widgetsParams[$widgetsName] : array(); }
/** * @brief 获取咨询列表 * * @param $row * @param $filter * * @return */ public function getConsultation($row, $filter, $offset = 0, $limit = 200, $orderBy = null) { if ($filter['reply']) { $replyFilter = $filter['reply']; unset($filter['reply']); } $objMdlConsultation = app::get('sysrate')->model('consultation'); $consultation = $objMdlConsultation->getList($row, $filter, $offset, $limit, $orderBy); if (!$consultation) { return $consultation; } $consultation = array_bind_key($consultation, 'consultation_id'); $ids = array_column($consultation, 'consultation_id'); $replyFilter['be_reply_id'] = $ids; $replyList = $objMdlConsultation->getList($row, $replyFilter); if ($replyList) { foreach ($replyList as $key => $val) { //多条回复使用 //$reply[$val['be_reply_id']][] = $val; $reply[$val['be_reply_id']] = $val; } foreach ($consultation as $k => $val) { if (isset($val['is_anonymity']) && $val['is_anonymity']) { $consultation[$k]['is_anonymity'] = 1; } $consultation[$k]['reply'] = $reply[$k]; } } return $consultation; }