SystemEventServices.php 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528
  1. <?php
  2. namespace app\services\system;
  3. use app\dao\system\SystemEventDao;
  4. use app\services\BaseServices;
  5. use crmeb\exceptions\AdminException;
  6. use think\facade\Db;
  7. class SystemEventServices extends BaseServices
  8. {
  9. public function __construct(SystemEventDao $dao)
  10. {
  11. $this->dao = $dao;
  12. }
  13. /**
  14. * 获取场景列表
  15. * @return \string[][]
  16. * @author wuhaotian
  17. * @email 442384644@qq.com
  18. * @date 2024/6/7
  19. */
  20. public function getMarkList()
  21. {
  22. // $data = [
  23. // [
  24. // 'label' => '用户注册',
  25. // 'value' => 'user_register',
  26. // 'data' => [
  27. // 'uid' => '用户uid',
  28. // 'nickname' => '用户昵称',
  29. // 'phone' => '用户手机号',
  30. // 'add_time' => '用户注册时间',
  31. // 'user_type' => '用户来源',
  32. // ]
  33. // ],
  34. // [
  35. // 'label' => '用户登录',
  36. // 'value' => 'user_login',
  37. // 'data' => [
  38. // 'uid' => '用户uid',
  39. // 'nickname' => '用户昵称',
  40. // 'phone' => '用户手机号',
  41. // 'add_time' => '用户注册时间',
  42. // 'login_time' => '用户登录时间',
  43. // 'user_type' => '用户来源',
  44. // ]
  45. // ],
  46. // [
  47. // 'label' => '用户注销',
  48. // 'value' => 'user_cancel',
  49. // 'data' => [
  50. // 'uid' => '用户uid',
  51. // 'nickname' => '用户昵称',
  52. // 'phone' => '用户手机号',
  53. // 'add_time' => '用户注册时间',
  54. // 'cancel_time' => '用户注销时间',
  55. // 'user_type' => '用户来源',
  56. // ]
  57. // ],
  58. // [
  59. // 'label' => '用户修改信息',
  60. // 'value' => 'user_change_info',
  61. // 'data' => [
  62. // 'uid' => '用户uid',
  63. // 'nickname' => '用户昵称',
  64. // 'phone' => '用户手机号',
  65. // 'avatar' => '用户头像',
  66. // 'add_time' => '用户注册时间',
  67. // 'user_type' => '用户来源',
  68. // ]
  69. // ],
  70. // [
  71. // 'label' => '绑定推广关系',
  72. // 'value' => 'user_spread',
  73. // 'data' => [
  74. // 'uid' => '用户uid',
  75. // 'nickname' => '用户昵称',
  76. // 'spread_uid' => '上级用户uid',
  77. // 'spread_time' => '用户绑定时间',
  78. // 'user_type' => '用户来源',
  79. // ]
  80. // ],
  81. // [
  82. // 'label' => '用户签到',
  83. // 'value' => 'user_sign',
  84. // 'data' => [
  85. // 'uid' => '用户uid',
  86. // 'sign_point' => '签到积分',
  87. // 'sign_exp' => '签到经验',
  88. // 'sign_time' => '签到时间',
  89. // ]
  90. // ],
  91. // [
  92. // 'label' => '用户充值',
  93. // 'value' => 'user_recharge',
  94. // 'data' => [
  95. // 'uid' => '用户uid',
  96. // 'id' => '订单id',
  97. // 'order_id' => '订单order_id',
  98. // 'nickname' => '用户昵称',
  99. // 'phone' => '用户电话',
  100. // 'price' => '充值金额',
  101. // 'give_price' => '赠送金额',
  102. // 'now_money' => '当前余额',
  103. // 'recharge_time' => '充值时间',
  104. // ]
  105. // ],
  106. // [
  107. // 'label' => '用户提现',
  108. // 'value' => 'user_extract',
  109. // 'data' => [
  110. // 'uid' => '用户uid',
  111. // 'phone' => '用户电话',
  112. // 'extract_type' => '提现类型',
  113. // 'extract_price' => '提现金额',
  114. // 'extract_fee' => '提现手续费',
  115. // 'extract_time' => '提现时间',
  116. // ]
  117. // ],
  118. // [
  119. // 'label' => '用户商品访问',
  120. // 'value' => 'user_product_visit',
  121. // 'data' => [
  122. // 'product_id' => '商品id',
  123. // 'uid' => '用户uid',
  124. // 'visit_time' => '访问时间',
  125. // ]
  126. // ],
  127. // [
  128. // 'label' => '用户商品收藏',
  129. // 'value' => 'user_product_collect',
  130. // 'data' => [
  131. // 'product_id' => '商品id',
  132. // 'uid' => '用户uid',
  133. // 'collect_time' => '访问时间',
  134. // ]
  135. // ],
  136. // [
  137. // 'label' => '用户加入购物车',
  138. // 'value' => 'user_add_cart',
  139. // 'data' => [
  140. // 'product_id' => '商品id',
  141. // 'uid' => '用户uid',
  142. // 'cart_num' => '商品数量',
  143. // 'add_time' => '添加时间',
  144. // ]
  145. // ],
  146. // [
  147. // 'label' => '用户抽奖',
  148. // 'value' => 'user_lottery',
  149. // 'data' => [
  150. // 'uid' => '用户uid',
  151. // 'lottery_id' => '抽奖id',
  152. // 'prize_id' => '奖品id',
  153. // 'record_id' => '中奖记录id',
  154. // 'lottery_time' => '抽奖时间',
  155. // ]
  156. // ],
  157. // [
  158. // 'label' => '订单创建',
  159. // 'value' => 'order_create',
  160. // 'data' => [
  161. // 'uid' => '用户uid',
  162. // 'id' => '订单id',
  163. // 'order_id' => '订单order_id',
  164. // 'real_name' => '用户名称',
  165. // 'user_phone' => '用户电话',
  166. // 'user_address' => '用户地址',
  167. // 'total_num' => '商品总数',
  168. // 'pay_price' => '支付金额',
  169. // 'pay_postage' => '支付邮费',
  170. // 'deduction_price' => '积分抵扣金额',
  171. // 'coupon_price' => '优惠券抵扣金额',
  172. // 'store_name' => '商品名称',
  173. // 'add_time' => '订单创建时间',
  174. // ]
  175. // ],
  176. // [
  177. // 'label' => '订单取消',
  178. // 'value' => 'order_cancel',
  179. // 'data' => [
  180. // 'uid' => '用户uid',
  181. // 'id' => '订单id',
  182. // 'order_id' => '订单order_id',
  183. // 'real_name' => '用户名称',
  184. // 'user_phone' => '用户电话',
  185. // 'user_address' => '用户地址',
  186. // 'total_num' => '商品总数',
  187. // 'pay_price' => '支付金额',
  188. // 'deduction_price' => '积分抵扣金额',
  189. // 'coupon_price' => '优惠券抵扣金额',
  190. // 'cancel_time' => '订单取消时间',
  191. // ]
  192. // ],
  193. // [
  194. // 'label' => '订单支付',
  195. // 'value' => 'order_pay',
  196. // 'data' => [
  197. // 'uid' => '用户uid',
  198. // 'id' => '订单id',
  199. // 'order_id' => '订单order_id',
  200. // 'real_name' => '用户名称',
  201. // 'user_phone' => '用户电话',
  202. // 'user_address' => '用户地址',
  203. // 'total_num' => '商品总数',
  204. // 'pay_price' => '支付金额',
  205. // 'pay_postage' => '支付邮费',
  206. // 'deduction_price' => '积分抵扣金额',
  207. // 'coupon_price' => '优惠券抵扣金额',
  208. // 'store_name' => '商品名称',
  209. // 'add_time' => '订单创建时间',
  210. // ]
  211. // ],
  212. // [
  213. // 'label' => '订单收货/核销',
  214. // 'value' => 'order_take',
  215. // 'data' => [
  216. // 'uid' => '用户uid',
  217. // 'id' => '订单id',
  218. // 'order_id' => '订单order_id',
  219. // 'real_name' => '用户名称',
  220. // 'user_phone' => '用户电话',
  221. // 'user_address' => '用户地址',
  222. // 'total_num' => '商品总数',
  223. // 'pay_price' => '支付金额',
  224. // 'pay_postage' => '支付邮费',
  225. // 'deduction_price' => '积分抵扣金额',
  226. // 'coupon_price' => '优惠券抵扣金额',
  227. // 'store_name' => '商品名称',
  228. // 'add_time' => '订单创建时间',
  229. // ]
  230. // ],
  231. // [
  232. // 'label' => '订单发起退款',
  233. // 'value' => 'order_initiated_refund',
  234. // 'data' => [
  235. // 'uid' => '用户uid',
  236. // 'refund_order_id' => '退款订单order_id',
  237. // 'order_id' => '订单order_id',
  238. // 'real_name' => '用户名称',
  239. // 'user_phone' => '用户电话',
  240. // 'user_address' => '用户地址',
  241. // 'refund_num' => '退款数量',
  242. // 'refund_price' => '退款金额',
  243. // 'refund_time' => '退款发起时间',
  244. // ]
  245. // ],
  246. // [
  247. // 'label' => '用户取消退款',
  248. // 'value' => 'order_refund_cancel',
  249. // 'data' => [
  250. // 'uid' => '用户uid',
  251. // 'id' => '退款订单id',
  252. // 'store_order_id' => '对应正常订单id',
  253. // 'order_id' => '退款订单order_id',
  254. // 'refund_num' => '退款数量',
  255. // 'refund_price' => '退款金额',
  256. // 'cancel_time' => '拒绝时间',
  257. // ]
  258. // ],
  259. // [
  260. // 'label' => '佣金到账',
  261. // 'value' => 'order_brokerage',
  262. // 'data' => [
  263. // 'uid' => '推广人uid',
  264. // 'order_id' => '订单order_id',
  265. // 'phone' => '推广人电话',
  266. // 'brokeragePrice' => '佣金金额',
  267. // 'goodsName' => '商品名称',
  268. // 'goodsPrice' => '订单金额',
  269. // 'add_time' => '到账时间',
  270. // ]
  271. // ],
  272. // [
  273. // 'label' => '积分到账',
  274. // 'value' => 'order_point',
  275. // 'data' => [
  276. // 'uid' => '用户uid',
  277. // 'order_id' => '订单order_id',
  278. // 'phone' => '用户电话',
  279. // 'storeTitle' => '商品名称',
  280. // 'give_integral' => '赠送积分',
  281. // 'integral' => '总积分',
  282. // 'add_time' => '赠送时间',
  283. // ]
  284. // ],
  285. // [
  286. // 'label' => '申请开票',
  287. // 'value' => 'order_invoice',
  288. // 'data' => [
  289. // 'uid' => '用户uid',
  290. // 'order_id' => '订单order_id',
  291. // 'phone' => '用户电话',
  292. // 'invoice_id' => '发票id',
  293. // 'add_time' => '开票时间',
  294. // ]
  295. // ],
  296. // [
  297. // 'label' => '订单评价',
  298. // 'value' => 'order_comment',
  299. // 'data' => [
  300. // 'uid' => '用户uid',
  301. // 'oid' => '订单id',
  302. // 'unique' => '商品规格唯一值',
  303. // 'suk' => '商品规格',
  304. // 'product_id' => '商品id',
  305. // 'add_time' => '评价时间',
  306. // ]
  307. // ],
  308. // [
  309. // 'label' => '管理员登录',
  310. // 'value' => 'admin_login',
  311. // 'data' => [
  312. // 'id' => '管理员id',
  313. // 'account' => '管理员账号',
  314. // 'head_pic' => '管理员头像',
  315. // 'real_name' => '管理员名称',
  316. // 'login_time' => '登录时间',
  317. // ]
  318. // ],
  319. //
  320. // [
  321. // 'label' => '后台提现成功',
  322. // 'value' => 'admin_extract_success',
  323. // 'data' => [
  324. // 'uid' => '用户uid',
  325. // 'price' => '提现金额',
  326. // 'pay_type' => '提现类型',
  327. // 'nickname' => '用户昵称',
  328. // 'phone' => '用户电话',
  329. // 'success_time' => '成功时间'
  330. // ]
  331. // ],
  332. // [
  333. // 'label' => '后台提现失败',
  334. // 'value' => 'admin_extract_fail',
  335. // 'data' => [
  336. // 'uid' => '用户uid',
  337. // 'price' => '提现金额',
  338. // 'pay_type' => '提现类型',
  339. // 'nickname' => '用户昵称',
  340. // 'phone' => '用户电话',
  341. // 'fail_time' => '失败时间'
  342. // ]
  343. // ],
  344. // [
  345. // 'label' => '后台充值退款',
  346. // 'value' => 'admin_recharge_refund',
  347. // 'data' => [
  348. // 'uid' => '用户uid',
  349. // 'refund_price' => '退款金额',
  350. // 'now_money' => '剩余余额',
  351. // 'nickname' => '用户昵称',
  352. // 'phone' => '用户电话',
  353. // 'refund_time' => '退款时间',
  354. // ]
  355. // ],
  356. // [
  357. // 'label' => '后台修改订单改价',
  358. // 'value' => 'admin_order_change',
  359. // 'data' => [
  360. // 'uid' => '用户uid',
  361. // 'order_id' => '订单order_id',
  362. // 'pay_price' => '修改后订单金额',
  363. // 'gain_integral' => '修改后订单赠送积分',
  364. // 'change_time' => '修改时间',
  365. // ]
  366. // ],
  367. // [
  368. // 'label' => '后台订单发货',
  369. // 'value' => 'admin_order_express',
  370. // 'data' => [
  371. // 'uid' => '用户uid',
  372. // 'real_name' => '用户名称',
  373. // 'user_phone' => '用户电话',
  374. // 'user_address' => '用户地址',
  375. // 'order_id' => '订单order_id',
  376. // 'delivery_name' => '快递名称/配送员名称',
  377. // 'delivery_id' => '快递单号/配送员电话',
  378. // 'express_time' => '发货事件',
  379. // ]
  380. // ],
  381. // [
  382. // 'label' => '后台订单退款',
  383. // 'value' => 'admin_order_refund_success',
  384. // 'data' => [
  385. // 'uid' => '用户uid',
  386. // 'order_id' => '订单order_id',
  387. // 'real_name' => '用户名称',
  388. // 'user_phone' => '用户电话',
  389. // 'user_address' => '用户地址',
  390. // 'total_num' => '商品总数',
  391. // 'pay_price' => '支付金额',
  392. // 'refund_reason_wap' => '退款理由类型',
  393. // 'refund_reason_wap_explain' => '退款理由',
  394. // 'refund_price' => '实际退款金额',
  395. // 'refund_time' => '退款时间',
  396. // ]
  397. // ],
  398. // [
  399. // 'label' => '后台订单拒绝退款',
  400. // 'value' => 'admin_order_refund_fail',
  401. // 'data' => [
  402. // 'uid' => '用户uid',
  403. // 'id' => '退款订单id',
  404. // 'store_order_id' => '对应正常订单id',
  405. // 'order_id' => '退款订单order_id',
  406. // 'refund_num' => '退款数量',
  407. // 'refund_price' => '退款金额',
  408. // 'refuse_reason' => '拒绝退款理由',
  409. // 'refuse_time' => '拒绝时间',
  410. // ]
  411. // ],
  412. // ];
  413. // foreach ($data as &$item){
  414. // $item['data'] = json_encode($item['data']);
  415. // }
  416. // app()->make(SystemEventDataServices::class)->saveAll($data);
  417. $data = app()->make(SystemEventDataServices::class)->selectList([])->toArray();
  418. foreach ($data as &$item) {
  419. $str = '$data = ' . var_export(json_decode($item['data'], true), true);
  420. $item['data'] = str_replace(['array (', ')'], ['[', ']'], $str);
  421. }
  422. return $data;
  423. }
  424. /**
  425. * 获取事件列表
  426. * @return array
  427. * @throws \ReflectionException
  428. * @throws \think\db\exception\DataNotFoundException
  429. * @throws \think\db\exception\DbException
  430. * @throws \think\db\exception\ModelNotFoundException
  431. * @author wuhaotian
  432. * @email 442384644@qq.com
  433. * @date 2024/6/7
  434. */
  435. public function getEventList()
  436. {
  437. [$page, $limit] = $this->getPageValue();
  438. $list = $this->dao->selectList(['is_del' => 0], 'id,name,mark,content,add_time,is_open', $page, $limit, 'id desc')->toArray();
  439. $count = $this->dao->getCount(['is_del' => 0]);
  440. foreach ($list as &$item) {
  441. $item['add_time'] = date('Y-m-d H:i:s', $item['add_time']);
  442. foreach ($this->getMarkList() as $markItem) {
  443. if ($markItem['value'] == $item['mark']) {
  444. $item['mark_name'] = $markItem['label'];
  445. }
  446. }
  447. }
  448. return compact('list', 'count');
  449. }
  450. /**
  451. * 获取事件详情
  452. * @param $id
  453. * @return array
  454. * @throws \think\db\exception\DataNotFoundException
  455. * @throws \think\db\exception\DbException
  456. * @throws \think\db\exception\ModelNotFoundException
  457. * @author wuhaotian
  458. * @email 442384644@qq.com
  459. * @date 2024/6/7
  460. */
  461. public function getEventInfo($id)
  462. {
  463. $info = $this->dao->get($id);
  464. if (!$info) throw new AdminException('事件不存在');
  465. $info = $info->toArray();
  466. $info['add_time'] = date('Y-m-d H:i:s', $info['add_time']);
  467. $info['customCode'] = "<?php\n\n" . json_decode($info['customCode'], true);
  468. return $info;
  469. }
  470. public function saveEvent($data)
  471. {
  472. $data['add_time'] = time();
  473. $data['customCode'] = json_encode(preg_replace('/<\?php\s*\n/', '', $data['customCode']));
  474. if (!$data['id']) {
  475. unset($data['id']);
  476. $res = $this->dao->save($data);
  477. } else {
  478. $res = $this->dao->update(['id' => $data['id']], $data);
  479. }
  480. if (!$res) throw new AdminException(100006);
  481. return true;
  482. }
  483. /**
  484. * 删除事件
  485. * @param $id
  486. * @return bool
  487. * @throws \think\db\exception\DataNotFoundException
  488. * @throws \think\db\exception\DbException
  489. * @throws \think\db\exception\ModelNotFoundException
  490. * @author wuhaotian
  491. * @email 442384644@qq.com
  492. * @date 2024/6/7
  493. */
  494. public function eventDel($id)
  495. {
  496. $info = $this->dao->get($id);
  497. if (!$info) throw new AdminException('事件不存在');
  498. $info->is_del = 1;
  499. $info->save();
  500. return true;
  501. }
  502. /**
  503. * 设置事件状态
  504. * @param $id
  505. * @param $is_open
  506. * @return bool
  507. * @author wuhaotian
  508. * @email 442384644@qq.com
  509. * @date 2024/6/7
  510. */
  511. public function setEventStatus($id, $is_open)
  512. {
  513. $res = $this->dao->update(['id' => $id], ['is_open' => $is_open]);
  514. if (!$res) throw new AdminException(100014);
  515. return true;
  516. }
  517. }