BatchDispatchController.php 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: Administrator
  5. * Date: 2018/12/14
  6. * Time: 15:28
  7. */
  8. namespace app\backend\modules\discount\controllers;
  9. use app\backend\modules\discount\models\CategoryDiscount;
  10. use app\backend\modules\goods\models\Category;
  11. use app\backend\modules\goods\models\Category as CategoryModel;
  12. use app\backend\modules\goods\models\Discount;
  13. use app\backend\modules\member\models\MemberLevel;
  14. use app\common\components\BaseController;
  15. use app\common\exceptions\ShopException;
  16. use app\common\facades\Setting;
  17. use app\common\models\GoodsCategory;
  18. use Illuminate\Support\Facades\DB;
  19. use app\backend\modules\goods\services\CreateGoodsService;
  20. use app\backend\modules\goods\models\Dispatch;
  21. use app\backend\modules\discount\models\DispatchClassify;
  22. use app\backend\modules\goods\models\GoodsDispatch;
  23. class BatchDispatchController extends BaseController
  24. {
  25. public function freight(){
  26. return view('discount.freight')->render();
  27. }
  28. public function getSet(){
  29. $category = DispatchClassify::uniacid()->get()->toArray();
  30. foreach ($category as $k => $item) {
  31. $category[$k]['category_ids'] = Category::select('id', 'name')->whereIn('id', explode(',', $item['dispatch_id']))->get()->toArray();
  32. }
  33. return $this->successJson('success',$category);
  34. }
  35. public function freightSet()
  36. {
  37. // $dispatch_templates = Dispatch::select('id','dispatch_name')
  38. // ->where('uniacid',\YunShop::app()->uniacid)
  39. // ->where('is_plugin',0)
  40. // ->get();
  41. // dd($dispatch_templates);
  42. // $dispatch = new GoodsDispatch();
  43. $dispatch_templates = Dispatch::getTemplate();
  44. return view('discount.freight-set', [
  45. 'list'=>$dispatch_templates,
  46. 'firstCate'=>(new Category())->getCategoryFirstLevel(),
  47. 'url' => json_encode(yzWebFullUrl('discount.batch-dispatch.freight-save')),
  48. ])->render();
  49. }
  50. public function updateFreight()
  51. {
  52. $id=request()->id;
  53. $form_data=request()->form_data;
  54. if (!$id){
  55. throw new ShopException('参数错误!');
  56. }
  57. if ($form_data) {
  58. if(isset($form_data['category_ids'][0]['id'])){
  59. $form_data['category_ids']=array_column($form_data['category_ids'],'id');
  60. }
  61. $categorys = $form_data['category_ids'];
  62. foreach ($categorys as $v){
  63. $categorys_r[] = $v;
  64. }
  65. $data = [
  66. 'uniacid' => \YunShop::app()->uniacid,
  67. 'dispatch_id' => implode(',',$form_data['category_ids']),
  68. 'freight_type' => $form_data['freight_type'],
  69. 'freight_value' => $form_data['freight_value'],
  70. 'template_id' => $form_data['template_id'],
  71. 'is_cod'=>$form_data['is_cod'],
  72. ];
  73. if(!(DispatchClassify::find($id)->update($data))){
  74. return $this->errorJson("修改失敗");
  75. }
  76. foreach( $categorys_r as $categoryID){
  77. $this->updateGoodsDispatch($data,$categoryID);
  78. }
  79. // $this->updateGoodsDispatch($data);
  80. return $this->successJson('ok');
  81. }
  82. $categoryDiscount = DispatchClassify::find($id);
  83. $classify=DispatchClassify::classify($id);
  84. $categoryDiscount['category_ids'] = Category::select('id', 'name')
  85. ->whereIn('id', explode(',', $categoryDiscount['dispatch_id']))
  86. ->get()->toArray();
  87. $dispatch_templates = Dispatch::getTemplate();
  88. return view('discount.freight-set', [
  89. 'classify'=>json_encode($classify),
  90. 'firstCate'=>(new Category())->getCategoryFirstLevel(),
  91. 'list'=>$dispatch_templates,
  92. 'categoryDispach' => json_encode($categoryDiscount),
  93. 'url' => json_encode(yzWebFullUrl('discount.batch-dispatch.update-freight',['id' => $id])),
  94. ])->render();
  95. }
  96. public function freightSave(){
  97. $form_data = request()->form_data;
  98. $pay = 1;
  99. if ($form_data) {
  100. $categorys = $form_data['category_ids'];
  101. foreach ($categorys as $v) {
  102. $categorys_r[] = $v;
  103. }
  104. $data = [
  105. 'uniacid' => \YunShop::app()->uniacid,
  106. 'dispatch_id' => implode(',',$form_data['category_ids']),
  107. 'freight_type' => $form_data['freight_type'],
  108. 'freight_value' => $form_data['freight_value'],
  109. 'template_id' => $form_data['template_id'],
  110. 'is_cod'=>$pay,
  111. ];
  112. $model = new DispatchClassify();
  113. $model->fill($data);
  114. if ($model->save()) {
  115. foreach( $categorys_r as $categoryID){
  116. $this->updateGoodsDispatch($data,$categoryID);
  117. }
  118. return $this->successJson('ok');
  119. }
  120. }
  121. return view('discount.freight-set', [
  122. 'url' => json_encode(yzWebFullUrl('discount.batch-dispatch.freight')),
  123. ])->render();
  124. }
  125. public function updateGoodsDispatch($data,$categoryID){
  126. //2级联动
  127. if ( Setting::get('shop.category')['cat_level']==2){
  128. //$goods_ids = GoodsCategory::select('goods_id')
  129. $goods_ids = GoodsCategory::select('goods_id')
  130. ->whereHas('goods', function ($query) {
  131. $query->where('is_plugin',0)->whereIn('plugin_id', [0, 44]); //44 为聚合供应链商品
  132. })
  133. ->where('category_ids','like', '%'.$categoryID.'%')
  134. ->get()
  135. ->toArray();
  136. $goods_id = GoodsCategory::select('goods_id')
  137. ->whereHas('goods', function ($query) {
  138. $query->where('is_plugin',0)->whereIn('plugin_id', [0, 44]);
  139. })
  140. ->where('category_id', $categoryID)
  141. ->get()
  142. ->toArray();
  143. $arr = array_merge($goods_ids, $goods_id);
  144. }else {
  145. $arr = GoodsCategory::select('goods_id')
  146. ->whereHas('goods', function ($query) {
  147. $query->where('is_plugin',0)->whereIn('plugin_id', [0, 44]);
  148. })
  149. ->where('category_id', $categoryID)
  150. ->get()
  151. ->toArray();
  152. }
  153. foreach ($arr as $goods_id) {
  154. $item_id[] = $goods_id['goods_id'];
  155. }
  156. foreach($item_id as $goodsID){
  157. GoodsDispatch::freightSave($goodsID,$data);
  158. }
  159. }
  160. public function selectCategory()
  161. {
  162. $kwd = \YunShop::request()->keyword;
  163. if ($kwd) {
  164. $category = Category::getMallCategorysByName($kwd);
  165. return $this->successJson('ok', $category);
  166. }
  167. }
  168. public function deleteSet()
  169. {
  170. if (CategoryDiscount::find(request()->id)->delete()) {
  171. return $this->successJson('ok');
  172. };
  173. }
  174. public function deleteFreigh(){
  175. if (DispatchClassify::find(request()->id)->delete()){
  176. return $this->successJson("ok");
  177. }
  178. }
  179. public function getChild()
  180. {
  181. $level = \YunShop::request()->level;
  182. $ids = \YunShop::request()->cate;
  183. $ids = explode(',', $ids);
  184. $returnArray = CategoryModel::uniacid()
  185. ->getQuery()
  186. ->select(['id', 'name', 'enabled', 'parent_id'])
  187. ->where('plugin_id', 0)
  188. ->where('deleted_at', null);
  189. switch ($level) {
  190. case 2:
  191. $returnArray = $returnArray->where('level', 2);
  192. break;
  193. case 3:
  194. $returnArray = $returnArray->where('level', 3);
  195. break;
  196. }
  197. $returnArray = $returnArray->whereIn('parent_id', $ids)
  198. ->orderBy('parent_id', 'asc')->get();
  199. return $this->successJson('ok', $returnArray);
  200. }
  201. public function getAllCate(){
  202. return $this->successJson('success',(new Category())->getAllCategory());
  203. }
  204. }