|
@@ -0,0 +1,88 @@
|
|
|
+<?php
|
|
|
+
|
|
|
+namespace Modules\Manage\Http\Controllers;
|
|
|
+
|
|
|
+use Catch\Base\CatchController;
|
|
|
+use Illuminate\Http\Request;
|
|
|
+use Modules\Channel\Models\UserHasMiniprograms;
|
|
|
+use Modules\Channel\Services\User\UserService;
|
|
|
+use Modules\Channel\Exceptions\ChannelBusinessException;
|
|
|
+use Modules\Common\Errors\Errors;
|
|
|
+use Modules\Manage\Models\Miniprogram;
|
|
|
+use Log;
|
|
|
+
|
|
|
+class UserMiniprogramController extends CatchController
|
|
|
+{
|
|
|
+
|
|
|
+ const COMPANY_ROLE = 'company';
|
|
|
+ public function __construct(
|
|
|
+ protected readonly UserHasMiniprograms $userHasMiniprograms,
|
|
|
+ protected readonly Miniprogram $miniprogram
|
|
|
+ )
|
|
|
+ {
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ public function allocationStore($miniprogram_id,Request $request)
|
|
|
+ {
|
|
|
+ $uids = $request->post('uids');
|
|
|
+ $action = $request->post('action');
|
|
|
+ if(empty($miniprogram_id) || empty($uids) || empty($action) || !in_array($action,['on','off'])){
|
|
|
+ ChannelBusinessException::throwError(Errors::PARAM_EMPTY);
|
|
|
+ }
|
|
|
+
|
|
|
+ $miniprogram_info = $this->miniprogram->find($miniprogram_id);
|
|
|
+ if(!$miniprogram_info || $miniprogram_info->status == 0){
|
|
|
+ ChannelBusinessException::throwError(Errors::PARAM_ERROR);
|
|
|
+ }
|
|
|
+
|
|
|
+ collect(explode(',',$uids))->filter(function (int $value, int $key) use($miniprogram_id,$action){
|
|
|
+ $user_simple = UserService::getUserInfo($value,['roles.identify']);
|
|
|
+ if($user_simple && $user_simple->identify == self::COMPANY_ROLE){
|
|
|
+ $result = $this->userHasMiniprograms->where('uid',$value)->where('miniprogram_id',$miniprogram_id)->first();
|
|
|
+ if($action == 'off'){
|
|
|
+ if($result){
|
|
|
+ $result->is_enabled = 0;
|
|
|
+ $result->save();
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ if($result){
|
|
|
+ if($result->is_enabled == 0){
|
|
|
+ $result->is_enabled = 1;
|
|
|
+ $result->save();
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ $this->userHasMiniprograms->create([
|
|
|
+ 'uid'=>$value,'miniprogram_id'=>$miniprogram_id,'is_enabled'=>1
|
|
|
+ ]);
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ return false;
|
|
|
+ });
|
|
|
+
|
|
|
+ return [];
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ public function getAllocationInfo($miniprogram_id){
|
|
|
+ $all_company_account = UserService::listByRole(self::COMPANY_ROLE,['users.username','users.id']);
|
|
|
+ return $all_company_account->map(function ($item,$key) use($miniprogram_id) {
|
|
|
+ $info = $this->userHasMiniprograms->where('uid',$item->id)->where('miniprogram_id',$miniprogram_id)->where('is_enabled',1)->count();
|
|
|
+ if($info){
|
|
|
+ $item->user_has_miniprogram = 1;
|
|
|
+ $item->user_has_miniprogram_flag = 'on';
|
|
|
+ }else{
|
|
|
+ $item->user_has_miniprogram = 0;
|
|
|
+ $item->user_has_miniprogram_flag = 'off';
|
|
|
+ }
|
|
|
+ return $item;
|
|
|
+ })->groupBy('user_has_miniprogram_flag')->all();
|
|
|
+ }
|
|
|
+
|
|
|
+}
|