链街Dcat后台
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

281 lines
11 KiB

5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
  1. <?php
  2. namespace App\Admin\Controllers\v3;
  3. use App\Admin\Repositories\v3\Store;
  4. use Dcat\Admin\Form;
  5. use Dcat\Admin\Grid;
  6. use Dcat\Admin\Show;
  7. use Dcat\Admin\Controllers\AdminController;
  8. use App\Models\LanzuMmInfo as MminfoModel;
  9. use App\Models\v3\Market as MarketModel;
  10. use App\Admin\Common\StoreQRCode;
  11. use App\Models\v3\Store as StoreModel;
  12. use App\Models\v3\User as UserModel;
  13. use App\Models\v3\Category as CategoryModel;
  14. use App\Models\LanzuUserBalance as UserBalanceModel;
  15. use App\Models\v3\StoreUsers as StoreUsersModel;
  16. class StoreController extends AdminController
  17. {
  18. /**
  19. * Make a grid builder.
  20. *
  21. * @return Grid
  22. */
  23. protected function grid()
  24. {
  25. return Grid::make(new Store(), function (Grid $grid) {
  26. $grid->model()->orderBy('id','desc');
  27. $grid->id->sortable();
  28. $grid->logo_url->image('',50);
  29. $grid->name;
  30. $grid->market_id->display(function ($marketId){
  31. $market = MarketModel::getMarketInfo($marketId,'name');
  32. return empty($market) ? '' : $market->name;
  33. });
  34. $grid->mm_user_id->display(function ($mmUserId){
  35. $mmUser = MminfoModel::getMmInfo($mmUserId,'name');
  36. return empty($mmUser) ? '' : $mmUser->name;
  37. });
  38. $grid->store_applet_img->image('',50);
  39. $grid->cash_code_img->image('',50);
  40. $grid->sort->sortable();
  41. $grid->is_rest->switch();
  42. $grid->is_open->switch();
  43. // 搜索
  44. $grid->filter(function (Grid\Filter $filter) {
  45. $filter->equal('id');
  46. $filter->like('name');
  47. });
  48. // 每页10条
  49. $grid->paginate(10);
  50. });
  51. }
  52. /**
  53. * Make a show builder.
  54. *
  55. * @param mixed $id
  56. *
  57. * @return Show
  58. */
  59. protected function detail($id)
  60. {
  61. return Show::make($id, new Store(), function (Show $show) {
  62. $show->row(function (Show\Row $show) {
  63. $show->width(6)->id;
  64. $show->width(6)->mm_user_id->as(function ($mmUserId){
  65. $item = MminfoModel::getMmInfo($mmUserId,'name');
  66. return empty($item) ? '' : $item->name;
  67. });
  68. $show->width(6)->market_id->as(function ($marketId){
  69. $item = MarketModel::getMarketInfo($marketId,'name');
  70. return empty($item) ? '' : $item->name;
  71. });
  72. $show->width(6)->category_id->as(function ($categoryId){
  73. $item = CategoryModel::getInfo($categoryId,'title');
  74. return empty($item) ? '' : $item->title;
  75. });
  76. $show->width(6)->name;
  77. $show->width(6)->logo->image();
  78. $show->width(6)->user_id->as(function ($userId){
  79. $item = UserModel::getUserInfo($userId,'nick_name');
  80. return empty($item) ? '' : $item->nick_name;
  81. });
  82. $show->width(6)->admin_id->as(function ($userId){
  83. $item = UserModel::getUserInfo($userId,'nick_name');
  84. return empty($item) ? '' : $item->nick_name;
  85. });
  86. $show->width(6)->business_license->image();
  87. $show->width(6)->zm_img->image();
  88. $show->width(6)->fm_img->image();
  89. $show->width(6)->tel;
  90. $show->width(6)->link_name;
  91. $show->width(6)->link_tel;
  92. $show->width(6)->time1;
  93. $show->width(6)->time2;
  94. $show->width(6)->time3;
  95. $show->width(6)->time4;
  96. });
  97. $show->row(function (Show\Row $show) {
  98. $show->width(6)->announcement;
  99. $show->width(6)->address;
  100. $show->width(6)->coordinates;
  101. $show->width(6)->is_rest_text;
  102. $show->width(6)->is_open_text;
  103. $show->width(6)->sort;
  104. // $show->width(6)->environment;
  105. $show->width(6)->expire_time;
  106. $show->width(6)->loudspeaker_imei;
  107. });
  108. // $show->created_at;
  109. // $show->updated_at;
  110. });
  111. }
  112. /**
  113. * Make a form builder.
  114. *
  115. * @return Form
  116. */
  117. protected function form()
  118. {
  119. return Form::make(new Store(), function (Form $form) {
  120. // 查询市场经理
  121. // $mmList = MminfoModel::getMmInfoArray();
  122. // 查询市场
  123. $marketList = MarketModel::getMarketArray();
  124. // 查询一级分类
  125. $categoryList = CategoryModel::getArray([['parent_id','=',0]]);
  126. // 用户
  127. $userList = UserModel::getUserArray();
  128. // 绑定了店铺的用户
  129. $userHas = StoreModel::pluck('admin_id')->toArray();
  130. foreach($userList as $ku => $uv){
  131. if($ku != 0 && in_array($ku,$userHas)){
  132. unset($userList[$ku]);
  133. }
  134. }
  135. $form->column(6, function (Form $form) use($marketList,$categoryList){
  136. $form->hidden('id');
  137. $form->number('mm_user_id')->help('市场经理的懒ID');
  138. $form->select('market_id')->required()->options($marketList);
  139. $form->select('category_id')->options($categoryList);
  140. $form->text('name')->required()->maxLength(50);
  141. $form->image('logo')->required()->uniqueName();
  142. $form->mobile('tel');
  143. $form->text('link_name')->required();
  144. $form->mobile('link_tel')->required();
  145. $form->number('sort');
  146. $form->switch('is_rest')
  147. ->customFormat(function ($v) {
  148. return $v == 1 ? 1 : 0;
  149. })
  150. ->saving(function ($v) {
  151. return $v == 1 ? 1 : 0;
  152. });
  153. $form->switch('is_open')
  154. ->customFormat(function ($v) {
  155. return $v == 1 ? 1 : 0;
  156. })
  157. ->saving(function ($v) {
  158. return $v == 1 ? 1 : 0;
  159. });
  160. $form->text('address');
  161. });
  162. $form->column(6, function (Form $form) use($userList){
  163. $form->image('business_license')->required()->uniqueName();
  164. $form->image('zm_img')->required()->uniqueName();
  165. $form->image('fm_img')->required()->uniqueName();
  166. $form->select('admin_id')->options($userList)->required();
  167. $form->select('user_id')->options($userList)->required();
  168. $form->time('time1','时间段一开始')->format('HH:mm');
  169. $form->time('time2','时间段一结束')->format('HH:mm')->rules('after:time1',['after'=>'选择的时间必须比时间段一开始时间晚']);
  170. $form->time('time3','时间段二开始')->format('HH:mm')->rules('after:time2',['after'=>'选择的时间必须比时间段一结束时间晚']);
  171. $form->time('time4','时间段二结束')->format('HH:mm')->rules('after:time3',['after'=>'选择的时间必须比时间段二开始时间晚']);
  172. // $form->timeRange('time1','time2','营业时间段一')->required();
  173. // $form->timeRange('time3','time4','营业时间段二')->rules('after:time2',['after'=>'选择的时间必须比时间段一结束时间大']);
  174. });
  175. $form->column(12, function (Form $form) {
  176. $form->map('lat','lng','地址');
  177. $form->textarea('introduction')->required();
  178. $form->textarea('announcement');
  179. $form->multipleImage('environment');
  180. });
  181. // $form->text('coordinates')->width(4)
  182. // ->placeholder('输入 经纬度,如: 108.281552,22.83731')
  183. // ->help("通过网址 <a href='https://lbs.amap.com/console/show/picker' target='_blank'>https://lbs.amap.com/console/show/picker</a> 获取经纬度");
  184. $form->saved(function (Form $form){
  185. $id = $form->getKey();
  186. $store = StoreModel::find($id);
  187. // 添加商户钱包
  188. $userBalance = UserBalanceModel::where([
  189. ['user_type','=',5],
  190. ['source_id','=',$id]
  191. ])->first();
  192. if(empty($userBalance)){
  193. $userBalance = new UserBalanceModel();
  194. $userBalance->user_type = 5;
  195. $userBalance->source_id = $id;
  196. $userBalance->save();
  197. }
  198. if($form->isCreating() && !empty($id)){
  199. $qrCode = new StoreQRCode();
  200. // 生成小程序码 店铺
  201. $sRes = $qrCode->SetStoreWeChatCode($id);
  202. // 生产小程序码 收银
  203. $pRes = $qrCode->SetPayWeChatCode($id);
  204. // 保存图片
  205. $store->store_applet_img = $sRes['status'] ? $sRes['path'] : '';
  206. $store->cash_code_img = $pRes['status'] ? $pRes['path'] : '';
  207. $store->save();
  208. // 剪裁图片
  209. // $form->image('cash_code_img')->crop(270, 270, [5, 5])->uniqueName();
  210. //店长账号
  211. $storeUsersInfo = StoreUsersModel::where('store_id',$id)->where('user_category',1)->first();
  212. if(empty($storeUsersInfo)){
  213. $storeUsersModel = new StoreUsersModel();
  214. $storeUsersModel->store_id = $id;
  215. $storeUsersModel->username = $form->link_tel;
  216. $storeUsersModel->join_ip = $_SERVER['SERVER_NAME'];
  217. $storeUsersModel->user_category = 1;
  218. $storeUsersModel->register_type = 4;
  219. $storeUsersModel->status = 2;
  220. $storeUsersModel->salt = $this->random(8);
  221. $storeUsersModel->password = $this->stringHash(substr($form->link_tel,-6),$storeUsersModel->salt);
  222. $storeUsersModel->remark = '入驻店铺注册';
  223. $storeUsersModel->save();
  224. }
  225. }
  226. });
  227. $form->disableResetButton();
  228. $form->disableViewCheck();
  229. $form->disableEditingCheck();
  230. $form->disableCreatingCheck();
  231. });
  232. }
  233. public function stringHash($password, $salt) {
  234. $authkey = config('admin.setting.authkey');
  235. $password = "{$password}-{$salt}-{$authkey}";
  236. return sha1($password);
  237. }
  238. /**
  239. * 字符串
  240. */
  241. public function random($length, $numeric = false) {
  242. $seed = base_convert(md5(microtime() . $_SERVER['DOCUMENT_ROOT']), 16, $numeric ? 10 : 35);
  243. $seed = $numeric ? (str_replace('0', '', $seed) . '012340567890') : ($seed . 'zZ' . strtoupper($seed));
  244. if ($numeric) {
  245. $hash = '';
  246. } else {
  247. $hash = chr(rand(1, 26) + rand(0, 1) * 32 + 64);
  248. --$length;
  249. }
  250. $max = strlen($seed) - 1;
  251. for ($i = 0; $i < $length; ++$i) {
  252. $hash .= $seed[mt_rand(0, $max)];
  253. }
  254. return $hash;
  255. }
  256. }