PackagesKdHelper.php 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283
  1. <?php
  2. /*
  3. * @Description: 宽带套餐
  4. * @Version: *
  5. * @Autor: lexuan
  6. * @Date: 2024-11-25 16:38:13
  7. * @LastEditors: lexuan
  8. * @LastEditTime: 2024-11-25 16:38:13
  9. */
  10. namespace App\DataApiNew\Helper;
  11. use App\DataApiNew\Models\PackagesKd;
  12. use App\Models\Pages;
  13. use App\Models\SpoutExport;
  14. use App\Models\SpoutImport;
  15. use Illuminate\Http\Request;
  16. use Illuminate\Support\Facades\DB;
  17. use Vinkla\Hashids\Facades\Hashids;
  18. class PackagesKdHelper
  19. {
  20. // 查询条件
  21. public function whens($query, $request)
  22. {
  23. return $query
  24. ->when($request->filled('id'), fn ($q) => $q->where('id', $request->id))
  25. ->when($request->filled('name'), fn ($q) => $q->where('name', 'like', "%$request->name%"))
  26. ->when($request->has('rebate_type'), fn ($q) => $q->where('rebate_type', $request->rebate_type))
  27. ->when($request->has('is_upload'), fn ($q) => $q->where('is_upload', $request->is_upload))
  28. ->when($request->filled('operator_id'), fn ($q) => $q->where('operator_id', $request->operator_id));
  29. }
  30. // 查询列表
  31. public function select(Request $request, $selectFields = [])
  32. {
  33. if (empty($selectFields)) {
  34. $selectFields = PackagesKd::$selectFields;
  35. }
  36. $page = new Pages($request, PackagesKd::query());
  37. $page->withRelations(['suppliers']);
  38. $page->before(function ($query) use ($request, $selectFields) {
  39. $query->select($selectFields);
  40. return $this->whens($query, $request)
  41. ->orderBy('is_upload', 'desc')
  42. ->orderBy(DB::raw('CAST(yj AS UNSIGNED)'), 'desc')
  43. ->orderby("weight", "desc")
  44. ->orderBy('created_at', 'desc');;
  45. });
  46. $result = $page->paginate();
  47. return $result;
  48. }
  49. // 导出
  50. public function export(Request $request)
  51. {
  52. $query = PackagesKd::select(PackagesKd::$selectFields);
  53. $query = $this->whens($query, $request);
  54. $query->orderBy('created_at', 'desc');
  55. $header = [
  56. '名称' => 'name',
  57. '简介' => 'mini_text',
  58. '主图' => 'image',
  59. '详情' => 'details',
  60. '运营商' => 'operator_id',
  61. '佣金政策' => 'yjzc',
  62. '套餐类型' => 'type_id',
  63. '月租' => 'monthly_rent',
  64. '权重' => 'weight',
  65. '上游套餐编码' => 'upstream_code',
  66. '生产方式' => 'production_type_id',
  67. '是否上架' => 'is_upload',
  68. '是否需要身份证号' => 'need_idcard',
  69. '是否需要上传身份证照片' => 'is_upload_idcard',
  70. '状态' => 'status',
  71. '外部产品编码' => 'out_package_id',
  72. '归属地' => 'belonging_place',
  73. '流量额度' => 'data_quota',
  74. '通话时长' => 'call_duration',
  75. '是否可选号' => 'is_choose_number',
  76. '首充金额' => 'first_recharge_amount',
  77. '直接提交局方,0表示不提,1表示提' => 'direct_send_status',
  78. '线上或本地号库切换,默认为0:无号库,1:本地号库,2:线上号库' => 'uporlocal',
  79. '颜色' => 'color',
  80. '最小年龄' => 'min_age',
  81. '最大年龄' => 'max_age',
  82. '亲情号' => 'family_number',
  83. '靓号' => 'beautiful_number',
  84. '可否自选归属地' => 'ownership_change',
  85. '优惠有效期,单位月' => 'discount_month',
  86. '套餐月租' => 'month_rent',
  87. '通用流量' => 'general_traffic',
  88. '定向流量' => 'directional_traffic',
  89. '长期资费/短期资费' => 'long_short_tariff',
  90. '附带权益' => 'interest',
  91. '原月租' => 'original_month_rent',
  92. '封面图' => 'cover_img',
  93. '注意事项' => 'attention',
  94. '只发货地区' => 'noly_delivery_area',
  95. '亮点' => 'bright',
  96. '返佣类型 1:次月返 2:秒返' => 'rebate_type',
  97. '知识库' => 'knowledge_base',
  98. '是否选号' => 'select_status',
  99. '是否校验' => 'is_valid',
  100. '前置校验编码' => 'valid_req_code',
  101. '套餐标签' => 'tag_ids',
  102. '小店套餐标签' => 'shop_tag_ids',
  103. '定向流量' => 'data_orientation',
  104. '通用流量' => 'data_usual',
  105. '是否允许直播 0:不允许 1:允许' => 'is_live',
  106. '删除时间' => 'deleted_at',
  107. '运营商标识图' => 'ident_image',
  108. '下架时间' => 'delist_time',
  109. '产品类型 0号卡 1宽带' => 'product_type',
  110. '网速' => 'internet_speed',
  111. '供货商id' => 'supplier_id',
  112. '结佣条件' => 'commission_terms',
  113. ];
  114. $getEnValue = $this->getEnValue();
  115. $excel = new SpoutExport($header);
  116. $excel->setData($query->get());
  117. $result = $excel->setEnum($getEnValue)->spoutToExcel('excel_out');
  118. return $result ? success($result['url']) : error();
  119. }
  120. // 导入
  121. public function import(Request $request)
  122. {
  123. $header = [
  124. '名称' => 'name',
  125. '简介' => 'mini_text',
  126. '主图' => 'image',
  127. '详情' => 'details',
  128. '运营商' => 'operator_id',
  129. '佣金政策' => 'yjzc',
  130. '套餐类型' => 'type_id',
  131. '月租' => 'monthly_rent',
  132. '权重' => 'weight',
  133. '上游套餐编码' => 'upstream_code',
  134. '生产方式' => 'production_type_id',
  135. '是否上架' => 'is_upload',
  136. '是否需要身份证号' => 'need_idcard',
  137. '是否需要上传身份证照片' => 'is_upload_idcard',
  138. '状态' => 'status',
  139. '外部产品编码' => 'out_package_id',
  140. '归属地' => 'belonging_place',
  141. '流量额度' => 'data_quota',
  142. '通话时长' => 'call_duration',
  143. '是否可选号' => 'is_choose_number',
  144. '首充金额' => 'first_recharge_amount',
  145. '直接提交局方,0表示不提,1表示提' => 'direct_send_status',
  146. '线上或本地号库切换,默认为0:无号库,1:本地号库,2:线上号库' => 'uporlocal',
  147. '颜色' => 'color',
  148. '最小年龄' => 'min_age',
  149. '最大年龄' => 'max_age',
  150. '亲情号' => 'family_number',
  151. '靓号' => 'beautiful_number',
  152. '可否自选归属地' => 'ownership_change',
  153. '优惠有效期,单位月' => 'discount_month',
  154. '套餐月租' => 'month_rent',
  155. '通用流量' => 'general_traffic',
  156. '定向流量' => 'directional_traffic',
  157. '长期资费/短期资费' => 'long_short_tariff',
  158. '附带权益' => 'interest',
  159. '原月租' => 'original_month_rent',
  160. '封面图' => 'cover_img',
  161. '注意事项' => 'attention',
  162. '只发货地区' => 'noly_delivery_area',
  163. '亮点' => 'bright',
  164. '返佣类型 1:次月返 2:秒返' => 'rebate_type',
  165. '知识库' => 'knowledge_base',
  166. '是否选号' => 'select_status',
  167. '是否校验' => 'is_valid',
  168. '前置校验编码' => 'valid_req_code',
  169. '套餐标签' => 'tag_ids',
  170. '小店套餐标签' => 'shop_tag_ids',
  171. '定向流量' => 'data_orientation',
  172. '通用流量' => 'data_usual',
  173. '是否允许直播 0:不允许 1:允许' => 'is_live',
  174. '删除时间' => 'deleted_at',
  175. '运营商标识图' => 'ident_image',
  176. '下架时间' => 'delist_time',
  177. '产品类型 0号卡 1宽带' => 'product_type',
  178. '网速' => 'internet_speed',
  179. '供货商id' => 'supplier_id',
  180. '结佣条件' => 'commission_terms',
  181. ];
  182. $getEnValue = $this->getEnValue();
  183. $SpoutImport = new SpoutImport($header);
  184. $dataList = $SpoutImport->setRequest($request)->getExcelData();
  185. return $dataList;
  186. }
  187. // 获取枚举值
  188. public function getEnValue()
  189. {
  190. $data = [
  191. 'open_status' => [
  192. 0 => "待开卡",
  193. 1 => "开卡中",
  194. ]
  195. ];
  196. return $data;
  197. }
  198. // 查询一条
  199. public function find(Request $request)
  200. {
  201. $request->validate([
  202. 'id' => 'required|integer',
  203. ]);
  204. $result = PackagesKd::where(['id' => $request->id])->select(PackagesKd::$selectFields)->first();
  205. return success($result);
  206. }
  207. // 添加
  208. public function insert(Request $request)
  209. {
  210. $request->validate([
  211. 'name' => 'required',
  212. ]);
  213. sys_log($request, '添加套餐', '宽带套餐');
  214. $result = PackagesKd::create($request->all());
  215. if ($result) {
  216. // 生成套餐秘钥
  217. PackagesKd::where('id', $result->id)->update(['package_key' => Hashids::encode($result->id)]);
  218. return success();
  219. } else {
  220. return error();
  221. }
  222. }
  223. // 修改
  224. public function update(Request $request)
  225. {
  226. $request->validate([
  227. 'id' => 'required|integer',
  228. ]);
  229. sys_log($request, '修改套餐', '宽带套餐');
  230. $result = PackagesKd::where(['id' => $request->id])->update($request->all());
  231. if ($result) {
  232. return success();
  233. } else {
  234. return error();
  235. }
  236. }
  237. // 删除
  238. public function delete(Request $request)
  239. {
  240. $request->validate([
  241. 'ids' => 'required',
  242. ]);
  243. sys_log($request, '删除套餐', '宽带套餐');
  244. $id_str = $request->ids;
  245. $arr = explode(",", $id_str);
  246. // 查询是否存在子数据
  247. // $count = Shop::whereIn('tm_id',$arr)->count();
  248. // if($count > 0){
  249. // return ['code'=>0,'msg'=>"存在子数据,禁止删除"];
  250. // }
  251. $result = PackagesKd::whereIn('id', $arr)->delete();
  252. if ($result) {
  253. return success();
  254. } else {
  255. return error();
  256. }
  257. }
  258. }