BatchDiscountController.php 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188
  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\Discount;
  12. use app\backend\modules\member\models\MemberLevel;
  13. use app\common\components\BaseController;
  14. use app\common\exceptions\ShopException;
  15. use app\common\facades\Setting;
  16. use app\common\models\GoodsCategory;
  17. use Illuminate\Support\Facades\DB;
  18. class BatchDiscountController extends BaseController
  19. {
  20. public function index()
  21. {
  22. return view('discount.discount')->render();
  23. }
  24. public function getSet(){
  25. $category = CategoryDiscount::uniacid()->get()->toArray();
  26. foreach ($category as $k => $item) {
  27. $category[$k]['category_ids'] = Category::select('id', 'name')->whereIn('id', explode(',', $item['category_ids']))->get()->toArray();
  28. }
  29. return $this->successJson('success',$category);
  30. }
  31. public function updateSet()
  32. {
  33. $form_data = request()->form_data;
  34. $id = request()->id;
  35. if (!$id) {
  36. throw new ShopException('参数错误!');
  37. }
  38. if ($form_data) {
  39. $form_data['discount_value'] = array_filter($form_data['discount_value']);
  40. $discount = $form_data['discount_value'];
  41. $categoryModel = CategoryDiscount::find($id);
  42. if(isset($form_data['category_ids'][0]['id'])){
  43. $form_data['category_ids']=array_column($form_data['category_ids'],'id');
  44. }
  45. $category_ids = implode(',', $form_data['category_ids']);
  46. $data = [
  47. 'category_ids' => $category_ids,
  48. 'uniacid' => \YunShop::app()->uniacid,
  49. 'level_discount_type' => $form_data['discount_type'],
  50. 'discount_method' => $form_data['discount_method'],
  51. 'discount_value' => $discount,
  52. 'created_at' => time(),
  53. ];
  54. $categoryModel->fill($data);
  55. if ($categoryModel->save()) {
  56. $goods_ids = GoodsCategory::select('goods_id')->whereIn('category_id', explode(',', $data['category_ids']))->get()->toArray();
  57. foreach ($goods_ids as $goods_id) {
  58. $item_id[] = $goods_id['goods_id'];
  59. }
  60. foreach ($item_id as $goodsId) {
  61. Discount::relationSave($goodsId, $data);
  62. }
  63. return $this->successJson('ok');
  64. }
  65. }
  66. $levels = MemberLevel::getMemberLevelList();
  67. $levels = array_merge($this->defaultLevel(), $levels);
  68. $categoryDiscount = CategoryDiscount::find($id);
  69. $categoryDiscount['category_ids'] = Category::select('id', 'name')
  70. ->whereIn('id', explode(',', $categoryDiscount['category_ids']))
  71. ->get()->toArray();
  72. return view('discount.set', [
  73. 'levels' => json_encode($levels),
  74. 'firstCate'=>(new Category())->getCategoryFirstLevel(),
  75. 'categoryDiscount' => json_encode($categoryDiscount),
  76. 'url' => json_encode(yzWebFullUrl('discount.batch-discount.update-set',['id' => $id])),
  77. ])->render();
  78. }
  79. /**
  80. * 商品-折扣全局设置
  81. */
  82. public function allSet()
  83. {
  84. $set_data = request()->form_data;
  85. if ($set_data)
  86. {
  87. $isSet = Setting::set('discount.all_set', $set_data);
  88. if ($isSet)
  89. {
  90. return $this->successJson('ok',$set_data);
  91. }else{
  92. return $this->successJson('设置失败');
  93. }
  94. }
  95. $set = Setting::get('discount.all_set');
  96. // return $this->successJson('ok', $set);
  97. return view('discount.all-set',[
  98. 'set' => json_encode($set),
  99. ])->render();
  100. }
  101. public function store()
  102. {
  103. $form_data = request()->form_data;
  104. if ($form_data) {
  105. $form_data['discount_value'] = array_filter($form_data['discount_value']);
  106. $discount = $form_data['discount_value'];
  107. $categorys = $form_data['search_categorys'];
  108. foreach ($categorys as $v){
  109. $categorys_r[] = $v['id'];
  110. }
  111. $category_ids = implode(',', $form_data['category_ids']);
  112. $data = [
  113. 'category_ids' => $category_ids,
  114. 'uniacid' => \YunShop::app()->uniacid,
  115. 'level_discount_type' => $form_data['discount_type'],
  116. 'discount_method' => $form_data['discount_method'],
  117. 'discount_value' => $discount,
  118. 'created_at' => time(),
  119. ];
  120. $model = new CategoryDiscount();
  121. $model->fill($data);
  122. if ($model->save()) {
  123. $goods_ids = GoodsCategory::select('goods_id')->whereIn('category_id', explode(',', $data['category_ids']))->get()->toArray();
  124. foreach ($goods_ids as $goods_id) {
  125. $item_id[] = $goods_id['goods_id'];
  126. }
  127. foreach ($item_id as $goodsId) {
  128. Discount::relationSave($goodsId, $data);
  129. }
  130. return $this->successJson('ok');
  131. }
  132. }
  133. $levels = MemberLevel::getMemberLevelList();
  134. $levels = array_merge($this->defaultLevel(), $levels);
  135. return view('discount.set', [
  136. 'levels' => json_encode($levels),
  137. 'firstCate'=>(new Category())->getCategoryFirstLevel(),
  138. 'url' => json_encode(yzWebFullUrl('discount.batch-discount.store')),
  139. ])->render();
  140. }
  141. public function selectCategory()
  142. {
  143. $kwd = \YunShop::request()->keyword;
  144. if ($kwd) {
  145. $category = Category::getNotOneCategorysByName($kwd);
  146. return $this->successJson('ok', $category);
  147. }
  148. }
  149. public function deleteSet()
  150. {
  151. if (CategoryDiscount::find(request()->id)->delete()) {
  152. return $this->successJson('ok');
  153. };
  154. }
  155. private function defaultLevel()
  156. {
  157. return [
  158. '0'=> [
  159. 'id' => "0",
  160. 'level' => "0",
  161. 'level_name' => \Setting::get('shop.member.level_name') ?: '普通会员'
  162. ],
  163. ];
  164. }
  165. }