Store.php 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261
  1. <?php
  2. namespace app\controller\admin;
  3. use app\extra\basic\Base;
  4. use app\extra\douyin\Account;
  5. use app\extra\douyin\Client;
  6. use app\extra\service\saas\StoreService;
  7. use app\extra\tools\CodeExtend;
  8. use app\middleware\AuthMiddleware;
  9. use app\model\saas\SaasSmsScene;
  10. use app\model\saas\SaasStore;
  11. use app\model\system\SystemUser;
  12. use app\validate\saas\StoreValidate;
  13. use DI\Attribute\Inject;
  14. use LinFly\Annotation\Route\Controller;
  15. use LinFly\Annotation\Route\Route;
  16. use support\Request;
  17. use support\Response;
  18. use Webman\Annotation\Middleware;
  19. #[Controller(prefix: "/api/store"),Middleware(AuthMiddleware::class)]
  20. class Store extends Base
  21. {
  22. #[Inject]
  23. protected StoreService $service;
  24. #[Inject]
  25. protected SaasStore $model;
  26. #[Inject]
  27. protected StoreValidate $validate;
  28. protected string $scene = "edit";
  29. #[Route(path: "list",methods: "get")]
  30. public function getStoreList(Request $request): Response
  31. {
  32. try {
  33. $param = $request->get();
  34. $list = $this->service->getList($param);
  35. return successTrans("success.data",pageFormat($list),200);
  36. } catch (\Throwable $throwable) {
  37. return error($throwable->getMessage());
  38. }
  39. }
  40. /**
  41. * 设置path
  42. * @param Request $request
  43. * @return Response
  44. */
  45. #[Route(path: "auth",methods: "post")]
  46. public function setAuth(Request $request): Response
  47. {
  48. try {
  49. $param = $this->_valid([
  50. "id.require" => trans("empty.require"),
  51. "val.default" => 2,
  52. "type.default" => 1, // 1 设置path 2 关闭二维码
  53. ],"post");
  54. if (!is_array($param)) return error($param);
  55. $store = $this->model->where("id",$param['id'])->findOrEmpty();
  56. if ($store->isEmpty()) return errorTrans("empty.data");
  57. if ($param['type'] == 1) {
  58. // 设置path
  59. $resp = (new Client)->config($this->getDyConfig())->token()->setMiniPath($store['store_id']);
  60. if ($resp['err_no'] <> 0) return error($resp['err_msg']);
  61. $resp = (new Account)->config($this->getDyConfig())->token()->setWhiteSetting($store['store_id'],1,true);
  62. if ($resp['err_no'] <> 0) return error($resp['err_msg']);
  63. } else {
  64. if ($store['is_hide'] == 1) {
  65. $store->is_hide = 0;
  66. } else {
  67. $store->is_hide = 1;
  68. }
  69. $store->save();
  70. $resp = (new Client)->config($this->getDyConfig())->token()->setBtnText($store['store_id'],$param['val']);
  71. if ($resp['err_no'] <> 0) return error($resp['err_msg']);
  72. }
  73. return successTrans("success.data");
  74. } catch (\Throwable $throwable) {
  75. return error($throwable->getMessage());
  76. }
  77. }
  78. /**
  79. * @param Request $request
  80. * @return Response
  81. */
  82. #[Route(path: "hook",methods: "get")]
  83. public function getHookUri(Request $request): Response
  84. {
  85. try {
  86. $param = $request->get();
  87. return successTrans(100010,['url' => "https://miniapi.jsshuita.com.cn/"]);
  88. } catch (\Throwable $throwable) {
  89. return error($throwable->getMessage());
  90. }
  91. }
  92. /**
  93. * 新增/编辑代理
  94. * @param Request $request
  95. * @return Response
  96. */
  97. #[Route(path: "save",methods: "post")]
  98. public function save(Request $request): Response
  99. {
  100. try {
  101. $param = $request->post();
  102. if (!isset($param['id'])) {
  103. $this->scene = "add";
  104. $param['user_id'] = CodeExtend::random(16,1,date("md"));
  105. if (!empty($param['username'])) {
  106. $userName = (new SystemUser)->where("username",$param['username'])->findOrEmpty();
  107. if (!$userName->isEmpty()) return errorTrans("error.user-exist");
  108. }
  109. }
  110. if (!$this->validate->check($param)) return error($this->validate->getError());
  111. $state = $this->model->setAutoData($param);
  112. if (!$state) return errorTrans("error.data");
  113. // $this->sceneUser($param,3,"id");
  114. return successTrans("success.data");
  115. } catch (\Throwable $throwable) {
  116. echo $throwable->getMessage()."\n";
  117. echo $throwable->getFile()."\n";
  118. echo $throwable->getLine()."\n";
  119. return error($throwable->getMessage());
  120. }
  121. }
  122. /**
  123. * 新增/编辑代理
  124. * @param Request $request
  125. * @return Response
  126. */
  127. #[Route(path: "edit",methods: "post")]
  128. public function edit(Request $request): Response
  129. {
  130. try {
  131. $param = $request->post();
  132. if (!$this->validate->check($request->post())) return error($this->validate->getError());
  133. $state = $this->model->setAutoData($param);
  134. if (!$state) return errorTrans("error.data");
  135. return successTrans("success.data");
  136. } catch (\Throwable $throwable) {
  137. echo $throwable->getMessage()."\n";
  138. echo $throwable->getFile()."\n";
  139. echo $throwable->getLine()."\n";
  140. return error($throwable->getMessage());
  141. }
  142. }
  143. /**
  144. * @param Request $request
  145. * @return Response
  146. */
  147. #[Route(path: "batch",methods: "post")]
  148. public function setBatchData(Request $request): Response
  149. {
  150. try {
  151. $param = $this->_valid([
  152. "id.require" => trans("empty.require"),
  153. "value.require" => trans("empty.require"),
  154. "field.require" => trans("empty.require"),
  155. "type.require" => trans("empty.require"),
  156. ],"post");
  157. if (!is_array($param)) return error($param);
  158. if ($param['type'] == "batch") {
  159. $state = $this->model->where("id","in",$param['id'])->save([$param['field'] => $param['value']]);
  160. } else {
  161. $state = $this->model->where("id",$param['id'])->save([$param['field'] => $param['value']]);
  162. }
  163. if (!$state) return errorTrans("error.data");
  164. return successTrans("success.data");
  165. } catch (\Throwable $throwable) {
  166. return error($throwable->getMessage());
  167. }
  168. }
  169. /**
  170. * 删除
  171. * @param Request $request
  172. * @return Response
  173. */
  174. #[Route(path: "del",methods: "post")]
  175. public function delUser(Request $request): Response
  176. {
  177. try {
  178. $param = $this->_valid([
  179. "id.require" => trans("empty.require"),
  180. "type.default" => "one",
  181. ],"post");
  182. if (!is_array($param)) return error($param);
  183. if ($param['type'] == "batch") {
  184. $state = $this->model->where("id","in",$param['id'])->delete();
  185. } else {
  186. $data = $this->model->where("id",$param['id'])->findOrEmpty();
  187. if ($data->isEmpty()) return errorTrans("empty.data");
  188. // 删除其他相关数据
  189. $state = $data->delete();
  190. }
  191. if (!$state) return errorTrans("error.data");
  192. return successTrans("success.data");
  193. } catch (\Throwable $throwable) {
  194. return error($throwable->getMessage());
  195. }
  196. }
  197. /**
  198. * @param Request $request
  199. * @return Response
  200. */
  201. #[Route(path: "scene",methods: "get")]
  202. public function getSmsScene(Request $request): Response
  203. {
  204. try {
  205. $param = $request->get();
  206. $scene = (new SaasSmsScene)->where("store_id",$param['store'])->findOrEmpty();
  207. if ($scene->isEmpty()) return errorTrans("error.data");
  208. return successTrans("success.data",$scene->toArray());
  209. } catch (\Throwable $throwable) {
  210. return error($throwable->getMessage());
  211. }
  212. }
  213. /**
  214. * @param Request $request
  215. * @return Response
  216. */
  217. #[Route(path: "sms",methods: "post")]
  218. public function setSmsScene(Request $request): Response
  219. {
  220. try {
  221. $param = $request->post();
  222. if (empty($param['store_id'])) return errorTrans("error.data");
  223. $scene = (new SaasSmsScene)->where("store_id",$param['store_id'])->findOrEmpty();
  224. if ($scene->isEmpty())
  225. {
  226. $state = $scene->insertGetId($param);
  227. } else {
  228. $state = $scene->save($param);
  229. }
  230. if (!$state) return errorTrans("error.data");
  231. return successTrans("success.data");
  232. } catch (\Throwable $throwable) {
  233. return error($throwable->getMessage());
  234. }
  235. }
  236. }