123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323 |
- <?php
- namespace app\api\controller;
- use think\facade\Lang;
- use think\facade\Db;
- class ChainGoods extends MobileChain {
- public function initialize() {
- parent::initialize();
- Lang::load(base_path() . 'home/lang/' . config('lang.default_lang') . '/chain.lang.php');
- }
-
- public function goods_list() {
- $keyword = input('post.keyword');
- $goods_type = input('post.goods_type');
- $search_type = input('post.search_type');
- $goods_model = model('goods');
- $condition = array();
- $condition[] = array('store_id', '=', $this->chain_info['store_id']);
- if (trim($keyword) != '') {
- switch ($search_type) {
- case 0:
- $condition[] = array('goods_name', 'like', '%' . trim($keyword) . '%');
- break;
- case 1:
- $condition[] = array('goods_serial', 'like', '%' . trim($keyword) . '%');
- break;
- case 2:
- $condition[] = array('goods_commonid', '=', intval($keyword));
- break;
- }
- }
- $fields = 'gc_id,goods_commonid,goods_name,goods_price,goods_addtime,goods_image,goods_state,goods_lock,store_id';
- switch ($goods_type) {
-
- case 'lockup':
- $goods_list = $goods_model->getGoodsCommonLockUpList($condition, $fields, $this->pagesize);
- break;
-
- case 'offline':
- $goods_list = $goods_model->getGoodsCommonOfflineList($condition, $fields, $this->pagesize);
- break;
-
- case 'waitverify':
- $goods_list = $goods_model->getGoodsCommonWaitVerifyList($condition);
- break;
- default:
- $goods_list = $goods_model->getGoodsCommonOnlineList($condition, $fields, $this->pagesize);
- break;
- }
-
- foreach ($goods_list as $key => $value) {
- $condition = array();
- $condition[] = array('store_id', '=', $value['store_id']);
- $condition[] = array('goods_commonid', '=', $value['goods_commonid']);
- $condition[] = array('chain_id', '=', $this->chain_info['chain_id']);
- $storage_count = Db::name('chain_goods')->where($condition)->sum('goods_storage');
- $goods_list[$key]['goods_storage_sum'] = $storage_count;
- $condition = array();
- $condition[] = array('store_id', '=', $value['store_id']);
- $condition[] = array('goods_commonid', '=', $value['goods_commonid']);
- $goods_info = Db::name('goods')->where($condition)->fieldRaw('count(*) as count,goods_id')->find();
- if ($goods_info) {
- $goods_list[$key]['goods_count'] = $goods_info['count'];
- $goods_list[$key]['goods_id'] = $goods_info['goods_id'];
- } else {
- unset($goods_list[$key]);
- continue;
- }
- $goods_list[$key]['goods_addtime'] = date('Y-m-d', $goods_list[$key]['goods_addtime']);
- $goods_list[$key]['goods_image'] = goods_cthumb($goods_list[$key]['goods_image']);
- }
- $result = array_merge(array('goods_list' => $goods_list), mobile_page($goods_model->page_info));
- ds_json_encode(10000, '', $result);
- }
-
- public function get_common_data() {
- $result = array();
- $class_id = intval(input('param.class_id'));
- $goods_class = model('goodsclass')->getGoodsclassLineForTag($class_id);
- $type_model = model('type');
-
- $typeinfo = $type_model->getAttribute($goods_class['type_id'], $this->chain_info['store_id'], $class_id);
- list($spec_json, $spec_list, $attr_list, $brand_list) = $typeinfo;
- $result['spec_json'] = $spec_json;
- $result['sign_i'] = count($spec_list);
- $result['spec_list'] = $spec_list;
- ds_json_encode(10000, '', $result);
- }
-
- public function edit_goods() {
- $common_id = intval(input('param.commonid'));
- if ($common_id <= 0) {
- ds_json_encode(10001, lang('param_error'));
- }
- $goods_model = model('goods');
- $goodscommon_info = $goods_model->getGoodsCommonInfoByID($common_id);
- if (empty($goodscommon_info) || $goodscommon_info['store_id'] != $this->chain_info['store_id']) {
- ds_json_encode(10001, lang('goods_not_exist_or_lock'));
- }
- $result = array();
- $where = array('goods_commonid' => $common_id, 'store_id' => $this->chain_info['store_id']);
- $goodscommon_info['spec_name'] = unserialize($goodscommon_info['spec_name']);
- $goodscommon_info['goods_storage'] = 0;
-
- $goods_array = $goods_model->getGoodsList($where, 'goods_id,goods_marketprice,goods_price,goods_weight,goods_storage,goods_serial,goods_storage_alarm,goods_spec,color_id');
- $sp_value = array();
- if (is_array($goods_array) && !empty($goods_array)) {
- $spec_checked = array();
- foreach ($goods_array as $k => $v) {
- $condition = array();
- $condition[] = array('goods_id', '=', $v['goods_id']);
- $condition[] = array('chain_id', '=', $this->chain_info['chain_id']);
- $storage_count = Db::name('chain_goods')->where($condition)->sum('goods_storage');
- $goodscommon_info['goods_storage'] += $storage_count;
- $a = unserialize($v['goods_spec']);
- if (!empty($a)) {
- foreach ($a as $key => $val) {
- $spec_checked[$key]['id'] = $key;
- $spec_checked[$key]['name'] = addslashes($val);
- }
- $matchs = array_keys($a);
- sort($matchs);
- $id = str_replace(',', '', implode(',', $matchs));
- $sp_value[$id] = array(
- 'sp_value' => $a,
- 'label' => implode('|', array_values($a)),
- 'color' => $v['color_id'],
- 'marketprice' => $v['goods_marketprice'],
- 'price' => $v['goods_price'],
- 'id' => $v['goods_id'],
- 'goods_weight' => $v['goods_weight'],
- 'stock' => $storage_count,
- 'alarm' => $v['goods_storage_alarm'],
- 'sku' => $v['goods_serial'],
- );
- }
- }
- $result['spec_checked'] = $spec_checked;
- }
- if($goodscommon_info['spec_value']){
- $goodscommon_info['spec_value']= unserialize($goodscommon_info['spec_value']);
- }
- $result['goods'] = $goodscommon_info;
- $result['sp_value'] = $sp_value;
- ds_json_encode(10000, '', $result);
- }
-
- public function save_goods() {
- $spec_array = input('post.spec/a');
- if (empty($spec_array)) {
- ds_json_encode(10001, lang('param_error'));
- }
- $chain_goods_model = model('chain_goods');
- $chain_goods_validate = ds_validate('chain_goods');
- $goods_model = model('goods');
- Db::startTrans();
- try {
- foreach ($spec_array as $value) {
- if (!$chain_goods_validate->scene('chain_goods_add')->check($value)) {
- throw new \think\Exception($chain_goods_validate->getError(), 10006);
- }
- $condition = array();
- $condition[] = array('store_id', '=', $this->chain_info['store_id']);
- $condition[] = array('goods_id', '=', $value['goods_id']);
- $goods_info = $goods_model->getGoodsInfo($condition, 'goods_id,goods_commonid,store_id');
- if (!$goods_info) {
- throw new \think\Exception(lang('goods_not_exist'), 10006);
- }
- $condition = array();
- $condition[] = array('store_id', '=', $this->chain_info['store_id']);
- $condition[] = array('goods_id', '=', $value['goods_id']);
- $condition[] = array('chain_id', '=', $this->chain_info['chain_id']);
- $chain_goods_info = $chain_goods_model->getChainGoodsInfo($condition);
- if (!$chain_goods_info) {
- $chain_goods_model->addChainGoods(array(
- 'store_id' => $goods_info['store_id'],
- 'goods_id' => $goods_info['goods_id'],
- 'chain_id' => $this->chain_info['chain_id'],
- 'goods_commonid' => $goods_info['goods_commonid'],
- 'goods_storage' => $value['goods_storage'],
- ));
- } else {
- $chain_goods_model->editChainGoods(array('goods_storage' => $value['goods_storage']), array(array('chain_goods_id', '=', $chain_goods_info['chain_goods_id'])));
- }
- }
- } catch (\Exception $e) {
- Db::rollback();
- ds_json_encode(10001, $e->getMessage());
- }
- Db::commit();
- ds_json_encode(10000, lang('ds_common_op_succ'));
- }
- }
|