merchant_id = I('post.merchant_id'); } if (I('post.store_id')) { $this->store_id = I('post.store_id'); } $this->thisTime = time(); } public function index() { $this->display(); } /** * 获取商品分类 */ public function getGoodsClassList() { /* 商品分类 */ $GoodsClassModel = new RetailGoodsClassModel(); $pid = I('post.pid') ? I('post.pid') : 0; $map = array( 'status' => 0, 'merchantid' => $this->merchant_id, ); if (!empty($pid)) { $map['pid'] = $pid; } else { $map['type'] = 1; } $classList = $GoodsClassModel->getSelect($map, 'id,class_name,pid', 'id asc'); $res = array( 'status' => 1, 'msg' => '请求成功', 'data' => $classList, ); $this->ajaxReturn($res); } /** * 获取商品列表 */ public function getGoodsList() { $keyword = I('post.keyword'); $page = I('post.page') ? I('post.page') : 1; $limit = I('post.limit') ? I('post.limit') : 10; $class_id1 = I('post.class_id1'); $class_id2 = I('post.class_id2'); $class_id3 = I('post.class_id3'); $ids = I('post.ids'); $map = array( 'store_id' => $this->store_id, 'status' => 0, 'online_state' => 1, 'online_price' => array('gt', 0), ); if ($keyword) { $map['goods_name|goods_code|goods_number'] = array('like', '%' . $keyword . '%'); } if($ids){ $map['id'] = array('not in', $ids);//商品ids } $goods_class_id = getGoodsClass($class_id1, $class_id2, $class_id3); if (!empty($goods_class_id)) { $map['goods_class_id'] = $goods_class_id; } $fields = array( 'id', 'goods_name', 'goods_code', 'goods_number', 'goods_img_id', 'online_price', 'add_time', ); $order = 'id desc'; $GoodsModel = new RetailGoodsModel(); $goods = $GoodsModel->getSelect($map, $fields, $order, "{$page},{$limit}");//获取商品列表 $count = $GoodsModel->getCount($map);//获取商品数量 $ImageGalleryModel = new ImageGalleryModel(); foreach ($goods as &$value) { $value['add_time'] = date('Y-m-d H:i:s', $value['add_time']); $value['goods_code'] = $value['goods_code'] ? $value['goods_code'] : '---'; $value['goods_number'] = $value['goods_number'] ? $value['goods_number'] : '---'; $value['goods_img'] = $ImageGalleryModel->getImagePath($value['goods_img_id']); $value['goods_img'] = $value['goods_img'] ? $value['goods_img'] : ''; unset($value['goods_img_id']); } $res['status'] = 1; $res['msg'] = empty($goods) ? '暂无数据' : '获取成功'; $res['count'] = $count; $res['data'] = $goods; $this->ajaxReturn($res); } /** * 获取次卡或卡包列表 */ public function getSubCardList() { $page = I('post.page') ? I('post.page') : 1; $limit = I('post.limit') ? I('post.limit') : 10; $keyword = I('post.keyword'); $type = I('post.type') ? I('post.type') : 1;//1次卡 2卡包 // 实例化模型 if ($type == 1) { $CardModel = new SubCardModel(); } else { $CardModel = new CardBagModel(); } // 类型搜索 $map = array( 'type' => array('in', '4,5'),//门店购买 'merchantid' => $this->merchant_id, 'card_type' => $type, 'storeids' => array('like', array("{$this->store_id}", "{$this->store_id},%", "%,{$this->store_id},%", "%,{$this->store_id}", "0"), "OR"), ); // 名称搜索 if (trim($keyword)) { $map['name'] = array('like', '%' . trim($keyword) . '%'); } $map['_string'] = "end_time > {$this->thisTime} AND surplus > 0 AND status = 0"; // 统计总数 $count = $CardModel->total($map); $subCardList = $CardModel->toSelect($map, $page, $limit, array('id', 'name', 'end_time', 'type', 'gallery_id')); $ImageGalleryModel = new ImageGalleryModel(); $default_img = C('HTT_UL') . '/Public/paper/images/sub_card.png'; //次卡类型 1.自主发放 2.充值赠送 3.消费赠送 4.门店购买 5.门店购买指定商品 $typeArr = array( '1' => '自主发放', '2' => '充值赠送', '3' => '消费赠送', '4' => '门店购买', '5' => '购买指定商品', ); foreach ($subCardList as &$val) { $val['end_time'] = date('Y-m-d H:i:s', $val['end_time']); if ($val['gallery_id']) { $val['card_img'] = $ImageGalleryModel->getFieldPath(array('id' => $val['gallery_id'])); } $val['card_img'] = $val['card_img'] ? $val['card_img'] : $default_img; unset($val['gallery_id']); $val['type'] = $typeArr[$val['type']]; } $res['status'] = 1; $res['msg'] = empty($subCardList) ? '暂无数据' : '获取成功'; $res['data'] = $subCardList; $res['count'] = (int)$count; $this->ajaxReturn($res); } /** * 获取秒杀列表 */ public function getSeckillList() { $page = I('post.page') ? I('post.page') : 1; $limit = I('post.limit') ? I('post.limit') : 10; $keyword = I('post.keyword'); $RetailSpikeViewModel = new RetailSpikeViewModel(); $map = array( 'end_time' => array('gt', $this->thisTime), 'store_id' => $this->store_id, 'stock' => array('gt', 0), 'status' => 1, 'RetailGoods.status' => 0, 'RetailGoods.online_state' => 1, ); if (!empty($keyword)) { $map['RetailSpike.active_title|goods_name'] = array('like', "%{$keyword}%"); } $fields = array( 'id', 'name', 'goods_name', 'start_time', 'end_time', 'stock', 'goods_img_id' ); $count = $RetailSpikeViewModel->getCount($map); $list = $RetailSpikeViewModel->getSelect($map, $fields, $page, $limit); $ImageGalleryModel = new ImageGalleryModel(); foreach ($list as &$value) { $value['start_time'] = date('Y-m-d H:i:s', $value['start_time']); $value['end_time'] = date('Y-m-d H:i:s', $value['end_time']); $value['goods_img'] = $ImageGalleryModel->getImagePath($value['goods_img_id']); $value['goods_img'] = $value['goods_img'] ? $value['goods_img'] : ''; unset($value['goods_img_id']); } $res['status'] = 1; $res['msg'] = empty($list) ? '暂无数据' : '获取成功'; $res['data'] = $list; $res['count'] = intval($count); $this->ajaxReturn($res); } /** * 获取拼团列表 */ public function getGroupList() { $page = I('post.page') ? I('post.page') : 1; $limit = I('post.limit') ? I('post.limit') : 10; $keyword = I('post.keyword'); $RetailSpikeViewModel = new RetailGroupViewModel(); $map = array( 'end_time' => array('gt', $this->thisTime), 'store_id' => $this->store_id, 'act_num' => array('gt', 0), 'act_type' => 1, 'RetailGoods.status' => 0, 'RetailGoods.online_state' => 1, ); if (!empty($keyword)) { $map['RetailGroup.actname|goods_name'] = array('like', "%{$keyword}%"); } $fields = array( 'id', 'act_name', 'goods_name', 'start_time', 'end_time', 'act_num', 'goods_img_id', ); $count = $RetailSpikeViewModel->getCount($map); $list = $RetailSpikeViewModel->getSelect($map, $fields, $page, $limit); $ImageGalleryModel = new ImageGalleryModel(); foreach ($list as &$value) { $value['start_time'] = date('Y-m-d H:i:s', $value['start_time']); $value['end_time'] = date('Y-m-d H:i:s', $value['end_time']); $value['goods_img'] = $ImageGalleryModel->getImagePath($value['goods_img_id']); $value['goods_img'] = $value['goods_img'] ? $value['goods_img'] : ''; unset($value['goods_img_id']); } $res['status'] = 1; $res['msg'] = empty($list) ? '暂无数据' : '获取成功'; $res['data'] = $list; $res['count'] = intval($count); $this->ajaxReturn($res); } /** * 获取礼品卡列表 */ public function getGiftList() { $page = I('post.page') ? I('post.page') : 1; $limit = I('post.limit') ? I('post.limit') : 10; $keyword = I('post.keyword'); $RetailGiftCardModel = new RetailGiftCardModel(); $map = array( 'start_time' => array('lt', $this->thisTime), 'end_time' => array('gt', $this->thisTime), 'merchantid' => $this->merchant_id, 'status' => 1, 'state' => 1, ); if (!empty($keyword)) { $map['title'] = array('like', "%{$keyword}%"); } $fields = array( 'id', 'title', 'start_time', 'end_time', ); $count = $RetailGiftCardModel->getCount($map); $list = $RetailGiftCardModel->getSelect($map, $fields, 'id desc', $page . ',' . $limit); $GCCModel = new RetailGiftCardCoverModel(); $ImageGalleryModel = new ImageGalleryModel(); foreach ($list as &$value) { $value['start_time'] = date('Y-m-d H:i:s', $value['start_time']); $value['end_time'] = date('Y-m-d H:i:s', $value['end_time']); $map = array( $GCCModel::GIFT_CARD_ID => $value['id'], $GCCModel::STATUS => 1, $GCCModel::STATE => 1, ); $img_id = $GCCModel->getOrderFindField($map, 'img_url_id', 'id desc'); $value['img_url'] = $ImageGalleryModel->getFieldPath(array('id' => $img_id)); } $res['status'] = 1; $res['msg'] = empty($list) ? '暂无数据' : '获取成功'; $res['data'] = $list; $res['count'] = $count; $this->ajaxReturn($res); } /** * 获取促销商品列表 */ public function getPromotionList() { $page = I('post.page'); $limit = I('post.limit'); $keyword = I('post.keyword'); $StoreXcxConfigModel = new RetailStoreXcxConfigModel(); $sMap = array( 'storeid' => $this->store_id, ); $promotion_status = $StoreXcxConfigModel->getFindField($sMap, 'promotion_status'); if ($promotion_status != 1) { $res['status'] = 0; $res['msg'] = '商家未开启促销功能'; $this->ajaxReturn($res); } $HostModel = new RetailHostModel(); $GoodsModel = new RetailGoodsModel(); //促销 $map = array( 'h.storeid' => $this->store_id, 'h.type' => 2, 'h.status' => 1, 'h.state' => 1, 'h.starttime' => array('elt', $this->thisTime), 'h.endtime' => array('egt', $this->thisTime), 'g.online_state' => 1, 'g.status' => 0, ); if (!empty($keyword)) { $map['g.goods_name|g.goods_code|g.goods_number'] = array('like', '%' . $keyword . '%'); } $field = array( 'h.id', 'h.act_price', 'h.goods_id', 'g.goods_img_id', 'g.goods_name', 'g.attribute_state', 's.goods_num', ); $order = 'h.id desc,g.' . $HostModel::ID . ' desc,' . 'g.' . $GoodsModel::ID . ' desc, h.act_price asc'; $promotion = $HostModel->getHostGoods_v1($map, $field, $order, $page . ',' . $limit); $Inventory = new \Api\Controller\InventoryController(); $ImageGalleryModel = new ImageGalleryModel(); foreach ($promotion as &$val) { $val['goods_img'] = $ImageGalleryModel->getFieldPath(array('id' => $val['goods_img_id'])); $val['goods_img'] = $val['goods_img'] ? $val['goods_img'] : ''; $val['goods_num'] = floatval($val['goods_num']); if ($val['attribute_state'] == 2) { $val['goods_num'] = $Inventory->goods_num(2, $this->store_id, $val['goods_id']); } unset($val['goods_img_id']); unset($val['attribute_state']); } $res['status'] = 1; $res['msg'] = '获取成功'; $res['data'] = $promotion; $this->ajaxReturn($res); } /** * 保存DIY设置 */ public function saveDIY() { $diy_data = I('post.diy_data'); if (empty($diy_data)) { $res = array( 'status' => 0, 'msg' => '请传入DIY设置', ); $this->ajaxReturn($res); } if(isset($diy_data{60000})){ $res['status'] = 0; $res['msg'] = '插件使用过多'; $this->ajaxReturn($res); } $decode_data = json_decode($diy_data, true); if (!empty($decode_data['page'])) { //处理状态栏色值为rgb的情况,转为16进制 if (strpos(strtolower($decode_data['page']['topBackgroundColor']), 'rgb(') !== false) { $decode_data['page']['topBackgroundColor'] = $this->RGBToHex($decode_data['page']['topBackgroundColor']); } } $diy_data = json_encode($decode_data); $StoreConfigModel = new StoreConfigModel(); $old_data = $StoreConfigModel->getFindField(array('store_id' => $this->store_id), 'diy_mall_data'); if ($old_data == $diy_data) { $res['status'] = 1; $res['msg'] = '保存成功'; } else { $set = $StoreConfigModel->setDIY($this->store_id, $diy_data); if ($set) { S('diy_mall_data' . $this->store_id, null); $res['status'] = 1; $res['msg'] = '保存成功'; } else { $res['status'] = 0; $res['msg'] = '保存失败'; } } $this->ajaxReturn($res); } /** * rgb转16进制 * @param $rgb rgb色值 * @return string */ protected function RGBToHex($rgb) { $regexp = "/^rgb\(([0-9]{0,3})\,\s*([0-9]{0,3})\,\s*([0-9]{0,3})\)/"; $re = preg_match($regexp, $rgb, $match); $re = array_shift($match); $hexColor = "#"; $hex = array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'); for ($i = 0; $i < 3; $i++) { $r = null; $c = $match[$i]; $hexAr = array(); while ($c > 16) { $r = $c % 16; $c = ($c / 16) >> 0; array_push($hexAr, $hex[$r]); } array_push($hexAr, $hex[$c]); $ret = array_reverse($hexAr); $item = implode('', $ret); $item = str_pad($item, 2, '0', STR_PAD_LEFT); $hexColor .= $item; } return $hexColor; } /** * 获取预售活动列表 */ public function getAdvanceList() { $data = I('post.'); $page = $data['page'] ? $data['page'] : 1; $limit = $data['limit'] ? $data['limit'] : 10; $keyword = $data['keyword']; $advance_model = new AdvanceGoodsModel(); $ImageGalleryModel = new ImageGalleryModel(); $where = array( 'a.advance_end_time' => array('gt', $this->thisTime), 'a.store_id' => $this->store_id, 'a.advance_state' => 1, 'g.status' => 0, 'g.online_state' => 1, ); if (!empty($keyword)) { $where['g.goods_name'] = array('like', "%{$keyword}%"); } $parameter = array( 'where' => $where, 'page' => $page, 'limit' => $limit, 'field' => array( 'a.id', 'a.goods_id', 'a.attribute_state', 'a.surplus_num', 'a.advance_start_time', 'a.advance_end_time', 'g.goods_name', 'g.goods_img_id', ) ); $info = $advance_model->getList($parameter); if ($info['status'] == 1) { $count = $advance_model->getListCount(array('where' => $where)); $list = $info['data']['list']; foreach ($list as $key => &$val) { if (C('IS_SET_REDIS')) { $frozen_param = array( 'id' => $val['id'], 'goods_id' => $val['goods_id'], 'sku_id' => '', 'attribute_state' => $val['attribute_state'], ); $frozen_num = $advance_model->frozen_num($frozen_param); $val['surplus_num'] = $val['surplus_num'] - $frozen_num; } $val['surplus_num'] = round($val['surplus_num'], 3); $val['goods_img'] = $ImageGalleryModel->getImagePath($val['goods_img_id']); $val['goods_img'] = $val['goods_img'] ? $val['goods_img'] : ''; $val['advance_start_time'] = date('Y-m-d H:i:s', $val['advance_start_time']); $val['advance_end_time'] = date('Y-m-d H:i:s', $val['advance_end_time']); } } $res = array( 'status' => 1, 'msg' => $list ? "获取成功" : "暂无数据", 'data' => $list, 'count' => $count ? intval($count) : 0 ); $this->ajaxReturn($res); } /** * 商户DIY页面 */ public function mer_index() { $this->display('index'); } //保存商户DIY设置 public function merchantDiySave() { $merchantId = $this->merchant_id;//商户id if (!$merchantId) { $res = callBack(statusCode()['error'], '失败'); $this->ajaxReturn($res); } $post = I('post.'); $param = [ 'diy_data' ]; //参数验证 $plugVip = new CustomValidate(); $dataOne = $plugVip->validationParameters($param, $post); if ($dataOne !== true) { $this->ajaxReturn($dataOne); } $diy = $post['diy_data']; if ($diy == '') { $res = callBack(statusCode()['error'], '参数不能为空'); $this->ajaxReturn($res); } if (isset($diy{60000})) { $res = callBack(statusCode()['error'], '插件使用过多'); $this->ajaxReturn($res); } $merchantConfigModel = new MerchantConfigModel(); $data = $merchantConfigModel->diySave($merchantId, $diy); if ($data === true) { $res = callBack(statusCode()['success'], '成功'); } else { $res = callBack(statusCode()['error'], '失败'); } $this->ajaxReturn($res); } //获取商户商品列表 public function mGoodsList() { $merchantId = $this->merchant_id;//商户id $keyword = I('post.keyword'); $page = I('post.page') ? I('post.page') : 1; $limit = I('post.limit') ? I('post.limit') : 10; $ids = I('post.ids'); $map = array( 'merchantid' => $merchantId,//商户id 'status' => 0,//状态:0,正常,1,下架,2,删除。 'issellonline' => 1,//是否在商城中出售:0,不在,1,在商城出售。 'online_price' => array('gt', 0),//线上价 ); if ($keyword) { $map['goods_name|goods_code|good_number'] = array('like', '%' . $keyword . '%'); } if($ids){ $map['id'] = array('not in', $ids);//商品ids } $fields = array( 'id', 'goods_name',//零售货物名称。 'goods_code',//商品条码。 'good_number',//货号 'goods_image_id',//商品图片id 'online_price',//线上价 'addtime',//添加时间 ); $order = 'id desc'; $GoodsModel = new RetailMgoodsModel(); $goods = $GoodsModel->getSelect($map, $fields, $order, "{$page},{$limit}");//获取商品列表 $count = $GoodsModel->getCount($map);//获取商品数量 $ImageGalleryModel = new ImageGalleryModel(); foreach ($goods as &$value) { $value['add_time'] = date('Y-m-d H:i:s', $value['addtime']); $value['goods_code'] = $value['goods_code'] ? $value['goods_code'] : '---'; $value['goods_number'] = $value['good_number'] ? $value['good_number'] : '---'; $value['goods_img'] = $ImageGalleryModel->getImagePath($value['goods_image_id']); $value['goods_img'] = $value['goods_img'] ? $value['goods_img'] : ''; unset($value['goods_image_id'],$value['good_number'],$value['addtime']); } $res['status'] = 1; $res['msg'] = empty($goods) ? '暂无数据' : '获取成功'; $res['count'] = $count; $res['data'] = $goods; $this->ajaxReturn($res); } }