WitnessProjectController.php 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354
  1. <?php
  2. namespace App\Http\Controllers\Admin\WitnessProject;
  3. use App\Http\Controllers\Controller;
  4. use App\Http\Models\Role;
  5. use App\Http\Models\Site;
  6. use App\Http\Models\WitnessProjectIntroduce;
  7. use App\Http\Models\WitnessProjectRenew;
  8. use Illuminate\Http\Request;
  9. use Illuminate\Contracts\View\Factory;
  10. use Illuminate\Http\JsonResponse;
  11. use Illuminate\Support\Facades\DB;
  12. use Illuminate\View\View;
  13. class WitnessProjectController extends Controller
  14. {
  15. const GIFT_LIST = [
  16. 0 => '请选择礼品名称',
  17. 1 => '书籍',
  18. 2 => '高档真丝礼盒',
  19. 3 => '京东E卡',
  20. 4 => '油卡',
  21. ];
  22. const DURATION_RENEWALS_LIST = [
  23. 0 => '请选择续费时长',
  24. 1 => '1年',
  25. 2 => '2年',
  26. 3 => '3年',
  27. ];
  28. const NUMBER_RENEWALS = [
  29. 0 => '请选择续费次数',
  30. 1 => '第1次',
  31. 2 => '第2次',
  32. 3 => '第3次',
  33. 4 => '第4次',
  34. 5 => '第5次',
  35. 6 => '第6次',
  36. 7 => '第7次',
  37. ];
  38. const ORDER_VOLUME_LIST = [
  39. 0 => '请选择订单',
  40. 1 => '第1单',
  41. 2 => '第2单',
  42. 3 => '第3单',
  43. ];
  44. const ROLE_LIST = [
  45. 0 => '请选择角色',
  46. 1 => '对接人',
  47. 2 => '决策人',
  48. 3 => '老板',
  49. ];
  50. /**
  51. * 见证人 续费
  52. * @param Request $request
  53. * @param $siteId
  54. * @return Factory|JsonResponse|View
  55. */
  56. public function renew(Request $request, $siteId)
  57. {
  58. if (!$request->ajax()) {
  59. return view('admin/witness_project/renew', [
  60. 'siteId' => $siteId,
  61. ]);
  62. }
  63. $list = WitnessProjectRenew::query()
  64. ->where('site_id', $siteId)
  65. ->orderByDesc('id')
  66. ->paginate($request->input('pageSize') ?? TABLE_PAGE_SIZE);
  67. foreach ($list as $item) {
  68. $item->number_renewals = self::NUMBER_RENEWALS[$item->number_renewals] ?? '';
  69. $item->duration_renewals = self::DURATION_RENEWALS_LIST[$item->duration_renewals] ?? '';
  70. $item->gift_name = self::GIFT_LIST[$item->gift_name] ?? '';
  71. $item->position = self::ROLE_LIST[$item->position] ?? '';
  72. }
  73. return response()->json([
  74. 'rows' => $list->items(),
  75. 'total' => $list->total()
  76. ]);
  77. }
  78. /**
  79. * 编辑
  80. * @param Request $request
  81. * @param $id
  82. * @param $siteId
  83. * @return Factory|View
  84. */
  85. public function renewAdd(Request $request, $id, $siteId)
  86. {
  87. if (!$request->ajax()) {
  88. $info = WitnessProjectRenew::query()
  89. ->where('site_id', $siteId)
  90. ->where('id', $id)
  91. ->first();
  92. return view('admin/witness_project/renew_add', [
  93. 'info' => $info,
  94. 'siteId' => $siteId,
  95. 'roleList' => self::ROLE_LIST,
  96. 'giftList' => self::GIFT_LIST,
  97. 'durationRenewalsList' => self::DURATION_RENEWALS_LIST,
  98. 'numberRenewalsList' => self::NUMBER_RENEWALS,
  99. ]);
  100. }
  101. $request = $request->all();
  102. if (!preg_match("/^1[3456789]\d{9}$/", $request['tel'])) {
  103. return response()->json(['message' => '手机号输入有误'], 400);
  104. }
  105. if (!is_numeric($request['gift_amount'])) {
  106. return response()->json(['message' => '礼品金额必须为数字'], 400);
  107. }
  108. $update = [
  109. 'customer_name' => $request['customer_name'] ?? '',
  110. 'tel' => $request['tel'] ?? '',
  111. 'position' => $request['position'] ?? '',
  112. 'number_renewals' => $request['number_renewals'] ?? 0,
  113. 'duration_renewals' => $request['duration_renewals'] ?? 0,
  114. 'gift_name' => $request['gift_name'] ?? '',
  115. 'gift_amount' => $request['gift_amount'],
  116. 'gift_time' => $request['gift_time'] ?? date('Y-m-d'),
  117. 'remark' => $request['remark'] ?? '',
  118. 'site_id' => $request['site_id'] ?? 0,
  119. ];
  120. if (empty($id)) {
  121. WitnessProjectRenew::query()->insert($update);
  122. } else {
  123. WitnessProjectRenew::query()->where('id', $id)->update($update);
  124. }
  125. return response()->json(['message' => '操作成功']);
  126. }
  127. /**
  128. * 见证人 介绍
  129. * @param Request $request
  130. * @param $siteId
  131. * @return Factory|JsonResponse|View
  132. */
  133. public function introduce(Request $request, $siteId)
  134. {
  135. if (!$request->ajax()) {
  136. return view('admin/witness_project/introduce', [
  137. 'siteId' => $siteId
  138. ]);
  139. }
  140. $list = WitnessProjectIntroduce::query()
  141. ->where('site_id', $siteId)
  142. ->orderByDesc('id')
  143. ->paginate($request->input('pageSize') ?? TABLE_PAGE_SIZE);
  144. foreach ($list as $item) {
  145. $item->order_volume = self::ORDER_VOLUME_LIST[$item->order_volume] ?? '';
  146. $item->gift_name = self::GIFT_LIST[$item->gift_name] ?? '';
  147. $item->position = self::ROLE_LIST[$item->position] ?? '';
  148. }
  149. return response()->json([
  150. 'rows' => $list->items(),
  151. 'total' => $list->total()
  152. ]);
  153. }
  154. /**
  155. * 编辑
  156. * @param Request $request
  157. * @param $id
  158. * @param $siteId
  159. * @return Factory|View
  160. */
  161. public function introduceAdd(Request $request, $id, $siteId)
  162. {
  163. if (!$request->ajax()) {
  164. $info = WitnessProjectIntroduce::query()
  165. ->where('site_id', $siteId)
  166. ->where('id', $id)
  167. ->first();
  168. return view('admin/witness_project/introduce_add', [
  169. 'info' => $info,
  170. 'siteId' => $siteId,
  171. 'roleList' => self::ROLE_LIST,
  172. 'giftList' => self::GIFT_LIST,
  173. 'durationRenewalsList' => self::DURATION_RENEWALS_LIST,
  174. 'numberRenewalsList' => self::NUMBER_RENEWALS,
  175. 'orderVolumeList' => self::ORDER_VOLUME_LIST,
  176. ]);
  177. }
  178. $request = $request->all();
  179. if (!preg_match("/^1[3456789]\d{9}$/", $request['tel'])) {
  180. return response()->json(['message' => '手机号输入有误'], 400);
  181. }
  182. if (!is_numeric($request['gift_amount'])) {
  183. return response()->json(['message' => '礼品金额必须为数字'], 400);
  184. }
  185. $update = [
  186. 'customer_name' => $request['customer_name'] ?? '',
  187. 'tel' => $request['tel'] ?? '',
  188. 'position' => $request['position'] ?? 0,
  189. 'order_volume' => $request['order_volume'] ?? 0,
  190. 'gift_name' => $request['gift_name'] ?? '',
  191. 'gift_amount' => $request['gift_amount'],
  192. 'gift_time' => $request['gift_time'] ?? date('Y-m-d'),
  193. 'transaction_customer' => $request['transaction_customer'] ?? '',
  194. 'remark' => $request['remark'] ?? '',
  195. 'site_id' => $request['site_id'] ?? 0,
  196. ];
  197. if (empty($id)) {
  198. WitnessProjectIntroduce::query()->insert($update);
  199. } else {
  200. WitnessProjectIntroduce::query()->where('id', $id)->update($update);
  201. }
  202. return response()->json(['message' => '操作成功']);
  203. }
  204. /**
  205. * 删除
  206. * @param Request $request
  207. * @param $type
  208. * @return JsonResponse
  209. */
  210. public function deleteRow(Request $request, $type)
  211. {
  212. $ids = $request->input('ids');
  213. if ($type == 1) {
  214. WitnessProjectRenew::query()->whereIn('id', $ids)->update(['deleted_at' => date('Y-m-d H:i:s')]);
  215. }
  216. if ($type == 2) {
  217. WitnessProjectIntroduce::query()->whereIn('id', $ids)->update(['deleted_at' => date('Y-m-d H:i:s')]);
  218. }
  219. return response()->json(['message' => '操作成功']);
  220. }
  221. /**
  222. * 汇总
  223. * @param Request $request
  224. * @return Factory|JsonResponse|View
  225. */
  226. public function renewSummary(Request $request)
  227. {
  228. if (!$request->ajax()) {
  229. return view('admin/witness_project/renew_summary', [
  230. 'services' => Role::getUsers(Role::TYPE_SERVER),
  231. 'sellerUsers' => Role::getUsers(Role::TYPE_SELLER),
  232. ]);
  233. }
  234. /** @var $list object */
  235. $list = $this->build($request, WitnessProjectRenew::query())
  236. ->orderByDesc('id')
  237. ->paginate($request->input('pageSize') ?? TABLE_PAGE_SIZE);
  238. $list = $this->combination($list);
  239. return response()->json([
  240. 'rows' => $list->items(),
  241. 'total' => $list->total()
  242. ]);
  243. }
  244. /**
  245. * 查询
  246. * @param $request object
  247. * @param $result object
  248. * @return object
  249. */
  250. private function build($request, $result)
  251. {
  252. $keyword = $request->input('keyword');
  253. if (!empty($keyword)) {
  254. $siteIds = Site::query()->where('cn_title', 'like', '%' . $keyword . '%')->pluck('id');
  255. $result->whereIn('site_id', $siteIds);
  256. }
  257. $sellerId = $request->input('sellerId');
  258. if (!empty($sellerId)) {
  259. $siteIds = DB::table('user_has_sites')->where('user_id', $sellerId)->pluck('site_id') ?? [];
  260. $result->whereIn('site_id', $siteIds);
  261. }
  262. $serverId = $request->input('serverId');
  263. if (!empty($serverId)) {
  264. $siteIds = DB::table('user_has_sites')->where('user_id', $serverId)->pluck('site_id') ?? [];
  265. $result->whereIn('site_id', $siteIds);
  266. }
  267. return $result;
  268. }
  269. /**
  270. * 组合字段
  271. * @param $list object
  272. * @return mixed
  273. */
  274. public function combination($list)
  275. {
  276. $siteList = Site::query()->pluck('cn_title', 'id');
  277. foreach ($list->items() as $item) {
  278. $item->position = self::ROLE_LIST[$item->position] ?? '';
  279. if (isset($item->number_renewals)) {
  280. $item->number_renewals = self::NUMBER_RENEWALS[$item->number_renewals] ?? '';
  281. }
  282. if (isset($item->duration_renewals)) {
  283. $item->duration_renewals = self::DURATION_RENEWALS_LIST[$item->duration_renewals] ?? '';
  284. }
  285. if (isset($item->gift_name)) {
  286. $item->gift_name = self::GIFT_LIST[$item->gift_name] ?? '';
  287. }
  288. if (isset($item->site_id)) {
  289. $item->site = $siteList[$item->site_id] ?? '';
  290. }
  291. if (isset($item->order_volume)) {
  292. $item->order_volume = self::ORDER_VOLUME_LIST[$item->order_volume] ?? '';
  293. }
  294. }
  295. return $list;
  296. }
  297. /**
  298. * 汇总2
  299. * @param Request $request
  300. * @return Factory|JsonResponse|View
  301. */
  302. public function introduceSummary(Request $request)
  303. {
  304. if (!$request->ajax()) {
  305. return view('admin/witness_project/introduce_summary', [
  306. 'services' => Role::getUsers(Role::TYPE_SERVER),
  307. 'sellerUsers' => Role::getUsers(Role::TYPE_SELLER),
  308. ]);
  309. }
  310. /** @var $list object */
  311. $list = $this->build($request, WitnessProjectIntroduce::query())
  312. ->orderByDesc('id')
  313. ->paginate($request->input('pageSize') ?? TABLE_PAGE_SIZE);
  314. $list = $this->combination($list);
  315. return response()->json([
  316. 'rows' => $list->items(),
  317. 'total' => $list->total()
  318. ]);
  319. }
  320. }