Detail.php 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200
  1. <?php
  2. namespace app\controller\wap;
  3. use app\extra\basic\Base;
  4. use app\extra\service\saas\ShopLogService;
  5. use app\extra\weMini\Link;
  6. use app\middleware\WxMiddleware;
  7. use app\model\saas\SaasShop;
  8. use app\model\system\SystemUser;
  9. use app\model\system\SystemUserOpen;
  10. use DI\Attribute\Inject;
  11. use LinFly\Annotation\Route\Controller;
  12. use LinFly\Annotation\Route\Middleware;
  13. use LinFly\Annotation\Route\Route;
  14. use Shopwwi\WebmanAuth\Auth;
  15. use support\Request;
  16. use support\Response;
  17. #[Controller(prefix: "/wap/shop"),Middleware(WxMiddleware::class)]
  18. class Detail extends Base
  19. {
  20. #[Inject]
  21. protected SaasShop $model;
  22. #[Inject]
  23. protected ShopLogService $service;
  24. #[Route(path: "detail",methods: "get")]
  25. public function getDetail(Request $request): Response
  26. {
  27. try {
  28. $shop = $this->model->where("shop_id",$request->user['shop_id'])->field("shop_name,shop_mobile,start_at,end_at,vip_end,shop_status,shop_notice,line_time,status,shop_address")->withAttr(['vip_end' => function($query,$data) {
  29. return date("Y-m-d",strtotime($data['vip_end']));
  30. }])->findOrEmpty();
  31. if ($shop->isEmpty()) return errorTrans("empty.data");
  32. return success("ok",$shop->toArray());
  33. } catch (\Throwable $throwable) {
  34. return error($throwable->getMessage());
  35. }
  36. }
  37. #[Route(path: "save",methods: "post")]
  38. public function setData(Request $request): Response
  39. {
  40. try {
  41. $param = $request->post();
  42. $shop = $this->model->where("shop_id",$request->user['shop_id'])->findOrEmpty();
  43. if ($shop->isEmpty()) return errorTrans("empty.data");
  44. $state = $shop->save($param);
  45. if (!$state) return errorTrans("error.data");
  46. // 更新店铺名称到账号信息
  47. return successTrans("success.data");
  48. } catch (\Throwable $throwable) {
  49. return error($throwable->getMessage());
  50. }
  51. }
  52. /**
  53. * @param Request $request
  54. * @return Response
  55. */
  56. #[Route(path: "msg",methods: ['post','get'])]
  57. public function getMsgType(Request $request): Response
  58. {
  59. try {
  60. if ($request->method() == "GET") {
  61. $msg = (new SystemUserOpen)->where("id",$request->user['id'])->value("is_msg");
  62. return success("ok",compact('msg'));
  63. }
  64. $param = $this->_valid([
  65. "msg.require" => trans("empty.require")
  66. ],"post");
  67. if (!is_array($param)) return error($param);
  68. $msg = (new SystemUserOpen)->where("id",$request->user['id'])->findOrEmpty();
  69. if ($msg->isEmpty()) return errorTrans("error.data");
  70. $msg->is_msg = $param['msg'];
  71. $state = $msg->save();
  72. if (!$state) return errorTrans("error.data");
  73. return successTrans("success.data");
  74. } catch (\Throwable $throwable) {
  75. return error($throwable->getMessage());
  76. }
  77. }
  78. /**
  79. * 绑定新门店
  80. * @param Request $request
  81. * @return Response
  82. */
  83. #[Route(path: "bind",methods: "post")]
  84. public function bindUser(Request $request): Response
  85. {
  86. try {
  87. $param = $this->_valid([
  88. "username.require" => trans("empty.user"),
  89. "password.require" => trans("empty.passwd"),
  90. ],"post");
  91. if (!is_array($param)) return error($param);
  92. $map = ["is_deleted" => 0,"username" => $param['username']];
  93. $user = (new SystemUser)->where($map)->with(['account'])->findOrEmpty();
  94. if ($user->isEmpty()) return errorTrans("error.user-empty");
  95. if ($user['status'] <> 1) return errorTrans("error.user-status");
  96. if (md5($param['password'].$user['salt']) <> $user['password']) return errorTrans("error.passwd");
  97. $userOpen = (new SystemUserOpen)->where(['openid' => $request->user['openid'],'shop_id' => $user['agent_id']])->findOrEmpty();
  98. if (!$userOpen->isEmpty()) return error("请勿重复绑定");
  99. $state = $userOpen->insertGetId([
  100. "uid" => $user['id'],
  101. "openid" => $request->user['openid'],
  102. "shop_id" => $user['agent_id'],
  103. "shop_name" => $user['account']['shop_name']??'',
  104. 'is_msg' => 1
  105. ]);
  106. if (!$state) return errorTrans("error.data");
  107. return successTrans("success.data");
  108. } catch (\Throwable $throwable) {
  109. return error($throwable->getMessage());
  110. }
  111. }
  112. /**
  113. * 解绑
  114. * @param Request $request
  115. * @return Response
  116. */
  117. #[Route(path: "unbind",methods: "post")]
  118. public function unbindUser(Request $request): Response
  119. {
  120. try {
  121. $param = $this->_valid([
  122. "id.require" => trans("empty.data")
  123. ],"post");
  124. if (!is_array($param)) return error($param);
  125. $user = (new SystemUserOpen)->where("id",$param['id'])->findOrEmpty();
  126. if ($user->isEmpty()) return errorTrans("empty.data");
  127. if ($user['openid'] <> $request->user['openid']) return errorTrans("error.request");
  128. $state = $user->delete();
  129. if (!$state) return errorTrans("error.data");
  130. return successTrans("success.data");
  131. } catch (\Throwable $throwable) {
  132. return error($throwable->getMessage());
  133. }
  134. }
  135. /**
  136. * @param Request $request
  137. * @return Response
  138. */
  139. #[Route(path: "change",methods: ['post','get'])]
  140. public function changeAuth(Request $request): Response
  141. {
  142. try {
  143. if ($request->method() == "GET") {
  144. $data = (new SystemUserOpen)->where("openid",$request->user['openid'])->select();
  145. $shop = $request->user['shop_id'];
  146. return success("ok",compact("data","shop"));
  147. }
  148. $param = $this->_valid([
  149. "id.require" => trans("empty.data")
  150. ],'post');
  151. if (!is_array($param)) return error($param);
  152. $user = (new SystemUserOpen)->where("id",$param['id'])->findOrEmpty();
  153. if ($user->isEmpty()) return errorTrans("empty.data");
  154. if ($user['openid'] <> $request->user['openid']) return errorTrans("error.request");
  155. $loginUser = (new SystemUser)->where(['id' => $user['uid']])->with(['account' => function($query){
  156. $query->field("shop_id,shop_name");
  157. }])->findOrEmpty();
  158. return success("ok",['shop_name' => $loginUser['account']['shop_name'],'token' => get_object_vars((new Auth)->guard("mp")->login($user->toArray()))]); // 正常登陆进入
  159. } catch (\Throwable $throwable) {
  160. return error($throwable->getMessage());
  161. }
  162. }
  163. /**
  164. * 钱包记录
  165. * @param Request $request
  166. * @return Response
  167. */
  168. #[Route(path: "walletLog",methods: "get")]
  169. public function walletLog(Request $request): Response
  170. {
  171. try {
  172. $param = $request->get();
  173. $param['shop'] = $request->user['shop_id'];
  174. $list = $this->service->getList($param);
  175. return successTrans("success.data",pageFormat($list),200);
  176. } catch (\Throwable $throwable) {
  177. return error($throwable->getMessage());
  178. }
  179. }
  180. }