BackendService.php 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238
  1. <?php
  2. namespace addons\ReservationService\common\services;
  3. use addons\ReservationService\common\enums\ReservationServiceEnum;
  4. use addons\ReservationService\common\models\ReservationServiceLevel;
  5. use addons\ReservationService\common\models\ReservationServiceUser;
  6. use common\enums\StatusEnum;
  7. use common\models\common\MallSetting;
  8. use common\models\user\User;
  9. use common\traits\ErrorTrait;
  10. class BackendService
  11. {
  12. use ErrorTrait;
  13. public static function getSetting($mall_id)
  14. {
  15. $config['basic'] = \Yii::$app->services->setting->addons->get($mall_id, ReservationServiceEnum::ADDONS_NAME, 'basic') ?? [];
  16. $config['sms'] = \Yii::$app->services->setting->addons->get($mall_id, ReservationServiceEnum::ADDONS_NAME, 'sms') ?? [];
  17. if (!empty($config['basic'])) {
  18. $config['basic']['comment_tags'] = json_decode($config['basic']['comment_tags'], true);
  19. $config['basic']['refund_tags'] = json_decode($config['basic']['refund_tags'], true);
  20. $config['sms']['waitting_orders'] = json_decode($config['sms']['waitting_orders'], true);
  21. $config['sms']['refuse_orders'] = json_decode($config['sms']['refuse_orders'], true);
  22. $config['sms']['accept_orders'] = json_decode($config['sms']['accept_orders'], true);
  23. $config['sms']['waitting_orders_qcloud'] = !empty($config['sms']['waitting_orders_qcloud']) ? json_decode($config['sms']['waitting_orders_qcloud'], true): self::getDefaultData('waitting_orders_qcloud', '用户下单技师待接单通知');
  24. $config['sms']['refuse_orders_qcloud'] = !empty($config['sms']['refuse_orders_qcloud']) ? json_decode($config['sms']['refuse_orders_qcloud'], true) : self::getDefaultData('refuse_orders_qcloud', '技师接单订单拒绝通知');
  25. $config['sms']['accept_orders_qloud'] = !empty($config['sms']['refuse_orders_qcloud']) ? json_decode($config['sms']['accept_orders_qloud'], true): self::getDefaultData('accept_orders_qloud', '技师接单订单接受通知');
  26. $config['sms']['waitting_orders_submail'] = !empty($config['sms']['waitting_orders_submail']) ? json_decode($config['sms']['waitting_orders_submail'], true): self::getDefaultData('waitting_orders_submail', '用户下单技师待接单通知');
  27. $config['sms']['refuse_orders_submail'] = !empty($config['sms']['refuse_orders_submail']) ? json_decode($config['sms']['refuse_orders_submail'], true): self::getDefaultData('refuse_orders_submail', '用户下单技师待接单通知');
  28. $config['sms']['accept_orders_submail'] = !empty($config['sms']['accept_orders_submail']) ? json_decode($config['sms']['accept_orders_submail'], true): self::getDefaultData('accept_orders_submail', '用户下单技师待接单通知');
  29. if(empty($config['basic']['appointment_interval'])){
  30. $config['basic']['appointment_interval'] = 1;
  31. }
  32. if(empty($config['basic']['range_start'])){
  33. $config['basic']['range_start'] = 1;
  34. }
  35. if(empty($config['basic']['range_end'])){
  36. $config['basic']['range_end'] = 1;
  37. }
  38. return $config;
  39. }
  40. return null;
  41. }
  42. public static function getDefaultData($type, $name)
  43. {
  44. return [
  45. 'title' => $name,
  46. 'type' => $type,
  47. 'tips' => '',
  48. 'data' => [
  49. 'template_id' => '',
  50. 'content' => '',
  51. 'key' => '',
  52. 'name' => '',
  53. 'vars' => [],
  54. ],
  55. ];
  56. }
  57. /**
  58. * 获取‘技师’字眼自定义修改后的文字
  59. *
  60. * @param $mallId
  61. *
  62. * @return string
  63. */
  64. public static function getCustomText($mallId)
  65. {
  66. $str = \Yii::$app->services->setting->addons->get($mallId, 'ReservationService', 'basic.custom_text');
  67. return empty($str) ? '技师' : $str;
  68. }
  69. /**
  70. * 将“技师字眼替换”
  71. *
  72. * @param $text
  73. * @param $customText
  74. * @param $mallId
  75. *
  76. * @return string
  77. */
  78. public static function replaceTextToCustomText($text, $customText = '', $mallId = 0)
  79. {
  80. if ($customText === '') {
  81. $customText = self::getCustomText($mallId);
  82. }
  83. return str_replace('技师', $customText, $text);
  84. }
  85. /**
  86. * @Description: 保存基础设置
  87. * @Author: zsan
  88. * @DateTime 2023-07-22 16:33:33
  89. * @param integer $mall_id
  90. * @param array $params
  91. * @return boolean
  92. */
  93. public static function setSetting($mall_id, $params)
  94. {
  95. try {
  96. $params['basic']['comment_tags'] = !empty($params['basic']['comment_tags']) ? json_encode($params['basic']['comment_tags'], JSON_UNESCAPED_UNICODE) : json_encode([]);
  97. $params['basic']['refund_tags'] = !empty($params['basic']['refund_tags']) ? json_encode($params['basic']['refund_tags'], JSON_UNESCAPED_UNICODE) : json_encode([]);
  98. $params['sms']['waitting_orders'] = json_encode($params['sms']['waitting_orders']);
  99. $params['sms']['refuse_orders'] = json_encode($params['sms']['refuse_orders']);
  100. $params['sms']['accept_orders'] = json_encode($params['sms']['accept_orders']);
  101. $params['sms']['waitting_orders_qcloud'] = json_encode($params['sms']['waitting_orders_qcloud']);
  102. $params['sms']['refuse_orders_qcloud'] = json_encode($params['sms']['refuse_orders_qcloud']);
  103. $params['sms']['accept_orders_qcloud'] = json_encode($params['sms']['accept_orders_qcloud']);
  104. $params['sms']['waitting_orders_submail'] = json_encode($params['sms']['waitting_orders_submail']);
  105. $params['sms']['refuse_orders_submail'] = json_encode($params['sms']['refuse_orders_submail']);
  106. $params['sms']['accept_orders_submail'] = json_encode($params['sms']['accept_orders_submail']);
  107. \Yii::$app->services->setting->addons->set($mall_id, ReservationServiceEnum::ADDONS_NAME, $params);
  108. return true;
  109. } catch (\Exception $e) {
  110. self::getStaticError($e->getMessage());
  111. return false;
  112. }
  113. }
  114. public static function getLevelList($mall_id, $query)
  115. {
  116. try {
  117. $where = [
  118. ['mall_id' => $mall_id],
  119. ['status' => [StatusEnum::ENABLED, StatusEnum::DISABLED]]
  120. ];
  121. if (!empty($query['keyword'])) {
  122. $where[] = ['like', 'name', $query['keyword']];
  123. }
  124. $list = ReservationServiceLevel::listPage([
  125. 'where' => $where,
  126. 'order' => 'level DESC',
  127. ]);
  128. if ($list == false) throw new \Exception(ReservationServiceLevel::getStaticError());
  129. return $list;
  130. } catch (\Exception $e) {
  131. self::getStaticError($e->getMessage());
  132. return false;
  133. }
  134. }
  135. public static function getUserList($mall_id, $query)
  136. {
  137. try {
  138. $where = [
  139. ['mall_id' => $mall_id],
  140. ['status' => [StatusEnum::ENABLED, StatusEnum::DISABLED]]
  141. ];
  142. if (!empty($query['user_id'])) {
  143. $where[] = ['user_id' => $query['user_id']];
  144. } elseif (!empty($query['keyword'])) {
  145. $uids = User::find()->where(['mall_id' => $mall_id])
  146. ->andWhere(['status' => StatusEnum::ENABLED])
  147. ->andWhere(['or', ['like', 'nickname', $query['keyword']], ['like', 'mobile', $query['keyword']]])
  148. ->select('id')->column();
  149. if (empty($uids)) return [];
  150. $where[] = ['user_id' => $uids];
  151. }
  152. if (!empty($query['name'])) {
  153. $where[] = ['like', 'name', $query['name']];
  154. }
  155. if (!empty($query['mobile'])) {
  156. $where[] = ['like', 'mobile', $query['mobile']];
  157. }
  158. if (!empty($query['address'])) {
  159. $where[] = ['like', 'address', $query['address']];
  160. }
  161. if (!empty($query['check_status'])) {
  162. $where[] = ['check_status' => $query['check_status']];
  163. }
  164. if (!empty($query['date_start'])) $where[] = ['>=', 'created_at', strtotime($query['date_start'])];
  165. if (!empty($query['date_end'])) $where[] = ['<=', 'created_at', strtotime($query['date_end'])];
  166. $list = ReservationServiceUser::listPage([
  167. 'where' => $where,
  168. 'order' => 'id DESC',
  169. 'with' => [
  170. 'user' => function ($query) {
  171. $query->select('id, nickname, avatar_url, mobile');
  172. }
  173. ],
  174. ]);
  175. if (!$list) throw new \Exception(ReservationServiceUser::getStaticError());
  176. if(!empty($list['list'])){
  177. foreach ($list['list'] as &$item){
  178. $item['qualification_certificate'] = json_decode($item['qualification_certificate'],true);
  179. if (empty($item['qualification_certificate'])) {
  180. $item['qualification_certificate'] = [];
  181. }
  182. }
  183. }
  184. $list['levels'] = [];
  185. $levels = self::getLevels($mall_id);
  186. if (!empty($levels)) $list['levels'] = array_column($levels, null, 'level');
  187. return $list;
  188. } catch (\Exception $e) {
  189. self::getStaticError($e->getMessage());
  190. return false;
  191. }
  192. }
  193. public static function getLevels($mall_id)
  194. {
  195. try {
  196. $where = [
  197. ['mall_id' => $mall_id],
  198. ['status' => StatusEnum::ENABLED]
  199. ];
  200. $list = ReservationServiceLevel::lists([
  201. 'where' => $where,
  202. 'order' => 'level DESC',
  203. 'select' => 'id, level, name'
  204. ]);
  205. if ($list == false) throw new \Exception(ReservationServiceLevel::getStaticError());
  206. return $list;
  207. } catch (\Exception $e) {
  208. self::getStaticError($e->getMessage());
  209. return false;
  210. }
  211. }
  212. }