RoutineSchemeServices.php 3.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. <?php
  2. namespace app\services\wechat;
  3. use app\dao\wechat\RoutineSchemeDao;
  4. use app\services\BaseServices;
  5. use crmeb\exceptions\AdminException;
  6. use crmeb\services\app\MiniProgramService;
  7. use crmeb\services\FormBuilder as Form;
  8. use think\facade\Route as Url;
  9. class RoutineSchemeServices extends BaseServices
  10. {
  11. public function __construct(RoutineSchemeDao $dao)
  12. {
  13. $this->dao = $dao;
  14. }
  15. public function schemeList($where)
  16. {
  17. [$page, $limit] = $this->getPageValue();
  18. $list = $this->dao->selectList($where, '*', $page, $limit, 'id desc', [], true);
  19. foreach ($list as &$item) {
  20. $item['add_time'] = date('Y-m-d H:i:s', $item['add_time']);
  21. $item['expire_time'] = $item['expire_time'] == 0 ? '永久' : date('Y-m-d H:i:s', $item['expire_time']);
  22. $item['http_url'] = sys_config('site_url') . '/surl/' . $item['id'];
  23. }
  24. $count = $this->dao->count($where);
  25. return compact('list', 'count');
  26. }
  27. public function schemeForm($id = 0)
  28. {
  29. if ($id) {
  30. $info = $this->dao->get($id);
  31. if ($info) $info = $info->toArray();
  32. } else {
  33. $info = [];
  34. }
  35. $field = [];
  36. $field[] = Form::input('title', '名称', $info['title'] ?? '')->placeholder('请填写链接名称');
  37. $field[] = Form::input('path', '小程序页面', $info['path'] ?? '')->placeholder('请填写小程序页面地址,可以携带参数,例:/pages/index/index?a=1&b=2');
  38. $field[] = Form::radio('expire_type', '到期类型', $info['expire_type'] ?? -1)->appendControl(0, [
  39. Form::dateTime('expire_num', '到期时间', $info['expire_time'] ?? 0)->appendRule('suffix', [
  40. 'type' => 'div',
  41. 'class' => 'tips-info',
  42. 'domProps' => ['innerHTML' => '有效期限必须在当前时间1分钟之后,30天之前']
  43. ]),
  44. ])->appendControl(1, [
  45. Form::input('expire_num', '有效天数', $info['expire_interval'] ?? 0),
  46. ])->options([['label' => '永久', 'value' => -1], ['label' => '到期时间', 'value' => 0], ['label' => '有效天数', 'value' => 1]]);
  47. return create_form('小程序链接', $field, Url::buildUrl('/app/routine/scheme_save/' . $id), 'POST');
  48. }
  49. public function schemeSave($id, $data)
  50. {
  51. $path = explode('?', $data['path']);
  52. $jumpWxa = [
  53. 'path' => $path[0],
  54. 'query' => $path[1] ?? '',
  55. ];
  56. $expireNum = $data['expire_type'] == 0 ? strtotime($data['expire_num']) : $data['expire_num'];
  57. $url = MiniProgramService::getUrlScheme($jumpWxa, $data['expire_type'], $expireNum);
  58. // $url = MiniProgramService::getUrlLink($jumpWxa);
  59. $saveData = [];
  60. $saveData['title'] = $data['title'];
  61. $saveData['path'] = $data['path'];
  62. $saveData['url'] = $url;
  63. $saveData['add_time'] = time();
  64. $saveData['expire_type'] = $data['expire_type'];
  65. if ($data['expire_type'] == -1) {
  66. $saveData['expire_interval'] = $saveData['expire_time'] = 0;
  67. } elseif ($data['expire_type'] == 0) {
  68. $saveData['expire_interval'] = 0;
  69. $saveData['expire_time'] = $expireNum;
  70. } else {
  71. $saveData['expire_interval'] = $expireNum;
  72. $saveData['expire_time'] = time() + ($expireNum * 86400);
  73. }
  74. if ($id) {
  75. $res = $this->dao->update($id, $saveData);
  76. } else {
  77. $res = $this->dao->save($saveData);
  78. }
  79. if ($res) return true;
  80. throw new AdminException('小程序链接生成失败');
  81. }
  82. }