コード例 #1
0
ファイル: getCatProValue.php プロジェクト: 453111208/bbc
 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;
 }
コード例 #2
0
ファイル: list.php プロジェクト: 453111208/bbc
 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;
 }
コード例 #3
0
ファイル: freepostage.php プロジェクト: 453111208/bbc
 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);
 }
コード例 #4
0
ファイル: getinfo.php プロジェクト: 453111208/bbc
 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');
 }
コード例 #5
0
ファイル: list.php プロジェクト: 453111208/bbc
 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;
 }
コード例 #6
0
ファイル: listByShop.php プロジェクト: 453111208/bbc
 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;
 }
コード例 #7
0
ファイル: getCount.php プロジェクト: 453111208/bbc
 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');
 }
コード例 #8
0
ファイル: getPropList.php プロジェクト: 453111208/bbc
 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;
 }
コード例 #9
0
ファイル: list.php プロジェクト: 453111208/bbc
 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);
 }
コード例 #10
0
ファイル: getName.php プロジェクト: 453111208/bbc
 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;
 }
コード例 #11
0
ファイル: register.php プロジェクト: 453111208/bbc
 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'];
         }
     }
 }
コード例 #12
0
ファイル: coupon.php プロジェクト: 453111208/bbc
 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);
 }
コード例 #13
0
ファイル: sellerList.php プロジェクト: 453111208/bbc
 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;
 }
コード例 #14
0
ファイル: list.php プロジェクト: 453111208/bbc
 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);
 }
コード例 #15
0
ファイル: imagedata.php プロジェクト: 453111208/bbc
 /**
  * 将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;
 }
コード例 #16
0
 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;
 }
コード例 #17
0
/**
 * 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;
}
コード例 #18
0
ファイル: getList.php プロジェクト: 453111208/bbc
 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');
 }
コード例 #19
0
ファイル: delivery.php プロジェクト: 453111208/bbc
 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;
 }
コード例 #20
0
ファイル: getTradeData.php プロジェクト: 453111208/bbc
 /**
  * 获取单笔订单数据
  *
  * @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;
 }
コード例 #21
0
ファイル: search.php プロジェクト: 453111208/bbc
 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;
 }
コード例 #22
0
ファイル: delivery.php プロジェクト: 453111208/bbc
 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;
 }
コード例 #23
0
ファイル: data.php プロジェクト: 453111208/bbc
 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;
 }
コード例 #24
0
ファイル: shop.php プロジェクト: 453111208/bbc
 /**
  * @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;
 }
コード例 #25
0
ファイル: cart.php プロジェクト: 453111208/bbc
 /**
  * @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;
 }
コード例 #26
0
ファイル: shopcenter.php プロジェクト: 453111208/bbc
 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);
 }
コード例 #27
0
ファイル: list.php プロジェクト: 453111208/bbc
 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);
 }
コード例 #28
0
ファイル: props.php プロジェクト: 453111208/bbc
 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;
 }
コード例 #29
0
ファイル: widgets.php プロジェクト: 453111208/bbc
 /**
  * 获取挂件临时配置的参数
  *
  * @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();
 }
コード例 #30
0
ファイル: consultation.php プロジェクト: 453111208/bbc
 /**
  * @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;
 }