Goods.php 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197
  1. <?php
  2. namespace app\admin\controller\service\shop;
  3. use app\common\controller\Backend;
  4. use think\Db;
  5. /**
  6. * 项目管理
  7. *
  8. * @icon fa fa-circle-o
  9. */
  10. class Goods extends Backend
  11. {
  12. /**
  13. * Goods模型对象
  14. * @var \app\admin\model\service\shop\Goods
  15. */
  16. protected $model = null;
  17. public function _initialize()
  18. {
  19. parent::_initialize();
  20. $this->model = new \app\admin\model\service\shop\Goods;
  21. $this->view->assign("typeList", $this->model->getTypeList());
  22. $this->view->assign("toShopList", $this->model->getToShopList());
  23. $this->view->assign("isTravelList", $this->model->getIsTravelList());
  24. $this->view->assign("specTypeList", $this->model->getSpecTypeList());
  25. $this->view->assign("chooseSkillTypeList", $this->model->getChooseSkillTypeList());
  26. $this->view->assign("shopStateList", $this->model->getShopStateList());
  27. $this->view->assign("statusList", $this->model->getStatusList());
  28. }
  29. public function index()
  30. {
  31. //设置过滤方法
  32. $this->request->filter(['strip_tags', 'trim']);
  33. if (false === $this->request->isAjax()) {
  34. return $this->view->fetch();
  35. }
  36. //如果发送的来源是 Selectpage,则转发到 Selectpage
  37. if ($this->request->request('keyField')) {
  38. return $this->selectpage();
  39. }
  40. [$where, $sort, $order, $offset, $limit] = $this->buildparams();
  41. $list = $this->model
  42. ->where($where)
  43. ->where('shop_id','>',0)
  44. ->order($sort, $order)
  45. ->paginate($limit);
  46. foreach ($list as &$value)
  47. {
  48. $value->shopname = \app\admin\model\service\shop\Shop::where('id',$value->shop_id)->value('name');
  49. $value->categoryName = \app\admin\model\service\Category::where('id',$value->category_id)->value('name');
  50. $value->twoCategoryName = \app\admin\model\service\Category::where('id',$value->two_category_id)->value('name');
  51. $value->skillCateName = \app\api\model\service\SkillCate::getNameList($value->skill_cate_ids);
  52. $value->update_time = $value->updatetime?date("Y-m-d",$value->updatetime):'';
  53. }
  54. $result = ['total' => $list->total(), 'rows' => $list->items()];
  55. return json($result);
  56. }
  57. public function edit($ids = null){
  58. $row = $this->model->get(['id' => $ids]);
  59. if (!$row) {
  60. $this->error(__('No Results were found'));
  61. }
  62. if (false === $this->request->isPost()) {
  63. $spu = \app\admin\model\service\Goodsspu::where(['goods_id'=>$row->id,'status'=>'normal'])->field('name,skudetail')->select();
  64. foreach ($spu as &$item){
  65. $info = explode(',',$item['skudetail']);
  66. $arr=[];
  67. foreach ($info as $val){
  68. $v['name'] = $val;
  69. array_push($arr,$v);
  70. }
  71. $item['info'] = $arr;
  72. }
  73. $row->city = $row->province.'/'.$row->city;
  74. $sku = \app\admin\model\service\Goodssku::where(['goods_id'=>$row->id,'status'=>'normal'])->field('name,price,cost_seconds')->select();
  75. $this->assignconfig('spu',$spu);
  76. $this->assignconfig('sku',$sku);
  77. $this->assignconfig('spec_type',$row['spec_type']);
  78. $this->assignconfig('choose_skill_type',$row['choose_skill_type']);
  79. $this->assignconfig('status',$row['status']);
  80. $this->view->assign("row", $row);
  81. return $this->view->fetch();
  82. }
  83. $params = $this->request->post('row/a');
  84. if (empty($params)) {
  85. $this->error(__('Parameter %s can not be empty', ''));
  86. }
  87. $params = $this->preExcludeFields($params);
  88. $result = false;
  89. if($params['city'])
  90. {
  91. $address = explode('/',$params['city']);
  92. $params['province'] = $address[0];
  93. $params['city'] = $address[1];
  94. //$params['district'] = isset($address[1])?:'';
  95. }else{
  96. unset($params['city']);
  97. }
  98. Db::startTrans();
  99. try {
  100. $goods = new \app\admin\model\service\shop\Goods ();
  101. $goods->allowField(true)->save($params,['id'=>$row->id]);
  102. $result = true;
  103. if($params['status'] == 'normal')
  104. {
  105. if($params['spec_type'] == 1)
  106. {
  107. \app\admin\model\service\Goodsspu::where(['goods_id'=>$row->id,'status'=>'normal'])->update(['status'=>'hidden']);
  108. \app\admin\model\service\Goodssku::where(['goods_id'=>$row->id,'status'=>'normal'])->update(['status'=>'hidden']);
  109. $spuList = json_decode($params['spu'],true);
  110. $spu = [];
  111. foreach ($spuList as $value) {
  112. $spu[] = [
  113. 'goods_id' => $row->id,
  114. 'name' => $value['name'],
  115. 'skudetail'=> implode(',',array_column($value['info'],'name'))
  116. ];
  117. }
  118. if(!model('\app\admin\model\service\Goodsspu')->allowField(true)->saveAll($spu)){
  119. $result == false;
  120. }
  121. $skuList = json_decode($params['sku'],true);
  122. $sku = [];
  123. foreach ($skuList as $value) {
  124. $sku[] = [
  125. 'goods_id' => $row->id,
  126. 'name' => $value['name'],
  127. 'price' => $value['price'],
  128. ];
  129. }
  130. if(!model('\app\admin\model\service\Goodssku')->allowField(true)->saveAll($sku)){
  131. $result == false;
  132. }
  133. }
  134. }
  135. Db::commit();
  136. } catch (ValidateException|PDOException|Exception $e) {
  137. Db::rollback();
  138. $this->error($e->getMessage());
  139. }
  140. if (false === $result) {
  141. $this->error(__('No rows were updated'));
  142. }
  143. $this->success();
  144. }
  145. public function agree($ids)
  146. {
  147. $row = $this->model->get(['id' => $ids]);
  148. $row->shop_state != 0 && $this->error('请勿重复审核');
  149. \app\admin\model\service\shop\Goods::where('id',$ids)->update(['shop_state'=>1]);
  150. $shopGoodsIds = \app\admin\model\service\shop\Shop::where('id',$row->shop_id)->value('goods_ids');
  151. $shopGoodsArr = explode(',',$shopGoodsIds);
  152. if(!in_array($ids,$shopGoodsArr))
  153. {
  154. \app\admin\model\service\shop\Shop::where('id',$row->shop_id)->update(['goods_ids'=>$row->id.','.$shopGoodsIds]);
  155. }
  156. $this->success('商品审核已通过');
  157. }
  158. public function refuse($ids)
  159. {
  160. $row = $this->model->get(['id' => $ids]);
  161. $row->shop_state != 0 && $this->error('请勿重复审核');
  162. if ($this->request->isPost())
  163. {
  164. $params = $this->request->post('row/a');
  165. \app\admin\model\service\shop\Goods::where('id',$ids)->update(['note'=>$params['note'],'shop_state'=>-1]);
  166. $this->success('审核拒绝');
  167. }
  168. $this->view->assign("row", $row);
  169. return $this->view->fetch();
  170. }
  171. }