UserController.php 156 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646
  1. <?php
  2. namespace Modules\Service\Http\Controllers;
  3. use App\Events\AddAgent;
  4. use App\Events\AgentAuditServiceEvent;
  5. use Modules\Service\Events\ShelvedAgent;
  6. use App\Events\ChangeUserInfo;
  7. use Modules\Service\Events\ChangeUserLevel;
  8. use App\Events\ChangeUserWar;
  9. use App\Events\ChangeRecom;
  10. use App\Events\DeleteAgent;
  11. use App\Handlers\UploadFilesHandler;
  12. use App\Listeners\AgentAuditServiceListener;
  13. use App\Models\CauseDel;
  14. use App\Models\EnrollUser;
  15. use App\Models\Wd\TestUser;
  16. use App\Models\ServiceReason;
  17. use App\Models\Warea;
  18. use App\Models\WdOrder;
  19. use App\Models\WdStore;
  20. use Carbon\Carbon;
  21. use EasyWeChat\Factory;
  22. use GuzzleHttp\Client;
  23. use Illuminate\Database\Eloquent\Model;
  24. use Illuminate\Support\Facades\DB;
  25. use App\Models\User;
  26. use App\Models\Admin;
  27. use App\Models\UserCopy;
  28. use App\Models\UserCert;
  29. use App\Models\AgentOperationLog;
  30. use App\Models\Message;
  31. use Illuminate\Support\Facades\Validator;
  32. use Illuminate\Validation\Rule;
  33. use Illuminate\Support\Facades\Log;
  34. use Illuminate\Support\Facades\Auth;
  35. use Jxlwqq\IdValidator\IdValidator;
  36. use Illuminate\Support\Facades\Cache;
  37. use Illuminate\Support\Facades\Redis;
  38. use Illuminate\Support\Facades\Storage;
  39. use Illuminate\Http\Request;
  40. use \Exception;
  41. use App\Models\Enroll;
  42. class UserController extends Controller
  43. {
  44. /***取消冻结*/
  45. public function Cancel_status(Request $request){
  46. User::where('id',$request->id)->update(['freeze_status'=>0,'freeze_time'=>null]);
  47. return $this->success([]);
  48. }
  49. //获取代理列表信息
  50. public function getUserList(Request $request)
  51. {
  52. $input = $request->all();
  53. $page_size = $input['page_size'];
  54. $page_index = $input['page_index'];
  55. $num = ($page_index - 1) * $page_size;
  56. $search_name = $input['search_name'];
  57. $info_select = $input['info_select'];
  58. $recom_name = $request->has('recom_name') ? $input['recom_name'] : '';
  59. $agent_name = $request->has('agent_name') ? $input['agent_name'] : '';
  60. $commissar_id = $input['commissar'];
  61. $warea_id = $input['warea_id'];
  62. $where = [];
  63. if ($input['level'] == '4') {
  64. $user = User::onlyTrashed()->where($where);
  65. } elseif ($input['level'] == 'all') {
  66. $user = User::withTrashed()->where($where);
  67. } elseif ($input['level']==5){
  68. $user = User::withTrashed()->where($where)->where('freeze_status',1);
  69. }else {
  70. $where['level'] = $input['level'];
  71. $user = User::where($where);
  72. }
  73. if ($request->has('start_time')){
  74. Log::error('时间');
  75. if ($input['start_time']){
  76. $user->where('created_at','>=',$input['start_time']);
  77. }
  78. }
  79. if ($request->has('end_time')){
  80. if ($input['end_time']){
  81. $user->where('created_at','<=',$input['end_time']);
  82. }
  83. }
  84. if ($input['level']!=4){
  85. $user->whereIn('cert_status', [3, 6])->where('service_status','<>',2);
  86. }
  87. // if ($search_name) {
  88. // $user->where(function ($query) use ($search_name) {
  89. // $query->where('nickname', 'like', '%' . $search_name . '%')
  90. // ->orWhere('mobile', $search_name)
  91. // ->orWhere('cre_num', $search_name)
  92. // ->orWhere('realname', 'like', '%' . $search_name . '%');
  93. // });
  94. // }
  95. if ($search_name) {
  96. if ($info_select==1){
  97. $user->where(function ($query) use ($search_name) {
  98. $query->where('nickname', 'like', '%' . $search_name . '%')
  99. ->orWhere('mobile', 'like','%'.$search_name.'%' )
  100. ->orWhere('cre_num', $search_name)
  101. ->orWhere('realname', 'like', '%' . $search_name . '%');
  102. });
  103. }elseif ($info_select==2){
  104. $recom_id = $this->getUserInfo($search_name);
  105. $user->whereIn('recom_id', $recom_id);
  106. }else{
  107. $agent_id = $this->getUserInfo($search_name);
  108. $user->whereIn('agent_id', $agent_id);
  109. }
  110. }
  111. // if ($agent_name) {
  112. // $agent_id = $this->getUserInfo($agent_name);
  113. // $user->whereIn('agent_id', $agent_id);
  114. //
  115. // }
  116. // if ($recom_name) {
  117. // $recom_id = $this->getUserInfo($recom_name);
  118. // $user->whereIn('recom_id', $recom_id);
  119. //
  120. // }
  121. //<<<<<<< HEAD
  122. if ($warea_id && $commissar_id) {
  123. $user->where('warea_id', $warea_id);
  124. }
  125. if ($commissar_id && empty($warea_id)) {
  126. $warea_ids = Warea::where('admin_id', $commissar_id)->pluck('id');
  127. $user->whereIn('warea_id', $warea_ids);
  128. }
  129. $count = $user->where($where)->count();
  130. if ($count == 0) {
  131. $this->error('400001', '没有数据');
  132. }
  133. $list = $user->with(['recom:id,nickname,mobile', 'agent:id,nickname,mobile,level', 'warea:id,name,admin_name'])
  134. ->select('deleted_at','id', 'nickname','name', 'remark','realname', 'level', 'headimgurl', 'mobile', 'recom_id','remark_name','freeze_status','login_at','freeze_time', 'agent_id','service_status', 'warea_id','cre_num', 'status','province','city','country','address','in_group',
  135. DB::raw('if(cert_status=3,6,6) as cert_status'), DB::raw('if(deleted_at,1,0) as deleted'))
  136. ->orderBy('id', 'desc')->skip($num)->take($page_size)->get();
  137. $admin=Auth::user();
  138. $status=false;
  139. if($admin->role_id==22 || $admin->role_id==32){
  140. $status=true;
  141. }
  142. foreach ($list as $k=>$v){
  143. if (empty($v->remark)){
  144. $list[$k]['remark']='';
  145. }
  146. if ($v->deleted_at){
  147. $list[$k]['deletd_info']=AgentOperationLog::where('user_id',$v->id)
  148. ->where('type',4)->orderByDesc('created_at')->first();
  149. }
  150. if (!empty($v->headimgurl)){
  151. $list[$k]['headimgurl']=mb_substr($v->headimgurl,0,-3).'0';
  152. }
  153. if ($v->level!=3 && $v->level!=0){
  154. if ($v->agent->level==3 || $v->agent->level==0){
  155. $list[$k]->crown=$v->agent;
  156. }else{
  157. $res=$this->get_crown($v->agent->id);
  158. $list[$k]->crown=$res;
  159. }
  160. }else{
  161. $list[$k]->crown='';
  162. }
  163. if (!$status){
  164. if ($list[$k]->cre_num){
  165. $list[$k]->cre_num=mb_substr($list[$k]->cre_num,0,2).'********'.mb_substr($list[$k]->cre_num,14);
  166. }
  167. }
  168. // $list[$k]['is_test']=1;
  169. // $test_user=TestUser::where('phone',$v->mobile)->first();
  170. // if(!empty($test_user) ){
  171. // $list[$k]['is_test']=0;
  172. // }
  173. }
  174. return $this->success_list($list, '获取数据成功', $count);
  175. }
  176. //添加内测
  177. public function addTestUser(Request $request){
  178. $rules=[
  179. 'phone'=>'required|regex:/^1[3456789][0-9]{9}$/',
  180. ];
  181. $message=[
  182. 'phone.required'=>'手机号不能为空.',
  183. 'phone.regex'=>'手机号格式有误.',
  184. ];
  185. $validator = Validator::make($request->input(),$rules,$message);
  186. if($validator->fails()){
  187. return $this->error('400013',$validator->errors()->first());
  188. }
  189. if(TestUser::where('phone',$request->input('phone'))->first()){
  190. return $this->error('450001','手机号已存在');
  191. }
  192. $res=TestUser::create([
  193. 'phone'=>$request->input('phone'),
  194. 'name'=>$request->input('realname'),
  195. 'nickname'=>$request->input('nickname'),
  196. 'level'=>$request->input('level'),
  197. ]);
  198. if($res){
  199. return $this->success([]);
  200. }else{
  201. return $this->error();
  202. }
  203. }
  204. //添取消内测
  205. public function cancelTestUser(Request $request){
  206. $rules=[
  207. 'phone'=>'required|regex:/^1[345789][0-9]{9}$/',
  208. ];
  209. $message=[
  210. 'phone.required'=>'手机号不能为空.',
  211. 'phone.regex'=>'手机号格式有误.',
  212. ];
  213. $validator = Validator::make($request->input(),$rules,$message);
  214. if($validator->fails()){
  215. return $this->error('400013',$validator->errors()->first());
  216. }
  217. $res=TestUser::where('phone',$request->input('phone'))->delete();
  218. if($res){
  219. return $this->success([]);
  220. }else{
  221. return $this->error();
  222. }
  223. }
  224. /**查找代理公司**/
  225. public function get_crown($id){
  226. $re=User::with(['agent:id,nickname,mobile,level'])->where('id',$id)->first();
  227. if (!$re){
  228. return '';
  229. }
  230. if ($re->agent->level!=3 && $re->agent->level!=0){
  231. $res=$this->get_crown($re->agent->id);
  232. return $res;
  233. }
  234. return $re->agent;
  235. }
  236. //根据输入条件查询用户
  237. public function getUserInfo($search = null)
  238. {
  239. return User::where('nickname', 'like', '%' . $search . '%')
  240. ->orWhere('mobile', $search)
  241. ->orWhere('cre_num', $search)
  242. ->orWhere('realname', 'like', '%' . $search . '%')
  243. ->pluck('id');
  244. }
  245. //导出代理信息
  246. public function exportUserList(Request $request)
  247. {
  248. ini_set('memory_limit', '2048M');
  249. $input = $request->all();
  250. $page_size = $input['page_size'];
  251. $page_index = $input['page_index'];
  252. $num = ($page_index - 1) * $page_size;
  253. $search_name = $input['search_name'];
  254. $info_select = $input['info_select'];
  255. $recom_name = $request->has('recom_name') ? $input['recom_name'] : '';
  256. $agent_name = $request->has('agent_name') ? $input['agent_name'] : '';
  257. $commissar_id = $input['commissar'];
  258. $warea_id = $input['warea_id'];
  259. $where = [];
  260. if ($input['level'] == '4') {
  261. $user = User::onlyTrashed()->where($where);
  262. } elseif ($input['level'] == 'all') {
  263. $user = User::where($where)->whereNull('deleted_at');
  264. }elseif ($input['level']==5){
  265. $user = User::withTrashed()->where($where)->where('freeze_status',1);
  266. } else {
  267. $where['level'] = $input['level'];
  268. $user = User::where($where);
  269. }
  270. if ($request->has('start_time')){
  271. if ($input['start_time']){
  272. $user->where('created_at','>=',$input['start_time']);
  273. }
  274. }
  275. if ($request->has('end_time')){
  276. if ($input['end_time']){
  277. $user->where('created_at','<=',$input['end_time']);
  278. }
  279. }
  280. $user->whereIn('cert_status', [3, 6])->where('service_status',0);
  281. if ($search_name) {
  282. // $user->where(function ($query) use ($search_name) {
  283. // $query->where('nickname', 'like', '%' . $search_name . '%')
  284. // ->orWhere('mobile', $search_name)
  285. // ->orWhere('cre_num', $search_name)
  286. // ->orWhere('realname', 'like', '%' . $search_name . '%');
  287. // });
  288. if ($info_select==1){
  289. $user->where(function ($query) use ($search_name) {
  290. $query->where('nickname', 'like', '%' . $search_name . '%')
  291. ->orWhere('mobile', 'like',"%$search_name%")
  292. ->orWhere('cre_num', $search_name)
  293. ->orWhere('realname', 'like', '%' . $search_name . '%');
  294. });
  295. }elseif ($info_select==2){
  296. $recom_id = $this->getUserInfo($search_name);
  297. $user->whereIn('recom_id', $recom_id);
  298. }else{
  299. $agent_id = $this->getUserInfo($search_name);
  300. $user->whereIn('agent_id', $agent_id);
  301. }
  302. }
  303. // if ($agent_name) {
  304. // $agent_id = $this->getUserInfo($agent_name);
  305. // $user->whereIn('agent_id', $agent_id);
  306. // }
  307. // if ($recom_name) {
  308. // $recom_id = $this->getUserInfo($recom_name);
  309. // $user->whereIn('recom_id', $recom_id);
  310. // }
  311. if ($warea_id && $commissar_id) {
  312. $user->where('warea_id', $warea_id);
  313. }
  314. if ($commissar_id && empty($warea_id)) {
  315. $warea_ids = Warea::where('admin_id', $commissar_id)->pluck('id');
  316. $user->whereIn('warea_id', $warea_ids);
  317. }
  318. $list = $user->with(['recom:id,nickname,mobile', 'agent:id,nickname,mobile,level', 'warea:id,name,admin_name'])
  319. ->select('id', 'nickname', 'realname', 'cre_num', 'remark', 'level', 'mobile', 'recom_id', 'agent_id', 'warea_id', 'auth_code', 'auth_startime', 'auth_endtime', 'recom_code', 'status','remark_name','freeze_status','login_at','freeze_time','service_status','in_group',
  320. DB::raw('if(cert_status=3,6,6) as cert_status'), DB::raw('if(deleted_at,1,0) as deleted'),'deleted_at','province','city','country','address')
  321. ->orderBy('id', 'desc')
  322. // ->skip($num)->take(10000)
  323. ->get();
  324. $WDUserIds=WdStore::where('is_apply',3)->pluck('user_id')->toArray();
  325. foreach ($list as $k=>$v){
  326. if (in_array($v->id,$WDUserIds)){
  327. $list[$k]->store_status=true;
  328. }else{
  329. $list[$k]->store_status=false;
  330. }
  331. if ($v->deleted_at){
  332. $list[$k]->crown='';
  333. }else{
  334. if ($v->level!=3 && $v->level!=0){
  335. if ($v->agent){
  336. if ($v->agent->level==3 || $v->agent->level==0){
  337. $list[$k]->crown=$v->agent;
  338. }else{
  339. $res=$this->get_crown($v->agent->id);
  340. $list[$k]->crown=$res;
  341. }
  342. }else{
  343. $list[$k]->crown='';
  344. }
  345. }else{
  346. $list[$k]->crown='';
  347. }
  348. }
  349. if ($v->level==3){
  350. if ($v->remark_name){
  351. $list[$k]->nickname=$v->remark_name;
  352. }
  353. }
  354. }
  355. if ($list) {
  356. return $this->success($list);
  357. } else {
  358. return $this->error();
  359. }
  360. }
  361. //代理详情
  362. public function getUserDetails(Request $request)
  363. {
  364. $input = $request->all();
  365. $user = User::withTrashed()->with(['recom:id,nickname,mobile', 'agent:id,nickname,mobile'
  366. ])->where('id', $input['id'])->first();
  367. if ($user) {
  368. if ($user->level == '3') {
  369. $childAgent = User::where('agent_id', $user->id)->select('id', 'nickname', 'level', 'mobile')->get()->toArray();
  370. $childAgentIds = array_column($childAgent, 'id');
  371. if ($childAgentIds) {
  372. $childChildAgent = User::whereIn('agent_id', $childAgentIds)->select('id', 'nickname', 'level', 'mobile')->get()->toArray();
  373. $user->child_agent = array_merge($childAgent, $childChildAgent);
  374. } else {
  375. $user->child_agent = $childAgent;
  376. }
  377. $user->childAgentCount = count($user->child_agent);
  378. } elseif ($user->level == '2') {
  379. $user->child_agent = User::where('agent_id', $user->id)->select('id', 'nickname', 'level', 'mobile')->get()->toArray();
  380. $user->childAgentCount = count($user->child_agent);
  381. $user->change_info=AgentOperationLog::where('user_id',$user->id)->where('type',2)->first();
  382. } else {
  383. $user->child_agent = [];
  384. $user->childAgentCount = 0;
  385. }
  386. if ($user->warea_id) {
  387. $warea = Warea::where('id', $user->warea_id)->first();
  388. $user['warea']->warea_name = $warea->name;
  389. if ($warea->admin_id) {
  390. $user['warea']->commissar = Admin::where('id', $warea->admin_id)->value('name');
  391. }
  392. }
  393. if (!empty($user->deleted_at)) {
  394. $user->delete = '1';//已删除
  395. } else {
  396. $user->delete = '0';//未删除
  397. }
  398. if ($user->cre_num){
  399. $user->cre_num=mb_substr($user->cre_num,0,2).'********'.mb_substr($user->cre_num,14);
  400. }
  401. $user->up_team=$this->getUpTeam($user->id);
  402. // event(new ChangeUserInfo($user));
  403. return $this->success($user);
  404. } else {
  405. return $this->error('400004', '代理信息不存在');
  406. }
  407. }
  408. /**点击查看身份证号**/
  409. public function GetCreNum(Request $request){
  410. $id=$request->input('id');
  411. $cre_num=User::where('id',$id)->select('cre_num','mobile','nickname')->first();
  412. $data=['type'=>0,'time'=>Carbon::now()->toDateTimeString(),
  413. 'created_at'=>Carbon::now()->toDateTimeString(),'updated_at'=>Carbon::now()->toDateTimeString(),
  414. 'user_id'=>$id,
  415. 'log'=>Auth::user()->name.'查看了该代理('.$cre_num->nickname.'手机号:'.$cre_num->mobile.')的身份证号码。'
  416. ];
  417. DB::table('look_user_log')->insert($data);
  418. return $this->success(['cre_num'=>$cre_num->cre_num]);
  419. }
  420. //代理详情
  421. public function getUserDetailsdemo(Request $request)
  422. {
  423. $input = $request->all();
  424. $user = User::withTrashed()->with(['recom:id,nickname,mobile', 'agent:id,nickname,mobile'
  425. ])->where('id', $input['id'])->first();
  426. if ($user) {
  427. if ($user->level == '3') {
  428. $childAgent = User::where('agent_id', $user->id)->select('id', 'nickname', 'level', 'mobile')->with(['recom:id,nickname,mobile', 'agent:id,nickname,mobile'
  429. ])->get()->toArray();
  430. $childAgentIds = array_column($childAgent, 'id');
  431. if ($childAgentIds) {
  432. $childChildAgent = User::whereIn('agent_id', $childAgentIds)->select('id', 'nickname', 'level', 'mobile')->with(['recom:id,recom_id,nickname,mobile', 'agent:id,nickname,mobile'
  433. ])->get()->toArray();
  434. $user->child_agent = array_merge($childAgent, $childChildAgent);
  435. } else {
  436. $user->child_agent = $childAgent;
  437. }
  438. $user->childAgentCount = count($user->child_agent);
  439. } elseif ($user->level == '2') {
  440. $user->child_agent = User::where('agent_id', $user->id)->select('id', 'nickname', 'level', 'mobile')->get()->toArray();
  441. $user->childAgentCount = count($user->child_agent);
  442. } else {
  443. $user->child_agent = [];
  444. $user->childAgentCount = 0;
  445. }
  446. if ($user->warea_id) {
  447. $warea = Warea::where('id', $user->warea_id)->first();
  448. $user['warea']->warea_name = $warea->name;
  449. if ($warea->admin_id) {
  450. $user['warea']->commissar = Admin::where('id', $warea->admin_id)->value('name');
  451. }
  452. }
  453. if (!empty($user->deleted_at)) {
  454. $user->delete = '1';//已删除
  455. } else {
  456. $user->delete = '0';//未删除
  457. }
  458. $user->up_team=$this->getUpTeam($user->id);
  459. // event(new ChangeUserInfo($user));
  460. // foreach ($user as $k=>$v){
  461. // $user[$k]->racom_mobile=$v;
  462. //// $user[$k]['racom_nickname']=$v->recom->nickname;
  463. //// $user[$k]['racom_level']=$v->recom->level;
  464. //// $user[$k]['agent_mobile']=$v->agent->mobile;
  465. //// $user[$k]['agent_nickname']=$v->agent->nickname;
  466. //// $user[$k]['agent_level']=$v->agent->level;
  467. // }
  468. return $this->success($user);
  469. } else {
  470. return $this->error('400004', '代理信息不存在');
  471. }
  472. }
  473. //获取战区政委信息
  474. public function getWareaInfo($warea_id)
  475. {
  476. $data = [];
  477. if ($warea_id) {
  478. $warea = Warea::where('id', $warea_id)->first();
  479. if ($warea) {
  480. $data['warea_name'] = $warea->name;
  481. if ($warea->admin_id) {
  482. $data['commissar'] = Admin::where('id', $warea->admin_id)->value('name');
  483. }
  484. }
  485. }
  486. return $data;
  487. }
  488. //获取未审核代理列表信息
  489. public function getNocertUserList(Request $request)
  490. {
  491. $input = $request->all();
  492. $page_size = $input['page_size'];
  493. $page_index = $input['page_index'];
  494. $num = ($page_index - 1) * $page_size;
  495. $search_name = $input['search_name'];
  496. if ($input['cert'] == 'all') {
  497. $where = [];
  498. } elseif($input['cert'] == '7'){
  499. $where['service_status']=2;
  500. }else {
  501. $where['cert_status'] = $input['cert'];
  502. }
  503. $data = User::where(function ($query) use ($search_name) {
  504. $query->where('nickname', 'like', '%' . $search_name . '%')
  505. ->orWhere('mobile', 'like', '%' . $search_name . '%')
  506. ->orWhere('cre_num', 'like', '%' . $search_name . '%')
  507. ->orWhere('realname', 'like', '%' . $search_name . '%');
  508. })
  509. ->where($where)
  510. ->where('id', '<>', 1);
  511. if($input['cert'] == '7'){
  512. $admin=Auth::user();
  513. if($admin->role_id==23){
  514. $warea_ids = Warea::where('admin_id',$admin->id)->pluck('id');
  515. $data->whereIn('warea_id',$warea_ids);
  516. }
  517. }
  518. $count = $data->count();
  519. if ($count == 0) {
  520. $this->error('400001', '没有数据');
  521. }
  522. // DB::enableQueryLog();
  523. $list = $data
  524. ->with('recom:id,nickname,mobile', 'agent:id,nickname,mobile', 'crown:id,nickname,mobile', 'usercert:id,user_id,recom_audit,recom_audit_desc,agent_audit,agent_audit_desc,company_audit_desc')
  525. ->skip($num)->take($page_size)
  526. ->get();
  527. if (empty($list)) {
  528. return $this->error('400002', '没有获取到数据');
  529. }
  530. return $this->success_list($list, '获取数据成功', $count);
  531. }
  532. //恢复代理公司驳回
  533. public function restoreCompanyRejected(Request $request){
  534. $id=$request->input('id');
  535. DB::beginTransaction();
  536. try{
  537. $user=User::find($id);
  538. UserCert::where('user_id',$id)->update(['company_audit'=>0,'company_audit_desc'=>null]);
  539. $user->service_status=1;
  540. $user->save();
  541. DB::commit();
  542. return $this->success([]);
  543. }catch(\Exception $e){
  544. DB::rollback();
  545. return $this->error();
  546. }
  547. }
  548. //获取代理授权信息
  549. public function getAuthUserList(Request $request)
  550. {
  551. $input = $request->all();
  552. $page_size = $input['page_size'];
  553. $page_index = $input['page_index'];
  554. $num = ($page_index - 1) * $page_size;
  555. $search_name = $input['search_name'];
  556. $status = $input['status'];
  557. $where = [];
  558. switch ($status) {
  559. case '0': //未授权
  560. $auth_status = 0;
  561. $count = User::where(function ($query) use ($search_name) {
  562. $query->where('nickname', 'like', '%' . $search_name . '%')
  563. ->orWhere('mobile', 'like', '%' . $search_name . '%')
  564. ->orWhere('cre_num', 'like', '%' . $search_name . '%')
  565. ->orWhere('realname', 'like', '%' . $search_name . '%');
  566. })->whereNull('auth_code')
  567. ->where('id', '<>', 1)
  568. ->count();
  569. if ($count == 0) {
  570. $this->error('400001', '没有数据');
  571. }
  572. $list = User::where(function ($query) use ($search_name) {
  573. $query->where('nickname', 'like', '%' . $search_name . '%')
  574. ->orWhere('mobile', 'like', '%' . $search_name . '%')
  575. ->orWhere('cre_num', 'like', '%' . $search_name . '%')
  576. ->orWhere('realname', 'like', '%' . $search_name . '%');
  577. })
  578. ->whereNull('auth_code')
  579. ->where('id', '<>', 1)
  580. ->with('recom:id,nickname,mobile', 'agent:id,nickname,mobile', 'usercert:id,user_id,recom_audit,recom_audit_desc,agent_audit,agent_audit_desc')
  581. ->skip($num)->take($page_size)
  582. ->get();
  583. break;
  584. case '1': //已授权
  585. $auth_status = 1;
  586. $nowDate = date("Y-m-d H:i:s", time());
  587. $count = User::where(function ($query) use ($search_name) {
  588. $query->where('nickname', 'like', '%' . $search_name . '%')
  589. ->orWhere('mobile', 'like', '%' . $search_name . '%')
  590. ->orWhere('auth_code', 'like', '%' . $search_name . '%');
  591. })
  592. ->where($where)
  593. ->where('id', '<>', 1)
  594. // ->where('auth_startime','<=',$nowDate)
  595. ->where('auth_endtime', '>=', $nowDate)
  596. ->count();
  597. if ($count == 0) {
  598. $this->error('400001', '没有数据');
  599. }
  600. $list = User::where(function ($query) use ($search_name) {
  601. $query->where('nickname', 'like', '%' . $search_name . '%')
  602. ->orWhere('mobile', 'like', '%' . $search_name . '%')
  603. ->orWhere('auth_code', 'like', '%' . $search_name . '%');
  604. })
  605. ->where($where)
  606. ->where('id', '<>', 1)
  607. // ->where('auth_startime','<=',$nowDate)
  608. ->where('auth_endtime', '>=', $nowDate)
  609. ->with('recom:id,nickname,mobile', 'agent:id,nickname,mobile', 'usercert:id,user_id,recom_audit,recom_audit_desc,agent_audit,agent_audit_desc')
  610. ->skip($num)->take($page_size)
  611. ->get();
  612. break;
  613. case '2': //已过期
  614. $auth_status = 2;
  615. $nowDate = date("Y-m-d H:i:s", time());
  616. // if($input['auth_time']){
  617. // $where['auth_startime']=$input['auth_time'];
  618. // }
  619. $count = User::where(function ($query) use ($search_name) {
  620. $query->where('nickname', 'like', '%' . $search_name . '%')
  621. ->orWhere('mobile', 'like', '%' . $search_name . '%')
  622. ->orWhere('auth_code', 'like', '%' . $search_name . '%');
  623. })
  624. ->where($where)
  625. ->where('id', '<>', 1)
  626. ->where('auth_endtime', '<', $nowDate)
  627. ->count();
  628. if ($count == 0) {
  629. $this->error('400001', '没有数据');
  630. }
  631. $list = User::where(function ($query) use ($search_name) {
  632. $query->where('nickname', 'like', '%' . $search_name . '%')
  633. ->orWhere('mobile', 'like', '%' . $search_name . '%')
  634. ->orWhere('auth_code', 'like', '%' . $search_name . '%');
  635. })
  636. ->where($where)
  637. ->where('id', '<>', 1)
  638. ->where('auth_endtime', '<', $nowDate)
  639. ->with('recom:id,nickname,mobile', 'agent:id,nickname,mobile', 'usercert:id,user_id,recom_audit,recom_audit_desc,agent_audit,agent_audit_desc')
  640. ->skip($num)->take($page_size)
  641. ->get();
  642. break;
  643. }
  644. if ($list) {
  645. foreach ($list as $key => $val) {
  646. $list[$key]['auth_status'] = $auth_status;
  647. }
  648. }
  649. return $this->success_list($list, '获取数据成功', $count);
  650. }
  651. //代理重新授权
  652. public function updateUserAuthInfo(Request $request)
  653. {
  654. $input = $request->all();
  655. $userInfo = User::find($input['id']);
  656. if (empty($userInfo)) {
  657. return $this->error('400213', '代理信息不存在');
  658. }
  659. $auth_code = $this->getAuthCode();
  660. $data['auth_code'] = $auth_code;
  661. $data['auth_startime'] = $input['auth_startime'];
  662. $data['auth_endtime'] = $input['auth_endtime'];
  663. DB::beginTransaction();
  664. $row = User::where('id', $input['id'])->update($data);
  665. $remark = '单个授权';
  666. $res = $this->addAgentOperationLog('5', $input['id'], $remark);
  667. if ($row && $res) {
  668. DB::commit();
  669. Log::info('管理员:' . Auth::user()->name . '(id=' . Auth::user()->id . ')授权代理信息成功,代理id=' . $input['id']);
  670. return $this->success([], '授权成功');
  671. }
  672. DB::rollBack();
  673. return $this->error();
  674. }
  675. //代理批量授权
  676. public function updateUserManyAuthInfo(Request $request)
  677. {
  678. $input = $request->all();
  679. $userId = $input['userId'];
  680. DB::beginTransaction();
  681. try {
  682. foreach ($userId as $key => $val) {
  683. $userInfo = User::find($val);
  684. if (empty($userInfo)) {
  685. return $this->error('400213', '代理(id=' . $val . ')信息不存在');
  686. }
  687. $auth_code = $this->getAuthCode();
  688. $data['auth_code'] = $auth_code;
  689. $data['auth_startime'] = $input['auth_startime'];
  690. $data['auth_endtime'] = $input['auth_endtime'];
  691. User::where('id', $val)->update($data);
  692. $remark = '批量授权';
  693. $this->addAgentOperationLog('5', $val, $remark);
  694. }
  695. DB::commit();
  696. Log::info('管理员:' . Auth::user()->name . '(id=' . Auth::user()->id . ')授权代理信息成功,代理ids=' . json_encode($userId));
  697. return $this->success([], '授权成功');
  698. } catch (Exception $e) {
  699. DB::rollBack();
  700. return $this->error();
  701. }
  702. }
  703. // public function updateBatch($multipleData = [])
  704. // {
  705. // try {
  706. // if (empty($multipleData)) {
  707. // throw new \Exception("数据不能为空");
  708. // }
  709. // $tableName = DB::getTablePrefix() . $this->getTable(); // 表名
  710. // $firstRow = current($multipleData);
  711. // $updateColumn = array_keys($firstRow);
  712. // // 默认以id为条件更新,如果没有ID则以第一个字段为条件
  713. // $referenceColumn = isset($firstRow['id']) ? 'id' : current($updateColumn);
  714. // unset($updateColumn[0]);
  715. // // 拼接sql语句
  716. // $updateSql = "UPDATE " . $tableName . " SET ";
  717. // $sets = [];
  718. // $bindings = [];
  719. // foreach ($updateColumn as $uColumn) {
  720. // $setSql = "`" . $uColumn . "` = CASE ";
  721. // foreach ($multipleData as $data) {
  722. // $setSql .= "WHEN `" . $referenceColumn . "` = ? THEN ? ";
  723. // $bindings[] = $data[$referenceColumn];
  724. // $bindings[] = $data[$uColumn];
  725. // }
  726. // $setSql .= "ELSE `" . $uColumn . "` END ";
  727. // $sets[] = $setSql;
  728. // }
  729. // $updateSql .= implode(', ', $sets);
  730. // $whereIn = collect($multipleData)->pluck($referenceColumn)->values()->all();
  731. // $bindings = array_merge($bindings, $whereIn);
  732. // $whereIn = rtrim(str_repeat('?,', count($whereIn)), ',');
  733. // $updateSql = rtrim($updateSql, ", ") . " WHERE `" . $referenceColumn . "` IN (" . $whereIn . ")";
  734. // // 传入预处理sql语句和对应绑定数据
  735. // return DB::update($updateSql, $bindings);
  736. // } catch (\Exception $e) {
  737. // return false;
  738. // }
  739. // }
  740. // }
  741. //添加代理信息
  742. public function uploadUser(Request $request)
  743. {
  744. $input = $request->all();
  745. $rules = [
  746. 'mobile' => ['required',
  747. Rule::unique('users')->where(function ($query) {
  748. $query->where('deleted_at', null);
  749. }),
  750. 'regex:/^1[0-9][0-9]{9}$/'],
  751. 'cre_num' => ['nullable',
  752. Rule::unique('users')->where(function ($query) {
  753. $query->where('deleted_at', null);
  754. })],
  755. 'share' => 'required | regex:/^1[345789][0-9]{9}$/',
  756. 'nickname' => 'required',
  757. 'level' => 'required | numeric',
  758. ];
  759. $uuu = new User();
  760. $validator = User::validator($input, $rules);
  761. if ($validator->fails()) {
  762. return $this->error('400013', $validator->errors()->first());
  763. }
  764. $idValidator = new IdValidator();
  765. if ($input['cre_num']) {
  766. if (!$idValidator->isValid($input['cre_num'])) {
  767. return $this->error('400013', '身份证号有误');
  768. }
  769. }
  770. $code = $this->getRandomString(6);
  771. $recom = User::where('mobile', $input['share'])->first();
  772. if (empty($recom)) {
  773. return $this->error('400115', '邀请人信息不存在');
  774. }
  775. if ($input['level'] == $recom->level) {
  776. $agent_id = $recom->agent_id;
  777. }
  778. if ($input['level'] < $recom->level) {
  779. $agent_id = $recom->id;
  780. }
  781. if ($input['level'] > $recom->level) {
  782. if ($input['level'] == '3') {
  783. $agent_id = '1';
  784. } else {
  785. $recom_up=User::find($recom->agent_id);
  786. if($recom_up->level=='2'){
  787. $agent_id = $recom_up->agent_id;
  788. }else{
  789. $agent_id = $recom_up->id;
  790. }
  791. }
  792. }
  793. $agent = User::where('id', $agent_id)->first();
  794. if ($agent->level == 3) {
  795. $crown_id = $agent->id;
  796. } elseif ($agent->level == 2) {
  797. $crown_id = $agent->agent_id;
  798. } else {
  799. $crown_id = '';
  800. }
  801. $warea_id = $recom->warea_id;
  802. // if($crown_id){
  803. // $warea_id=User::where('id',$crown_id)->value('warea_id');
  804. // }else{
  805. // $warea_id='';
  806. // }
  807. DB::beginTransaction();
  808. try {
  809. $data['mobile'] = $input['mobile'];
  810. $data['name'] = $input['nickname'];
  811. $data['nickname'] = $input['nickname'];
  812. $data['realname'] = $input['realname'];
  813. $data['password'] = MD5($input['mobile']);
  814. $data['cre_num'] = $input['cre_num'];
  815. $data['level'] = $input['level'];
  816. $data['headimgurl'] = 'https://img.bosszhipin.com/beijin/mcs/chatphoto/20181102/e0e8b50969101987a84f1643716b41ffcfcd208495d565ef66e7dff9f98764da.jpg';
  817. $data['status'] = 0;
  818. $data['cert_status'] = '6';
  819. $data['agent_id'] = $agent_id;
  820. $data['recom_id'] = $recom->id;
  821. $data['crown_id'] = $crown_id;
  822. $data['warea_id'] = $warea_id;
  823. $data['recom_code'] = $code;
  824. $data['auth_code'] = $this->getAuthCode();
  825. $data['auth_startime'] = date('Y-m-01 00:00:00');
  826. $data['auth_endtime'] = date('Y-m-01 00:00:00', strtotime('+1 years'));
  827. $data['register_type'] = '2';
  828. $row = User::create($data);
  829. $recoms['title'] = '新增成员推送';
  830. $recoms['type'] = '1';
  831. $recoms['data'] = '';
  832. $recoms['status'] = '0';
  833. $recoms['user_id'] = $row->recom_id;
  834. $recoms['agent_id'] = '1';
  835. Message::create($recoms);
  836. $agents['title'] = '新增成员推送';
  837. $agents['type'] = '1';
  838. $agents['data'] = '';
  839. $agents['status'] = '0';
  840. $agents['user_id'] = $row->agent_id;
  841. $agents['agent_id'] = '1';
  842. Message::create($agents);
  843. $after = ['id' => $row->id, 'nickname' => $row->nickname, 'mobile' => $row->mobile, 'level' => $row->level, 'recom_id' => $row->recom_id, 'recom_mobile' => $input['share'], 'agent_id' => $row->agent_id];
  844. $log = '添加代理成功,代理信息:' . json_encode($after, JSON_UNESCAPED_UNICODE);
  845. $this->addAgentOperationLog('1', $row->id, '', $log);
  846. if($input['level']==3){
  847. event(new AddAgent($row));
  848. }
  849. DB::commit();
  850. Log::info('管理员:' . Auth::user()->name . '(id=' . Auth::user()->id . ')添加' . $row->level . '级代理:' . $data['nickname'] . '(id=' . $row->id . ')成功,邀请人:' . $recom->nickname . '(id=' . $row->recom_id . ')');
  851. return $this->success([], '添加成功');
  852. } catch (Exception $e) {
  853. DB::rollBack();
  854. return $e->getMessage();
  855. return $this->error();
  856. }
  857. }
  858. /*授权码*/
  859. function getAuthCode()
  860. {
  861. $time = time();
  862. $three = mt_rand(100, 999);
  863. $res = date('ymd', $time);
  864. $re = mt_rand(10000000000, 99999999999);
  865. $data = 'DWBS00' . $three . $res . $re;
  866. return $data;
  867. }
  868. /* 随机字符串 邀请码*/
  869. function getRandomString($len, $chars = null)
  870. {
  871. if (is_null($chars)) {
  872. $chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
  873. }
  874. mt_srand(10000000 * (double)microtime());
  875. for ($i = 0, $str = '', $lc = strlen($chars) - 1; $i < $len; $i++) {
  876. $str .= $chars[mt_rand(0, $lc)];
  877. }
  878. $count = User::where('recom_code', $str)->count();
  879. if ($count > 0) {
  880. $this->getRandomString(6);
  881. } else {
  882. return $str;
  883. }
  884. }
  885. //修改手机号
  886. public function updateMobile(Request $request)
  887. {
  888. $input = $request->all();
  889. $rules = [
  890. 'mobile' => [
  891. 'required',
  892. Rule::unique('users')->ignore($input['id'], 'id')->where(function ($query) {
  893. $query->where('deleted_at', null);
  894. }),
  895. 'regex:/^1[3456789][0-9]{9}$/'
  896. ],
  897. ];
  898. $uuu = new User();
  899. $validator = $uuu->validator($input, $rules);
  900. if ($validator->fails()) {
  901. return $this->error('400013', $validator->errors()->first());
  902. }
  903. $user = User::find($input['id']);
  904. $phone = $user->mobile;
  905. $user->mobile = $input['mobile'];
  906. $user->auth_img=null;
  907. DB::beginTransaction();
  908. $row = $user->save();
  909. $res = $this->addAgentOperationLog('6', $user->id);
  910. if ($row && $res) {
  911. DB::commit();
  912. Log::info('管理员:' . Auth::user()->name . '(id=' . Auth::user()->id . ')修改代理:' . $user->nickname . '(id=' . $user->id . ')手机号成功,原手机号:' . $phone . ',新手机号:' . $input['mobile']);
  913. return $this->success([], '修改成功');
  914. } else {
  915. DB::rollBack();
  916. return $this->error();
  917. }
  918. //=======
  919. // $row=$user->save();
  920. // if($row){
  921. // Log::info('管理员:'.Auth::user()->name.'(id='.Auth::user()->id.')修改代理:'.$user->nickname.'(id='.$user->id.')手机号成功,原手机号:'.$phone.',新手机号:'.$input['mobile']);
  922. // return $this->success([],'修改成功');
  923. // }
  924. // return $this->error();
  925. //>>>>>>> 9aa477479386789a8615d89285e74706ec72fbab
  926. }
  927. //修改推荐人(如果该处皇冠团队,下级代理信息变更很严重)代理邀请人员后,或者成为上级后不能变更推荐人
  928. public function updateRecom(Request $request)
  929. {
  930. $input = $request->all();
  931. $rules = [
  932. 'mobile' => [
  933. 'required',
  934. 'regex:/^1[3457689][0-9]{9}$/'
  935. ],
  936. 'remark' => ['required']
  937. ];
  938. $messages = [
  939. 'mobile.required' => '手机号不能为空.',
  940. 'mobile.regex' => '手机号格式有误.',
  941. 'remark.required' => '备注原因不能为空.'
  942. ];
  943. $uuu = new User();
  944. $validator = $uuu->validator($input, $rules, $messages);
  945. if ($validator->fails()) {
  946. return $this->error('400013', $validator->errors()->first());
  947. }
  948. $user = User::find($input['id']);//当前用户
  949. if ($user->recom_id) {
  950. $recom_id = $user->recom_id;
  951. } else {
  952. $recom_id = '暂无';
  953. }
  954. if ($user->agent_id) {
  955. $up_id = $user->agent_id;
  956. } else {
  957. $up_id = '暂无';
  958. }
  959. $agentCount = User::where(function ($query) use ($input) {
  960. $query->where('recom_id', '=', $input['id'])
  961. ->orWhere('agent_id', '=', $input['id']);
  962. })->count();
  963. //代理邀请人员后,或者成为上级后不能变更推荐人
  964. // if($agentCount>0){
  965. // return $this->error('400112','当前用户邀请人信息不能修改');
  966. // }
  967. $recomUser = User::where("mobile", $input['mobile'])->first();//新邀请人信息
  968. if (empty($recomUser)) {
  969. return $this->error('400115', '邀请人信息不存在');
  970. }
  971. if ($user->recom_id == $recomUser->id) {
  972. return $this->error('400111', '要更改的邀请人与当前邀请人相同');
  973. }
  974. if ($user->id == $recomUser->recom_id) {
  975. return $this->error('400116', '要更改的邀请人的邀请人为自己');
  976. }
  977. if ($user->id == $recomUser->id) {
  978. return $this->error('400116', '要更改的邀请人不能为自己');
  979. }
  980. $uuu = new User();
  981. $rechecking = $uuu->changeRecomSystem($input['id'], $input['mobile']);
  982. if ($rechecking == '222') {
  983. return $this->error('400116', '要更改的邀请人为当前代理邀请人系统体系内部成员');
  984. }
  985. DB::beginTransaction();
  986. try {
  987. if ($user->level == '3') {
  988. $user->recom_id = $recomUser->id;
  989. $user->agent_id = '1';
  990. $user->crown_id = '';
  991. if ($user->warea_id != $recomUser->warea_id) {
  992. $user->warea_id = $recomUser->warea_id;
  993. $one_agent = User::where('agent_id', $user->id)->pluck('id');
  994. if (count($one_agent) > 0) {
  995. User::whereIn('id', $one_agent)->update(['warea_id' => $recomUser->warea_id]);
  996. foreach ($one_agent as $key => $val) {
  997. $two_agent = User::where('agent_id', $val)->pluck('id');
  998. if (count($two_agent) > 0) {
  999. User::whereIn('id', $two_agent)->update(['warea_id' => $recomUser->warea_id]);
  1000. }
  1001. }
  1002. }
  1003. }
  1004. } else {
  1005. if ($recomUser->level == '3') {
  1006. $user->recom_id = $recomUser->id;
  1007. $user->agent_id = $recomUser->id;
  1008. $user->crown_id = $recomUser->id;
  1009. $user->warea_id = $recomUser->warea_id;
  1010. if ($user->level == '2') {
  1011. $uuu->changeAgentLevelInfoTwo($user->id, $recomUser->id);
  1012. } elseif ($user->level == '1') {
  1013. $uuu->changeAgentLevelInfoThree($user->id, $recomUser->id, $recomUser->id);
  1014. }
  1015. $uuu->changeAgentRecomCrown($user->id, $recomUser->id, $recomUser->warea_id);
  1016. } elseif ($recomUser->level == '2') {
  1017. if ($user->level == '2') {
  1018. $user->recom_id = $recomUser->id;
  1019. $user->agent_id = $recomUser->agent_id;
  1020. $user->crown_id = $recomUser->crown_id;
  1021. $user->warea_id = $recomUser->warea_id;
  1022. $uuu->changeAgentLevelInfoTwo($user->id, $recomUser->agent_id);
  1023. } elseif ($user->level == '1') {
  1024. $user->recom_id = $recomUser->id;
  1025. $user->agent_id = $recomUser->id;
  1026. $user->crown_id = $recomUser->crown_id;
  1027. $user->warea_id = $recomUser->warea_id;
  1028. $uuu->changeAgentLevelInfoThree($user->id, $recomUser->agent_id, $recomUser->id);
  1029. }
  1030. $uuu->changeAgentRecomCrown($user->id, $recomUser->crown_id, $recomUser->warea_id);
  1031. } elseif ($recomUser->level == '1') {
  1032. $recomAgent = User::find($recomUser->agent_id);
  1033. if ($user->level == '2') {
  1034. if ($recomAgent->level==$user->level){
  1035. $user->recom_id = $recomUser->id;
  1036. $user->agent_id = $recomAgent->agent_id;
  1037. $user->crown_id = $recomUser->crown_id;
  1038. $user->warea_id = $recomUser->warea_id;
  1039. $uuu->changeAgentLevelInfoTwo($user->id, $recomAgent->agent_id);
  1040. }elseif($recomAgent->level==3){
  1041. $user->recom_id = $recomUser->id;
  1042. $user->agent_id = $recomAgent->id;
  1043. $user->crown_id = $recomUser->crown_id;
  1044. $user->warea_id = $recomUser->warea_id;
  1045. $uuu->changeAgentLevelInfoTwo($user->id, $recomAgent->id);
  1046. }
  1047. } elseif ($user->level == '1') {
  1048. $user->recom_id = $recomUser->id;
  1049. $user->agent_id = $recomUser->agent_id;
  1050. $user->crown_id = $recomUser->crown_id;
  1051. $user->warea_id = $recomUser->warea_id;
  1052. $uuu->changeAgentLevelInfoThree($user->id, $recomAgent->agent_id, $recomUser->agent_id);
  1053. }
  1054. $uuu->changeAgentRecomCrown($user->id, $recomUser->crown_id, $recomUser->warea_id);
  1055. }
  1056. }
  1057. $row = $user->save();
  1058. $remark = $input['remark'];
  1059. $before = User::where('id', $recom_id)->select('id', 'nickname', 'mobile')->first();
  1060. $after = ['id' => $recomUser->id, 'nickname' => $recomUser->nickname, 'mobile' => $recomUser->mobile];
  1061. $log = '变更前邀请人:' . json_encode($before, JSON_UNESCAPED_UNICODE) . ',变更后邀请人:' . json_encode($after, JSON_UNESCAPED_UNICODE);
  1062. $img=$request->input('img',[]);
  1063. $this->addAgentOperationLog('3', $user->id, $remark, $log,json_encode($img));
  1064. event(new ChangeRecom($user));
  1065. DB::commit();
  1066. // if($row){
  1067. Log::info('管理员:' . Auth::user()->name . '(id=' . Auth::user()->id . ')修改代理:' . $user->nickname . '(id=' . $user->id . ')邀请人成功,原邀请人id=' . $recom_id . ',原上级id=' . $up_id . ',新邀请人:' . $recomUser->nickname . '(id=' . $recomUser->id . ')');
  1068. return $this->success([]);
  1069. // }
  1070. // return $this->success([],'修改成功');
  1071. } catch (Exception $e) {
  1072. // return $e;
  1073. //=======
  1074. // if($user->level=='3'){
  1075. // $user->recom_id=$recomUser->id;
  1076. // $user->agent_id='1';
  1077. // $user->crown_id='';
  1078. // $user->warea_id='';
  1079. // }else{
  1080. // if($recomUser->level=='3'){
  1081. // $user->recom_id=$recomUser->id;
  1082. // $user->agent_id=$recomUser->id;
  1083. // $user->crown_id=$recomUser->id;
  1084. // $user->warea_id=$recomUser->warea_id;
  1085. // if($user->level=='2'){
  1086. // $uuu->changeAgentLevelInfoTwo($user->id,$recomUser->id);
  1087. // }elseif($user->level=='1'){
  1088. // $uuu->changeAgentLevelInfoThree($user->id,$recomUser->id,$recomUser->id);
  1089. // }
  1090. // $uuu->changeAgentRecomCrown($user->id,$recomUser->id,$recomUser->warea_id);
  1091. // }elseif($recomUser->level=='2'){
  1092. // if($user->level=='2'){
  1093. // $user->recom_id=$recomUser->id;
  1094. // $user->agent_id=$recomUser->agent_id;
  1095. // $user->crown_id=$recomUser->crown_id;
  1096. // $user->warea_id=$recomUser->warea_id;
  1097. // $uuu->changeAgentLevelInfoTwo($user->id,$recomUser->agent_id);
  1098. // }elseif ($user->level=='1'){
  1099. // $user->recom_id=$recomUser->id;
  1100. // $user->agent_id=$recomUser->id;
  1101. // $user->crown_id=$recomUser->crown_id;
  1102. // $user->warea_id=$recomUser->warea_id;
  1103. // $uuu->changeAgentLevelInfoThree($user->id,$recomUser->agent_id,$recomUser->id);
  1104. // }
  1105. // $uuu->changeAgentRecomCrown($user->id,$recomUser->crown_id,$recomUser->warea_id);
  1106. // }elseif($recomUser->level=='1'){
  1107. // $recomAgent=User::find($recomUser->agent_id);
  1108. // if($user->level=='2'){
  1109. // $user->recom_id=$recomUser->id;
  1110. // $user->agent_id=$recomAgent->agent_id;
  1111. // $user->crown_id=$recomUser->crown_id;
  1112. // $user->warea_id=$recomUser->warea_id;
  1113. // $uuu->changeAgentLevelInfoTwo($user->id,$recomAgent->agent_id);
  1114. // }elseif ($user->level=='1'){
  1115. // $user->recom_id=$recomUser->id;
  1116. // $user->agent_id=$recomUser->agent_id;
  1117. // $user->crown_id=$recomUser->crown_id;
  1118. // $user->warea_id=$recomUser->warea_id;
  1119. // $uuu->changeAgentLevelInfoThree($user->id,$recomAgent->agent_id,$recomUser->agent_id);
  1120. // }
  1121. // $uuu->changeAgentRecomCrown($user->id,$recomUser->crown_id,$recomUser->warea_id);
  1122. // }
  1123. // }
  1124. // $row=$user->save();
  1125. // DB::commit();
  1126. // if($row){
  1127. // Log::info('管理员:'.Auth::user()->name.'(id='.Auth::user()->id.')修改代理:'.$user->nickname.'(id='.$user->id.')邀请人成功,原邀请人id='.$recom_id.',原上级id='.$up_id.',新邀请人:'.$recomUser->nickname.'(id='.$recomUser->id.')');
  1128. // return $this->success([]);
  1129. // }
  1130. // return $this->success([],'修改成功');
  1131. // }catch(Exception $e) {
  1132. // return $e;
  1133. //>>>>>>> 9aa477479386789a8615d89285e74706ec72fbab
  1134. DB::rollBack();
  1135. return $this->error(422,$e->getMessage());
  1136. }
  1137. // if($user->level==$recomUser->level){ //特级-》特级 顶级-》顶级 皇冠-》皇冠
  1138. // $user->agent_id=$recomUser->agent_id;
  1139. // }
  1140. // if($user->level<$recomUser->level){ //皇冠-》顶级 皇冠-》特级 顶级-》特级
  1141. // $user->agent_id=$recomUser->id;
  1142. // }
  1143. // if($user->level>$recdestoryuseromUser->level){ // 特级-》顶级 特级-》皇冠 顶级-》皇冠
  1144. // if($user->level=='3'){//如果当前用户为皇冠 特级-》皇冠 顶级-》皇冠
  1145. // $user->agent_id='1';
  1146. // }else{ // 特级-》顶级
  1147. // $topUser=User::find($recomUser->agent_id);//邀请人上级
  1148. // if($topUser->level=='3'){//邀请人上级为皇冠
  1149. // $user->agent_id=$topUser->id;
  1150. // }else{//邀请人上级不为皇冠
  1151. // $user->agent_id=$topUser->agent_id;
  1152. // }
  1153. // }
  1154. // }
  1155. }
  1156. //代理升降级
  1157. public function updateAgentLevel(Request $request)
  1158. {
  1159. $auth_id=Auth::user()->role_id;
  1160. $input = $request->all();
  1161. $remarks=$request->input('remark',null);
  1162. $apply_id=$request->input('apply_id',null);
  1163. $img=$request->input('img',null);
  1164. if ($input['level']==3){
  1165. if ($auth_id!=22 && $auth_id!=32){
  1166. return $this->error('400115', '升级为代理公司只能由超级管理员进行操作');
  1167. }
  1168. }
  1169. $user = User::find($input['id']);
  1170. if ($user->level==3 && $input['level']<$user->level){
  1171. if ($user->money>0){
  1172. return $this->error(400124,'代理公司账户中还存有余额,请将余额归零后降级');
  1173. }
  1174. }
  1175. $before_level=$user->level;
  1176. $user_level=$user->level;
  1177. if ($user->recom_id == '1') {
  1178. return $this->error('400116', '邀请人为公司的代理不能变更等级');
  1179. }
  1180. $recom = User::find($user->recom_id);//邀请人信息
  1181. if (empty($recom)) {
  1182. return $this->error('400115', '代理邀请人信息不存在,升降级失败');
  1183. }
  1184. $uuu = new User();
  1185. DB::beginTransaction();
  1186. try {
  1187. $res = $uuu->changeAgentLevel($user, $input['level']);
  1188. $message['title'] = '代理等级变更推送';
  1189. $message['data'] = '下级代理' . $input['id'] . '已升级';
  1190. $message['type'] = '1';
  1191. $message['status'] = '0';
  1192. $message['user_id'] = $user->agent_id;
  1193. $message['agent_id'] = '1';
  1194. Message::create($message);
  1195. if ($user_level == 1) {
  1196. $before = '销售主管';
  1197. } elseif ($user_level == 2) {
  1198. $before = '销售经理';
  1199. } elseif ($user_level == 3) {
  1200. $before = '代理公司';
  1201. } else {
  1202. $before = '无效等级';
  1203. }
  1204. if ($input['level'] == 1) {
  1205. $after = '销售主管';
  1206. } elseif ($input['level'] == 2) {
  1207. $after = '销售经理';
  1208. } elseif ($input['level'] == 3) {
  1209. $after = '代理公司';
  1210. } else {
  1211. $after = '无效等级';
  1212. }
  1213. if ($input['level'] > $user->level) {
  1214. $remark = '升级';
  1215. $log = '(升级)变更前等级:' . $before . ',变更后等级:' . $after;
  1216. } elseif ($input['level'] < $user->level) {
  1217. $remark = $remarks==null?'降级':$remarks;
  1218. $log = '(降级)变更前等级:' . $before . ',变更后等级:' . $after;
  1219. } else {
  1220. $remark = '等级变更错误';
  1221. $log = '';
  1222. }
  1223. $result=User::find($input['id']);
  1224. $result->before=$before_level;
  1225. try {
  1226. event(new ChangeUserLevel($result));
  1227. }catch (\Exception $exception){
  1228. }
  1229. $this->addAgentOperationLog('2', $user->id, $remark, $log,$img,$apply_id);
  1230. Log::info('代理:' . $user->nickname . '(id=' . $user->id . ')等级变更成功,原推荐人id为:' . $user->recom_id . '原上级id为:' . $user->agent_id);
  1231. Log::info('管理员:' . Auth::user()->name . '(id=' . Auth::user()->id . ')修改代理:' . $user->nickname . '(id=' . $user->id . ')等级成功,原等级:' . $user->level . ',新等级:' . $input['level']);
  1232. DB::commit();
  1233. return $this->success($request->all());
  1234. } catch (Exception $e) {
  1235. DB::rollBack();
  1236. return $e->getMessage();
  1237. Log::info($e->getMessage()) ;
  1238. return $this->error();
  1239. }
  1240. }
  1241. //皇冠战区选择
  1242. public function crownSelectWarea(Request $request)
  1243. {
  1244. $input = $request->all();
  1245. $user_id = $input['id'];
  1246. $warea_id = $input['wid'];
  1247. $user = User::where('id', $user_id)->first();
  1248. $before_war=$user->warea_id;
  1249. if ($warea_id == $user->warea_id) {
  1250. return $this->error('450001', '不能选择当前所在战区');
  1251. }
  1252. $before = Warea::where('id', $user->warea_id)->select('id', 'name', 'admin_name')->first();
  1253. DB::beginTransaction();
  1254. try {
  1255. $user->warea_id = $warea_id;
  1256. $user->save();
  1257. $one_agent = User::where('agent_id', $user_id)->pluck('id');
  1258. if (count($one_agent) > 0) {
  1259. User::whereIn('id', $one_agent)->update(['warea_id' => $warea_id]);
  1260. foreach ($one_agent as $key => $val) {
  1261. $two_agent = User::where('agent_id', $val)->pluck('id');
  1262. if (count($two_agent) > 0) {
  1263. User::whereIn('id', $two_agent)->update(['warea_id' => $warea_id]);
  1264. }
  1265. }
  1266. }
  1267. $after = Warea::where('id', $warea_id)->select('id', 'name', 'admin_name')->first();
  1268. $log = '代理公司战区修改成功,修改前战区信息:' . json_encode($before, JSON_UNESCAPED_UNICODE) . ',修改后战区信息:' . json_encode($after, JSON_UNESCAPED_UNICODE);
  1269. $this->addAgentOperationLog('7', $user_id, '', $log);
  1270. $user->before=$before_war;
  1271. event(new ChangeUserWar($user));
  1272. DB::commit();
  1273. return $this->success([]);
  1274. } catch (Exception $e) {
  1275. DB::rollBack();
  1276. return $this->error($e->getMessage());
  1277. }
  1278. }
  1279. /*后台审核*/
  1280. public function certUserStatus(Request $request)
  1281. {
  1282. $input = $request->all();
  1283. $user = User::find($input['id']);
  1284. $usercert = UserCert::where('user_id', $input['id'])->first();
  1285. if (empty($usercert)) {//判断user_cert表信息是否存在,不存在则创建
  1286. $userC = new UserCert;
  1287. $d['user_id'] = $input['id'];
  1288. $d['recom_id'] = $user->recom_id;
  1289. $userC->create($d);
  1290. }
  1291. $recom = User::find($user->recom_id);//邀请人信息
  1292. $remark = '';
  1293. if ($input['type'] == 1) {
  1294. if ($input['level'] == '3') {//皇冠
  1295. $data['agent_id'] = '1';
  1296. $user->agent_id = '1';
  1297. $user->crown_id = '';
  1298. $user->warea_id = $recom->warea_id;
  1299. //<<<<<<< HEAD
  1300. } else {
  1301. if ($recom->level > $input['level']) {//邀请人等级 > 代理等级
  1302. $data['agent_id'] = $recom->id;
  1303. $user->agent_id = $recom->id;
  1304. if ($recom->level == '3') {
  1305. //=======
  1306. // }else{
  1307. // if($recom->level>$input['level']){//邀请人等级 > 代理等级
  1308. // $data['agent_id']=$recom->id;
  1309. // $user->agent_id=$recom->id;
  1310. // if($recom->level=='3'){
  1311. //>>>>>>> 9aa477479386789a8615d89285e74706ec72fbab
  1312. $user->crown_id = $recom->id;
  1313. } else {
  1314. $user->crown_id = $recom->crown_id;
  1315. }
  1316. $user->warea_id = $recom->warea_id;
  1317. //<<<<<<< HEAD
  1318. }
  1319. if ($recom->level == $input['level']) {//邀请人等级 = 代理等级
  1320. $data['agent_id'] = $recom->agent_id;
  1321. $user->agent_id = $recom->agent_id;
  1322. $user->crown_id = $recom->crown_id;
  1323. $user->warea_id = $recom->warea_id;
  1324. }
  1325. if ($recom->level < $input['level']) {//邀请人等级 < 代理等级
  1326. if ($recom->agent_id == '3') {
  1327. $data['agent_id'] = $recom->agent_id;
  1328. $user->agent_id = $recom->agent_id;
  1329. $user->crown_id = $recom->crown_id;
  1330. $user->warea_id = $recom->warea_id;
  1331. } else {
  1332. $agent = User::find($recom->agent_id);//邀请人上级代理信息
  1333. $data['agent_id'] = $agent->agent_id;
  1334. $user->agent_id = $agent->agent_id;
  1335. $user->crown_id = $recom->crown_id;
  1336. $user->warea_id = $recom->warea_id;
  1337. }
  1338. }
  1339. }
  1340. $data['recom_audit'] = $input['status'];
  1341. $data['recom_audit_desc'] = $input['remark'] ? $input['remark'] : '';
  1342. $data['recom_updated_at'] = date("Y-m-d H:i:s");
  1343. DB::beginTransaction();
  1344. try {
  1345. if ($input['status'] == '1') {//通过
  1346. $user->cert_status = '2'; //邀请人通过
  1347. $user->level = $input['level'];
  1348. $user->save();
  1349. $remark = '邀请人审核通过';
  1350. } elseif ($input['status'] == '2') {//驳回
  1351. $user->cert_status = '4'; //邀请人驳回
  1352. $user->save();
  1353. $remark = '邀请人审核驳回';
  1354. }
  1355. UserCert::where('user_id', $input['id'])->update($data);
  1356. $this->addAgentOperationLog('8', $user->id, $remark);
  1357. DB::commit();
  1358. return $this->success([]);
  1359. } catch (Exception $e) {
  1360. DB::rollBack();
  1361. return $this->error();
  1362. }
  1363. } else {
  1364. DB::beginTransaction();
  1365. try {
  1366. $data['agent_audit'] = $input['status'];
  1367. $data['agent_audit_desc'] = $input['remark'] ? $input['remark'] : '';
  1368. $data['agent_updated_at'] = date("Y-m-d H:i:s");
  1369. $userCert = UserCert::where('user_id', $input['id'])->where('recom_audit', '1')->first();
  1370. if ($userCert && $input['status'] == '1') {
  1371. $user->cert_status = '3';
  1372. $user->auth_code = $this->getAuthCode();
  1373. $user->auth_startime = date("Y-m-01 00:00:00");
  1374. $user->auth_endtime = date("Y-m-01 00:00:00", strtotime("+1 years"));
  1375. $user->save();
  1376. $remark = '上级审核通过';
  1377. } elseif ($userCert && $input['status'] == '2') {
  1378. $user->cert_status = '5';
  1379. $user->save();
  1380. $remark = '上级审核驳回';
  1381. }
  1382. $userCert->update($data);
  1383. $this->addAgentOperationLog('8', $user->id, $remark);
  1384. Log::info('管理员:' . Auth::user()->name . '(id=' . Auth::user()->id . ')审核代理:' . $user->nickname . '(id=' . $user->id . ')成功,审核状态:' . $user->cert_status);
  1385. DB::commit();
  1386. return $this->success([]);
  1387. } catch (Exception $e) {
  1388. DB::rollBack();
  1389. return $this->error();
  1390. }
  1391. }
  1392. //=======
  1393. // }
  1394. // if($recom->level==$input['level']){//邀请人等级 = 代理等级
  1395. // $data['agent_id']=$recom->agent_id;
  1396. // $user->agent_id=$recom->agent_id;
  1397. // $user->crown_id=$recom->crown_id;
  1398. // $user->warea_id=$recom->warea_id;
  1399. // }
  1400. // if($recom->level<$input['level']){//邀请人等级 < 代理等级
  1401. // if($recom->agent_id=='3'){
  1402. // $data['agent_id']=$recom->agent_id;
  1403. // $user->agent_id=$recom->agent_id;
  1404. // $user->crown_id=$recom->crown_id;
  1405. // $user->warea_id=$recom->warea_id;
  1406. // }else{
  1407. // $agent=User::find($recom->agent_id);//邀请人上级代理信息
  1408. // $data['agent_id']=$agent->agent_id;
  1409. // $user->agent_id=$agent->agent_id;
  1410. // $user->crown_id=$recom->crown_id;
  1411. // $user->warea_id=$recom->warea_id;
  1412. // }
  1413. // }
  1414. // }
  1415. // $data['recom_audit']=$input['status'];
  1416. // $data['recom_audit_desc']=$input['remark']?$input['remark']:'';
  1417. // $data['recom_updated_at']=date("Y-m-d H:i:s");
  1418. // DB::beginTransaction();
  1419. // try{
  1420. // if($input['status']=='1'){//通过
  1421. // $user->cert_status='2'; //邀请人通过
  1422. // $user->level=$input['level'];
  1423. // $user->save();
  1424. // }elseif($input['status']=='2'){//驳回
  1425. // $user->cert_status='4'; //邀请人驳回
  1426. // $user->save();
  1427. // }
  1428. // UserCert::where('user_id',$input['id'])->update($data);
  1429. // DB::commit();
  1430. // return $this->success([]);
  1431. // }catch(Exception $e) {
  1432. // DB::rollBack();
  1433. // return $this->error();
  1434. // }
  1435. // }else{
  1436. // DB::beginTransaction();
  1437. // try{
  1438. // $data['agent_audit']=$input['status'];
  1439. // $data['agent_audit_desc']=$input['remark']?$input['remark']:'';
  1440. // $data['agent_updated_at']=date("Y-m-d H:i:s");
  1441. // $userCert=UserCert::where('user_id',$input['id'])->where('recom_audit','1')->first();
  1442. // if($userCert && $input['status']=='1'){
  1443. // $user->cert_status='3';
  1444. // $user->auth_code=$this->getAuthCode();
  1445. // $user->auth_startime=date("Y-m-01 00:00:00");
  1446. // $user->auth_endtime=date("Y-m-01 00:00:00",strtotime("+1 years"));
  1447. // $user->save();
  1448. // }elseif($userCert && $input['status']=='2'){
  1449. // $user->cert_status='5';
  1450. // $user->save();
  1451. // }
  1452. // $userCert->update($data);
  1453. // Log::info('管理员:'.Auth::user()->name.'(id='.Auth::user()->id.')审核代理:'.$user->nickname.'(id='.$user->id.')成功,审核状态:'.$user->cert_status);
  1454. // DB::commit();
  1455. // return $this->success([]);
  1456. // }catch(Exception $e) {
  1457. // DB::rollBack();
  1458. // return $this->error();
  1459. // }
  1460. // }
  1461. //>>>>>>> 9aa477479386789a8615d89285e74706ec72fbab
  1462. }
  1463. /*后台批量审核*/
  1464. public function certUserStatus_all(Request $request)
  1465. {
  1466. $input = $request->all();
  1467. foreach ($input['list'] as $k => $v) {
  1468. $user = User::find($v['id']);
  1469. $usercert = UserCert::where('user_id', $v['id'])->first();
  1470. if (empty($usercert)) {//判断user_cert表信息是否存在,不存在则创建
  1471. $userC = new UserCert;
  1472. $d['user_id'] = $v['id'];
  1473. $d['recom_id'] = $user->recom_id;
  1474. $userC->create($d);
  1475. }
  1476. $recom = User::find($user->recom_id);//邀请人信息
  1477. if ($v['type'] == 1) {
  1478. if ($v['level'] == '3') {//皇冠
  1479. $data['agent_id'] = '1';
  1480. $user->agent_id = '1';
  1481. $user->crown_id = '';
  1482. $user->warea_id = '';
  1483. } else {
  1484. if ($recom->level > $v['level']) {//邀请人等级 > 代理等级
  1485. $data['agent_id'] = $recom->id;
  1486. $user->agent_id = $recom->id;
  1487. if ($recom->level == '3') {
  1488. $user->crown_id = $recom->id;
  1489. } else {
  1490. $user->crown_id = $recom->crown_id;
  1491. }
  1492. $user->warea_id = $recom->warea_id;
  1493. }
  1494. if ($recom->level == $v['level']) {//邀请人等级 = 代理等级
  1495. $data['agent_id'] = $recom->agent_id;
  1496. $user->agent_id = $recom->agent_id;
  1497. $user->crown_id = $recom->crown_id;
  1498. $user->warea_id = $recom->warea_id;
  1499. }
  1500. if ($recom->level < $v['level']) {//邀请人等级 < 代理等级
  1501. if ($recom->agent_id == '3') {
  1502. $data['agent_id'] = $recom->agent_id;
  1503. $user->agent_id = $recom->agent_id;
  1504. $user->crown_id = $recom->crown_id;
  1505. $user->warea_id = $recom->warea_id;
  1506. } else {
  1507. $agent = User::find($recom->agent_id);//邀请人上级代理信息
  1508. $data['agent_id'] = $agent->agent_id;
  1509. $user->agent_id = $agent->agent_id;
  1510. $user->crown_id = $recom->crown_id;
  1511. $user->warea_id = $recom->warea_id;
  1512. }
  1513. }
  1514. }
  1515. $data['recom_audit'] = $v['status'];
  1516. $data['recom_audit_desc'] = $v['remark'] ? $v['remark'] : '';
  1517. $data['recom_updated_at'] = date("Y-m-d H:i:s");
  1518. DB::beginTransaction();
  1519. try {
  1520. if ($v['status'] == '1') {//通过
  1521. $user->cert_status = '2'; //邀请人通过
  1522. $user->level = $v['level'];
  1523. $user->save();
  1524. //<<<<<<< HEAD
  1525. $remark = '邀请人批量审核通过';
  1526. } elseif ($v['status'] == '2') {//驳回
  1527. $user->cert_status = '4'; //邀请人驳回
  1528. $user->save();
  1529. $remark = '邀请人批量审核驳回';
  1530. }
  1531. UserCert::where('user_id', $v['id'])->update($data);
  1532. $this->addAgentOperationLog('8', $user->id, $remark);
  1533. //=======
  1534. // }elseif($v['status']=='2'){//驳回
  1535. // $user->cert_status='4'; //邀请人驳回
  1536. // $user->save();
  1537. // }
  1538. // UserCert::where('user_id',$v['id'])->update($data);
  1539. //>>>>>>> 9aa477479386789a8615d89285e74706ec72fbab
  1540. DB::commit();
  1541. // return $this->success([]);
  1542. } catch (Exception $e) {
  1543. DB::rollBack();
  1544. // return $this->error();
  1545. }
  1546. } else {
  1547. DB::beginTransaction();
  1548. try {
  1549. $data['agent_audit'] = $v['status'];
  1550. $data['agent_audit_desc'] = $v['remark'] ? $v['remark'] : '';
  1551. $data['agent_updated_at'] = date("Y-m-d H:i:s");
  1552. $userCert = UserCert::where('user_id', $v['id'])->where('recom_audit', '1')->first();
  1553. if ($userCert && $v['status'] == '1') {
  1554. $user->cert_status = '3';
  1555. $user->auth_code = $this->getAuthCode();
  1556. $user->auth_startime = date("Y-m-01 00:00:00");
  1557. $user->auth_endtime = date("Y-m-01 00:00:00", strtotime("+1 years"));
  1558. $user->save();
  1559. $remark = '上级批量审核通过';
  1560. } elseif ($userCert && $v['status'] == '2') {
  1561. $user->cert_status = '5';
  1562. $user->save();
  1563. $remark = '上级批量审核驳回';
  1564. }
  1565. $this->addAgentOperationLog('8', $user->id, $remark);
  1566. $userCert->update($data);
  1567. Log::info('管理员:' . Auth::user()->name . '(id=' . Auth::user()->id . ')审核代理:' . $user->nickname . '(id=' . $user->id . ')成功,审核状态:' . $user->cert_status);
  1568. DB::commit();
  1569. // return $this->success([]);
  1570. } catch (Exception $e) {
  1571. DB::rollBack();
  1572. // return $this->error();
  1573. }
  1574. }
  1575. }
  1576. return $this->success([]);
  1577. }
  1578. //邀请人重新审核
  1579. public function againCertRecomStatus(Request $request)
  1580. {
  1581. $input = $request->all();
  1582. $user = User::find($input['id']);
  1583. $userCert = UserCert::where('user_id', $input['id'])->first();
  1584. if ($input['type'] == '1') {//通过
  1585. $user->level = $input['level'];
  1586. $recom = User::find($user->recom_id);
  1587. if ($input['level'] == '3') {//皇冠
  1588. $user->agent_id = '1';
  1589. $user->crown_id = '';
  1590. $user->warea_id = '';
  1591. $userCert->agent_id = '1';
  1592. } else {
  1593. if ($recom->level > $input['level']) {//邀请人等级 > 代理等级
  1594. $user->agent_id = $recom->id;
  1595. if ($recom->level == '3') {
  1596. $user->crown_id = $recom->id;
  1597. } else {
  1598. $user->crown_id = $recom->crown_id;
  1599. }
  1600. $user->warea_id = $recom->warea_id;
  1601. $userCert->agent_id = $recom->id;
  1602. }
  1603. if ($recom->level == $input['level']) {//邀请人等级 = 代理等级
  1604. $user->agent_id = $recom->agent_id;
  1605. $user->crown_id = $recom->crown_id;
  1606. $user->warea_id = $recom->warea_id;
  1607. $userCert->agent_id = $recom->agent_id;
  1608. }
  1609. if ($recom->level < $input['level']) {//邀请人等级 < 代理等级
  1610. if ($recom->agent_id == '3') {
  1611. $user->agent_id = $recom->agent_id;
  1612. $user->crown_id = $recom->crown_id;
  1613. $user->warea_id = $recom->warea_id;
  1614. $userCert->agent_id = $recom->agent_id;
  1615. } else {
  1616. $agent = User::find($recom->agent_id);//邀请人上级代理信息
  1617. $user->agent_id = $agent->agent_id;
  1618. $user->crown_id = $recom->crown_id;
  1619. $user->warea_id = $recom->warea_id;
  1620. $userCert->agent_id = $agent->agent_id;
  1621. }
  1622. }
  1623. }
  1624. $userCert->recom_id = $user->recom_id;
  1625. $userCert->recom_audit = '1';
  1626. $userCert->recom_audit_desc = '';
  1627. $userCert->agent_audit = '0';
  1628. $userCert->agent_audit_desc = '';
  1629. $userCert->recom_updated_at = date("Y-m-d H:i:s");
  1630. $user->cert_status = '2';
  1631. $remark = '邀请人重新审核通过';
  1632. } elseif ($input['type'] == '2') {//驳回
  1633. $userCert->recom_id = $user->recom_id;
  1634. $userCert->agent_id = $user->agent_id;
  1635. $userCert->recom_audit = '2';
  1636. $userCert->recom_audit_desc = $input['desc'];
  1637. $userCert->agent_audit = '0';
  1638. $userCert->agent_audit_desc = '';
  1639. $userCert->recom_updated_at = date("Y-m-d H:i:s");
  1640. $user->cert_status = '4';
  1641. $remark = '邀请人重新审核驳回';
  1642. }
  1643. DB::beginTransaction();
  1644. try {
  1645. $this->addAgentOperationLog('8', $user->id, $remark);
  1646. $userCert->save();
  1647. $user->save();
  1648. Log::info('管理员:' . Auth::user()->name . '(id=' . Auth::user()->id . ')重新审核代理:' . $user->nickname . '(id=' . $user->id . ')成功,审核状态:' . $user->cert_status);
  1649. DB::commit();
  1650. return $this->success([]);
  1651. } catch (Exception $e) {
  1652. DB::rollBack();
  1653. return $this->error();
  1654. }
  1655. }
  1656. //上级重新审核
  1657. //=======
  1658. // }
  1659. // $row=$userCert->save();
  1660. // $rows=$user->save();
  1661. // if($row && $rows){
  1662. // Log::info('管理员:'.Auth::user()->name.'(id='.Auth::user()->id.')重新审核代理:'.$user->nickname.'(id='.$user->id.')成功,审核状态:'.$user->cert_status);
  1663. // DB::commit();
  1664. // return $this->success([]);
  1665. // }else{
  1666. // DB::rollBack();
  1667. // return $this->error();
  1668. // }
  1669. // }
  1670. // //上级重新审核
  1671. //>>>>>>> 9aa477479386789a8615d89285e74706ec72fbab
  1672. public function againCertAgentStatus(Request $request)
  1673. {
  1674. $input = $request->all();
  1675. $user = User::find($input['id']);
  1676. $userCert = UserCert::where('user_id', $input['id'])->first();
  1677. if ($input['type'] == '1') {//通过
  1678. $userCert->agent_audit = '1';
  1679. $userCert->agent_audit_desc = '';
  1680. $userCert->agent_updated_at = date("Y-m-d H:i:s");
  1681. $user->cert_status = '3';
  1682. $user->auth_code = $this->getAuthCode();
  1683. $user->auth_startime = date("Y-m-01 00:00:00");
  1684. $user->auth_endtime = date("Y-m-01 00:00:00", strtotime("+1 years"));
  1685. //<<<<<<< HEAD
  1686. $remark = '上级重新审核通过';
  1687. //=======
  1688. //>>>>>>> 9aa477479386789a8615d89285e74706ec72fbab
  1689. } elseif ($input['type'] == '2') {//驳回
  1690. $userCert->agent_audit = '2';
  1691. $userCert->agent_audit_desc = $input['desc'];
  1692. $userCert->agent_updated_at = date("Y-m-d H:i:s");
  1693. $user->cert_status = '5';
  1694. //<<<<<<< HEAD
  1695. $remark = '上级重新审核驳回';
  1696. }
  1697. DB::beginTransaction();
  1698. try {
  1699. $this->addAgentOperationLog('8', $user->id, $remark);
  1700. $userCert->save();
  1701. $user->save();
  1702. Log::info('管理员:' . Auth::user()->name . '(id=' . Auth::user()->id . ')重新审核代理:' . $user->nickname . '(id=' . $user->id . ')成功,审核状态:' . $user->cert_status);
  1703. DB::commit();
  1704. return $this->success([]);
  1705. } catch (Exception $e) {
  1706. //=======
  1707. // }
  1708. // $row=$userCert->save();
  1709. // $rows=$user->save();
  1710. // if($row && $rows){
  1711. // Log::info('管理员:'.Auth::user()->name.'(id='.Auth::user()->id.')重新审核代理:'.$user->nickname.'(id='.$user->id.')成功,审核状态:'.$user->cert_status);
  1712. // DB::commit();
  1713. // return $this->success([]);
  1714. // }else{
  1715. //>>>>>>> 9aa477479386789a8615d89285e74706ec72fbab
  1716. DB::rollBack();
  1717. return $this->error();
  1718. }
  1719. }
  1720. /*代理库存*/
  1721. public function getAgentGoodsNum(Request $request)
  1722. {
  1723. $input = $request->all();
  1724. $goodstotal = DB::table('goods_sku_agent_total as goodsNum')->where('goodsNum.user_id', $input['id'])
  1725. ->select('goods.name', 'goods.img_url', 'goods.tjprice', 'goods.djprice', 'goods.hgprice', DB::raw('SUM(goodsNum.total) as account'))
  1726. ->leftJoin('users', 'users.id', '=', 'goodsNum.user_id')
  1727. ->leftJoin('goods', 'goods.id', '=', 'goodsNum.goods_id')
  1728. ->groupBy('goodsNum.goods_id')
  1729. ->get();
  1730. if ($goodstotal) {
  1731. return $this->success($goodstotal);
  1732. }
  1733. return $this->error();
  1734. }
  1735. /* 用户禁用/启用 */
  1736. public function shelvedUser(Request $request)
  1737. {
  1738. $user = User::find($request->post('id'));
  1739. $status = ($user->status == 0) ? '启用' : '禁用';
  1740. $user->status = ($user->status == 0) ? '1' : '0';
  1741. //<<<<<<< HEAD
  1742. DB::beginTransaction();
  1743. $row = $user->save();
  1744. if ($user->status == 0) {
  1745. $remark = '启用';
  1746. } else {
  1747. $remark = '禁用';
  1748. }
  1749. $res = $this->addAgentOperationLog('10', $user->id, $remark);
  1750. event(new ShelvedAgent($user));
  1751. if ($row && $res) {
  1752. DB::commit();
  1753. Log::info('管理员:' . Auth::user()->name . '(id=' . Auth::user()->id . ')' . $status . '代理:' . $user->nickname . '(id=' . $user->id . ')成功');
  1754. return $this->success([]);
  1755. }
  1756. DB::rollBack();
  1757. //=======
  1758. // $row=$user->save();
  1759. // if($row){
  1760. // Log::info('管理员:'.Auth::user()->name.'(id='.Auth::user()->id.')'.$status.'代理:'.$user->nickname.'(id='.$user->id.')成功');
  1761. // return $this->success([]);
  1762. // }
  1763. //>>>>>>> 9aa477479386789a8615d89285e74706ec72fbab
  1764. return $this->error();
  1765. }
  1766. //删除用户
  1767. public function destoryUser(Request $request)
  1768. {
  1769. $input = $request->all();
  1770. $img=$request->input('img',null);
  1771. $user = User::withTrashed()->where('id',$input['id'])->first();
  1772. if ($user->deleted_at){
  1773. return $this->success([],'已被删除');
  1774. }
  1775. if ($user->level==3){
  1776. return $this->error('400111', '不能直接删除代理公司!');
  1777. }
  1778. $recom = User::find($user->recom_id);//代理邀请人信息
  1779. if (!$recom) {
  1780. return $this->error('400111', '该代理邀请人信息有误,不能删除');
  1781. }
  1782. //获取代理邀请的人
  1783. $recomed=User::where('recom_id',$input['id'])->pluck('id');
  1784. $agented=User::where('agent_id',$input['id'])->pluck('id');
  1785. //获取代理下级信息
  1786. DB::beginTransaction();
  1787. $userInfo=User::where('id',$input['id'])->first();
  1788. // event(new DeleteAgent($userInfo));
  1789. try {
  1790. if ($user->level == '3') {
  1791. if ($recom->level == '3') {//邀请人等级信息
  1792. User::where('agent_id', $input['id'])->update(['agent_id' => $recom->id]);
  1793. User::where('recom_id', $input['id'])->update(['recom_id' => $recom->id]);
  1794. User::where('crown_id', $input['id'])->update(['crown_id' => $recom->id, 'warea_id' => $recom->warea_id]);
  1795. } elseif ($recom->level == '2') {
  1796. User::where('agent_id', $input['id'])->where('level', 2)->update(['agent_id' => $recom->agent_id]);
  1797. User::where('agent_id', $input['id'])->where('level', 1)->update(['agent_id' => $recom->id]);
  1798. User::where('recom_id', $input['id'])->update(['recom_id' => $recom->id]);
  1799. $recom_agent = User::where('id', $recom->agent_id)->first();
  1800. User::where('crown_id', $input['id'])->update(['crown_id' => $recom_agent->id, 'warea_id' => $recom_agent->warea_id]);
  1801. } elseif ($recom->level == '1') {
  1802. $upRecom = User::find($recom->agent_id);//代理邀请人上级信息
  1803. if (!$upRecom) {
  1804. return $this->error('400112', '该代理邀请人上级信息有误,不能删除');
  1805. }
  1806. User::where('agent_id', $input['id'])->where('level', 1)->update(['agent_id' => $upRecom->id]);
  1807. User::where('agent_id', $input['id'])->where('level', 2)->update(['agent_id' => $upRecom->agent_id]);
  1808. User::where('recom_id', $input['id'])->update(['recom_id' => $recom->id]);
  1809. $recom_agent = User::where('id', $upRecom->agent_id)->first();
  1810. User::where('crown_id', $input['id'])->update(['crown_id' => $upRecom->agent_id, 'warea_id' => $recom_agent->warea_id]);
  1811. }
  1812. } elseif ($user->level == '2') {
  1813. if ($recom->level == '3' || $recom->level == '2') {
  1814. User::where('agent_id', $input['id'])->update(['agent_id' => $recom->id]);
  1815. } elseif ($recom->level == '1') {
  1816. User::where('agent_id', $input['id'])->update(['agent_id' => $recom->agent_id]);
  1817. }
  1818. User::where('recom_id', $input['id'])->update(['recom_id' => $user->recom_id]);
  1819. } elseif ($user->level == '1') {
  1820. User::where('recom_id', $input['id'])->update(['recom_id' => $user->recom_id]);
  1821. }
  1822. $user->delete();
  1823. $remark = $input['remark'];
  1824. $after = ['id' => $user->id, 'nickname' => $user->nickname, 'mobile' => $user->mobile, 'level' => $user->level, 'recom_id' => $user->recom_id, 'agent_id' => $user->agent_id];
  1825. $log = '删除用户成功,用户信息:' . json_encode($after, JSON_UNESCAPED_UNICODE).',用户邀请的人ID:'.json_encode($recomed).',用户下级ID:'.json_encode($agented);
  1826. $this->addAgentOperationLog('4', $user->id, $remark, $log,$img);
  1827. Log::info('管理员:' . Auth::user()->name . '(id=' . Auth::user()->id . ')删除代理:' . $user->nickname . '(id=' . $user->id . ')成功');
  1828. DB::commit();
  1829. return $this->success([]);
  1830. } catch (Exception $e) {
  1831. DB::rollBack();
  1832. return $this->error();
  1833. }
  1834. }
  1835. public function wdstore(){
  1836. $user_ids=WdStore::pluck('user_id');
  1837. return User::whereNotIn('id',$user_ids)->pluck('id')->toArray();
  1838. $WDUserIds=User::pluck('id')->toArray();//获取所有正常代理id
  1839. $user_ids = WdStore::whereNotIn('user_id',$WDUserIds)->pluck('user_id');//获取所有店铺代理id
  1840. return User::onlyTrashed()->whereIn('id',$user_ids)->orderByDesc('deleted_at')->pluck('deleted_at');//
  1841. $no_delete=[15965837535,18095856054,15122171335,15003036225,15039343930,13932338754,
  1842. 15845445174,
  1843. 15522559604,
  1844. 15039343930,
  1845. 13104252035,
  1846. 15122171335,
  1847. 15176105221,
  1848. 15003036225,
  1849. 15965837535,
  1850. 18095856054,
  1851. 13932337622];
  1852. //获取所有要删除代理
  1853. User::whereNotIn('id',$WDUserIds)->whereNotIn('mobile',$no_delete)->where('created_at','<','2021-06-01')->whereIn('level',[1,2])->orderByDesc('created_at')->delete();
  1854. return 1;
  1855. $noStoreAgents=User::whereNotIn('id',$WDUserIds)->whereNotIn('mobile',$no_delete)->where('created_at','<','2021-06-01')->whereIn('cert_status',[3,6])->where('service_status',0)->orderByDesc('created_at')->get();//->limit(1000)
  1856. return count($noStoreAgents);
  1857. return '111';
  1858. }
  1859. public function uploadImg(Request $request){
  1860. if(empty($request->has('file'))){
  1861. return $this->error('450001','请选择图片!');
  1862. }
  1863. $file= $request->file('file');
  1864. //变更分享人share_img 删除客户delete_img
  1865. $path_url='user/'.$request->input('type','delete_img');
  1866. $upload= new UploadFilesHandler();
  1867. $result= $upload->save($file, $path_url, null, 'image');
  1868. if($result){
  1869. return $this->success($result['path']);
  1870. }
  1871. return $this->error();
  1872. }
  1873. public function destroyUploadAudio(Request $request){
  1874. if(empty($request->has('audio'))){
  1875. return $this->error('450001','请上传音频文件!');
  1876. }
  1877. $file= $request->file('audio');
  1878. $path_url='user/delete_audio';
  1879. $upload= new UploadFilesHandler();
  1880. $result= $upload->save($file, $path_url, null, 'audio');
  1881. if($result){
  1882. return $this->success($result['path']);
  1883. }
  1884. return $this->error();
  1885. }
  1886. // 重置/修改密码
  1887. public function editAgentPassword(Request $request)
  1888. {
  1889. $input = $request->all();
  1890. $user = User::find($input['id']);
  1891. //<<<<<<< HEAD
  1892. $remark = '';
  1893. if ($input['type'] == '1') {//重置密码
  1894. $remark = '重置密码';
  1895. $user->password = MD5($user->mobile);
  1896. } elseif ($input['type'] == '2') {//修改密码
  1897. $remark = '修改密码';
  1898. $user->password = MD5($input['password']);
  1899. }
  1900. $this->addAgentOperationLog('9', $user->id, $remark);
  1901. $row = $user->save();
  1902. if ($row) {
  1903. //=======
  1904. // if($input['type']=='1'){//重置密码
  1905. // $user->password=MD5($user->mobile);
  1906. // }elseif($input['type']=='2'){//修改密码
  1907. // $user->password=MD5($input['password']);
  1908. // }
  1909. // $row=$user->save();
  1910. // if($row){
  1911. //>>>>>>> 9aa477479386789a8615d89285e74706ec72fbab
  1912. Log::info('管理员:' . Auth::user()->name . '(id=' . Auth::user()->id . ')充值代理:' . $user->nickname . '(id=' . $user->id . ')密码成功');
  1913. return $this->success([]);
  1914. }
  1915. return $this->error();
  1916. }
  1917. //导出代理信息
  1918. public function exportUserLists(Request $request)
  1919. {
  1920. ini_set('memory_limit', '512M');
  1921. $input = $request->all();
  1922. $search_name = $input['search_name'];
  1923. $recom_name = $input['recom_name'];
  1924. $agent_name = $input['agent_name'];
  1925. if ($input['level'] == '4') {
  1926. $user = UserCopy::onlyTrashed();
  1927. $where = [];
  1928. } elseif ($input['level'] == 'all') {
  1929. $user = UserCopy::withTrashed();
  1930. $where = [];
  1931. } else {
  1932. $user = new UserCopy();
  1933. $where = [];
  1934. $where['level'] = $input['level'];
  1935. }
  1936. $list = $user
  1937. ->where(function ($query) use ($search_name) {
  1938. $query->where('nickname', 'like', '%' . $search_name . '%')
  1939. ->orWhere('mobile', 'like', '%' . $search_name . '%')
  1940. ->orWhere('cre_num', 'like', '%' . $search_name . '%')
  1941. ->orWhere('realname', 'like', '%' . $search_name . '%');
  1942. })
  1943. ->whereIn('cert_status', [3, 6])
  1944. ->where($where)
  1945. ->with(['recom:id,nickname,mobile', 'agent:id,nickname,mobile,level'])
  1946. ->whereHas('recom', function ($query1) use ($recom_name) {
  1947. $query1->select('id', 'nickname', 'mobile')
  1948. ->where(function ($recom) use ($recom_name) {
  1949. $recom->where('nickname', 'like', '%' . $recom_name . '%')
  1950. ->orWhere('mobile', 'like', '%' . $recom_name . '%')
  1951. ->orWhere('cre_num', 'like', '%' . $recom_name . '%')
  1952. ->orWhere('realname', 'like', '%' . $recom_name . '%');
  1953. });
  1954. })
  1955. ->whereHas('agent', function ($query2) use ($agent_name) {
  1956. $query2->select('id', 'nickname', 'mobile')
  1957. ->where(function ($agent) use ($agent_name) {
  1958. $agent->where('nickname', 'like', '%' . $agent_name . '%')
  1959. ->orWhere('mobile', 'like', '%' . $agent_name . '%')
  1960. ->orWhere('cre_num', 'like', '%' . $agent_name . '%')
  1961. ->orWhere('realname', 'like', '%' . $agent_name . '%');
  1962. });
  1963. })
  1964. ->orderBy('id', 'desc')
  1965. ->get();
  1966. if (empty($list)) {
  1967. return $this->error('400002', '没有获取到数据');
  1968. }
  1969. foreach ($list as $key => $val) {
  1970. if (!empty($val->deleted_at)) {
  1971. $list[$key]['delete'] = 1;//已删除
  1972. } else {
  1973. $list[$key]['delete'] = 0;//未删除
  1974. }
  1975. $list[$key]['cert_status'] = 6;
  1976. if ($val->deleted_at){
  1977. $list[$key]->crown='';
  1978. }else{
  1979. if ($val->level!=3 && $val->level!=0){
  1980. if ($val->agent->level==3 || $val->agent->level==0){
  1981. $list[$key]->crown=$val->agent;
  1982. }else{
  1983. $res=$this->get_crown($val->agent->id);
  1984. $list[$key]->crown=$res;
  1985. }
  1986. }else{
  1987. $list[$key]->crown='';
  1988. }
  1989. }
  1990. // $list[$key]['account']=$user->getAgentSalesResult($val->id);
  1991. }
  1992. // $search_name=$search_name?$search_name:
  1993. // Redis::setex('User_'.$search_name.$recom_name.$agent_name.$level);
  1994. return $this->success($list);
  1995. }
  1996. //获取代理列表信息
  1997. public function getUserListass(Request $request)
  1998. {
  1999. $input = $request->all();
  2000. $page_size = $input['page_size'];
  2001. $page_index = $input['page_index'];
  2002. $num = ($page_index - 1) * $page_size;
  2003. $search_name = $input['search_name'];
  2004. $recom_name = $request->has('recom_name') ? $input['recom_name'] : '';
  2005. $agent_name = $request->has('agent_name') ? $input['agent_name'] : '';
  2006. $where = [];
  2007. if ($input['level'] == '4') {
  2008. $user = User::onlyTrashed()->where($where);
  2009. } elseif ($input['level'] == 'all') {
  2010. $user = User::withTrashed()->where($where);
  2011. } else {
  2012. $user = User::where($where);
  2013. $where['level'] = $input['level'];
  2014. }
  2015. if ($search_name) {
  2016. $user->where(function ($query) use ($search_name) {
  2017. $query->where('nickname', 'like', '%' . $search_name . '%')
  2018. ->orWhere('mobile', 'like', '%' . $search_name . '%')
  2019. ->orWhere('cre_num', 'like', '%' . $search_name . '%')
  2020. ->orWhere('realname', 'like', '%' . $search_name . '%');
  2021. });
  2022. }
  2023. if ($agent_name) {
  2024. $agent_id = User::where(function ($agent) use ($agent_name) {
  2025. $agent->where('nickname', 'like', '%' . $agent_name . '%')
  2026. ->orWhere('mobile', 'like', '%' . $agent_name . '%')
  2027. ->orWhere('cre_num', 'like', '%' . $agent_name . '%')
  2028. ->orWhere('realname', 'like', '%' . $agent_name . '%');
  2029. })->pluck('id');
  2030. $user->whereIn('agent_id', $agent_id);
  2031. }
  2032. if ($recom_name) {
  2033. $recom_id = User::where(function ($recom) use ($recom_name) {
  2034. $recom->where('nickname', 'like', '%' . $recom_name . '%')
  2035. ->orWhere('mobile', 'like', '%' . $recom_name . '%')
  2036. ->orWhere('cre_num', 'like', '%' . $recom_name . '%')
  2037. ->orWhere('realname', 'like', '%' . $recom_name . '%');
  2038. })->pluck('id');
  2039. $user->whereIn('recom_id', $recom_id);
  2040. }
  2041. $count = $user->whereIn('cert_status', [3, 6])->where($where)->count();
  2042. if ($count == 0) {
  2043. $this->error('400001', '没有数据');
  2044. }
  2045. $list = $user->with(['recom', 'agent'])->whereIn('cert_status', [3, 6])->orderBy('id', 'desc')->skip($num)->take($page_size)->get();
  2046. foreach ($list as $key => $val) {
  2047. if (!empty($val->deleted_at)) {
  2048. $list[$key]['delete'] = 1;//已删除
  2049. } else {
  2050. $list[$key]['delete'] = 0;//未删除
  2051. }
  2052. $list[$key]['cert_status'] = 6;
  2053. // $list[$key]['account']=$user->getAgentSalesResult($val->id);
  2054. }
  2055. return $this->success_list($list, 'success', $count);
  2056. }
  2057. //<<<<<<< HEAD
  2058. //=======
  2059. // public function restoreAgent(Request $request){
  2060. // $input=$request->all();
  2061. // $student = Student::find($input['id']);
  2062. // $row=$student->restore();
  2063. // if($row){
  2064. // return $this->success($list,'删除恢复成功');
  2065. // }
  2066. // $this->error();
  2067. // }
  2068. //
  2069. //>>>>>>> 9aa477479386789a8615d89285e74706ec72fbab
  2070. /**修改代理信息**/
  2071. public function update_user(Request $request)
  2072. {
  2073. $rule = [
  2074. 'id' => 'required',
  2075. 'nickname' => 'required',
  2076. 'realname' => 'required',
  2077. 'mobile' => 'required',
  2078. ];
  2079. $message = [
  2080. 'id.required' => '必填项',
  2081. 'nickname.required' => '必填项',
  2082. 'realname.required' => '必填项',
  2083. 'mobile.required' => '必填项',
  2084. ];
  2085. $vali = Validator::make($request->all(), $rule, $message);
  2086. if ($vali->fails()) {
  2087. return $this->error('400013', $vali->errors()->first());
  2088. }
  2089. if(strlen($request->cre_num) != 18){
  2090. return $this->error(40013,'身份证号码有误');
  2091. };
  2092. // $year = substr($request->cre_num, 6, 4);
  2093. // $age = date('Y') - $year;
  2094. // if($age > 65){
  2095. // return $this->error(40013,'很抱歉,您的年龄已超过65岁,无法注册。');
  2096. // }
  2097. if (User::where('cre_num',$request->input('cre_num'))->where('id','<>',$request->input('id'))->count()){
  2098. return $this->error(40013, '身份证号已存在');
  2099. }
  2100. DB::beginTransaction();
  2101. try {
  2102. $user = User::find($request->id);
  2103. $before_mobile=$user->mobile;
  2104. if (!$user) {
  2105. return $this->error(40013, '该用户不存在,请重新查询');
  2106. }
  2107. $before = ['id' => $user->id, 'nickname' => $user->nickname, 'realname' => $user->realname, 'mobile' => $user->mobile, 'cre_num' => $user->cre_num];
  2108. if ($request->mobile != $user->mobile) {
  2109. $users = User::where('mobile', $request->mobile)->count();
  2110. if ($users) {
  2111. return $this->error(40013, '该手机号已被使用');
  2112. }
  2113. $user->mobile = $request->mobile;
  2114. $user->auth_img = null;
  2115. }
  2116. if ($user->nickname != $request->nickname) {
  2117. $user->auth_img = null;
  2118. }
  2119. $user->nickname = $request->nickname;
  2120. $user->realname = $request->realname;
  2121. $user->cre_num = $request->cre_num;
  2122. $user->remark = $request->remark;
  2123. if ($request->has('wechat_name')){
  2124. $user->remark_name = $request->wechat_name;
  2125. $user->name = $request->wechat_name;
  2126. }
  2127. if (!$user->save()) {
  2128. throw new \Exception('1');
  2129. }
  2130. $after = ['id' => $user->id, 'nickname' => $user->nickname, 'realname' => $user->realname, 'mobile' => $user->mobile, 'cre_num' => $user->cre_num, 'remark'=> $user->remark];
  2131. $log = '修改代理信息成功,修改前代理信息:' . json_encode($before, JSON_UNESCAPED_UNICODE) . ',修改后代理信息:' . json_encode($after, JSON_UNESCAPED_UNICODE);
  2132. $this->addAgentOperationLog('6', $user->id, '', $log);
  2133. $user->before=$before_mobile;
  2134. // event(new ChangeUserInfo($user));
  2135. DB::commit();
  2136. return $this->success([], '更新成功');
  2137. } catch (\Exception $exception) {
  2138. Log::error('{-----修改用户信息出错-----错误信息为--}' . $exception);
  2139. DB::rollback();
  2140. return $this->error(40013, '修改用户信息出错');
  2141. }
  2142. }
  2143. //<<<<<<< HEAD
  2144. public function restoreAgent(Request $request)
  2145. {
  2146. $input = $request->all();
  2147. $student = Student::find($input['id']);
  2148. $row = $student->restore();
  2149. if ($row) {
  2150. // return $this->success($list, '删除恢复成功');
  2151. }
  2152. $this->error();
  2153. }
  2154. //添加代理操作日志
  2155. public function addAgentOperationLog($type, $user_id, $remark = null, $log = null,$img=null,$apply_id=null)
  2156. {
  2157. return AgentOperationLog::create([
  2158. 'type' => $type,
  2159. 'admin_name' => Auth::user()->name,
  2160. 'admin_id' => Auth::user()->id,
  2161. 'user_id' => $user_id,
  2162. 'remark' => $remark,
  2163. 'img'=>$img,
  2164. 'log' => $log,
  2165. 'apply_id' => $apply_id,
  2166. ]);
  2167. }
  2168. //=======
  2169. public function repair_auth(Request $request)
  2170. {
  2171. $rule = [
  2172. 'id' => 'required',
  2173. ];
  2174. $message = [
  2175. 'id.required' => '必填项',
  2176. ];
  2177. $vali = Validator::make($request->all(), $rule, $message);
  2178. if ($vali->fails()) {
  2179. return $this->error('400013', $vali->errors()->first());
  2180. }
  2181. DB::beginTransaction();
  2182. try {
  2183. $user = User::find($request->id);
  2184. if (!$user) {
  2185. return $this->error(40013, '该用户不存在,请重新查询');
  2186. }
  2187. $user->auth_img = null;
  2188. if (!$user->save()) {
  2189. throw new \Exception('1');
  2190. }
  2191. DB::commit();
  2192. return $this->success([], '修复成功');
  2193. } catch (\Exception $exception) {
  2194. Log::error('{-----修改授权证书出错-----错误信息为--}' . $exception);
  2195. DB::rollback();
  2196. return $this->error(40013, '修改授权证书出错');
  2197. }
  2198. //>>>>>>> 9aa477479386789a8615d89285e74706ec72fbab
  2199. }
  2200. //恢复误删除人员信息
  2201. public function restoreUserInfo(Request $request){
  2202. $input=$request->all();
  2203. $mobile=$input['mobile'];
  2204. $ids=$input['ids'];
  2205. $rules = [
  2206. 'mobile' => [
  2207. 'required',
  2208. 'regex:/^1[3456789][0-9]{9}$/'
  2209. ],
  2210. ];
  2211. $messages = [
  2212. 'mobile.required' => '手机号不能为空.',
  2213. 'mobile.regex' => '手机号格式有误.',
  2214. ];
  2215. $uuu = new User();
  2216. $validator = $uuu->validator($input, $rules, $messages);
  2217. if ($validator->fails()) {
  2218. return $this->error('400013', $validator->errors()->first());
  2219. }
  2220. DB::beginTransaction();
  2221. try {
  2222. $result1=User::where('mobile',$input['mobile'])->first();
  2223. if($result1){
  2224. return $this->error('450001','该手机号用户未被删除,核对后再操作');
  2225. }
  2226. $result=User::onlyTrashed()->where('mobile',$input['mobile'])->first();
  2227. if(!$result){
  2228. return $this->error('450001','手机号信息有误,核对后再操作');
  2229. }
  2230. User::withTrashed()->where('mobile',$input['mobile'])->restore();
  2231. $re_id=$result->recom_id;
  2232. $ag_id=$result->agent_id;
  2233. $recom_ids=$this->RecomInfo($result->recom_id);
  2234. $result->recom_id=$recom_ids;
  2235. if ($result->level==3){
  2236. $result->agent_id=1;
  2237. }else{
  2238. $result->agent_id=$this->AgentInfo($recom_ids,$result->level);
  2239. }
  2240. $result->save();
  2241. $this->addAgentOperationLog('41', $result->id, '撤销删除状态', '撤销删除状态');
  2242. $this->addAgentOperationLog('6', $result->id, '代理恢复后,更新了邀请人和上级的信息',
  2243. '原邀请人id为:'.$re_id.'、上级id为:'.$ag_id.'修改后的邀请人ID为:'.$recom_ids.'、上级ID为:'.$result->agent_id);
  2244. Log::info('用户'.$input['mobile'].'被恢复');
  2245. foreach(json_decode($ids,true) as $valvv){
  2246. Log::error($valvv);
  2247. $user = User::find($valvv);//当前用户
  2248. if (empty($user)){
  2249. continue;
  2250. }
  2251. if($user->cert_status!=3&&$user->cert_status!=6){
  2252. continue;
  2253. }
  2254. if ($user->recom_id) {
  2255. $recom_id = $user->recom_id;
  2256. } else {
  2257. $recom_id = '暂无';
  2258. }
  2259. if ($user->agent_id) {
  2260. $up_id = $user->agent_id;
  2261. } else {
  2262. $up_id = '暂无';
  2263. }
  2264. // $agentCount = User::where(function ($query) use ($input) {
  2265. // $query->where('recom_id', '=', $input['id'])
  2266. // ->orWhere('agent_id', '=', $input['id']);
  2267. // })->count();
  2268. //代理邀请人员后,或者成为上级后不能变更推荐人
  2269. // if($agentCount>0){
  2270. // return $this->error('400112','当前用户邀请人信息不能修改');
  2271. // }
  2272. $recomUser = User::where("mobile", $input['mobile'])->first();//新邀请人信息
  2273. if (empty($recomUser)) {
  2274. return $this->error('400115', '邀请人信息不存在');
  2275. }
  2276. if ($user->recom_id == $recomUser->id) {
  2277. return $this->error('400111', '要更改的邀请人与当前邀请人相同');
  2278. }
  2279. if ($user->id == $recomUser->recom_id) {
  2280. return $this->error('400116', '要更改的邀请人的邀请人为自己');
  2281. }
  2282. if ($user->id == $recomUser->id) {
  2283. return $this->error('400116', '要更改的邀请人不能为自己');
  2284. }
  2285. $uuu = new User();
  2286. $rechecking = $uuu->changeRecomSystem($valvv, $input['mobile']);
  2287. if ($rechecking == '222') {
  2288. return $this->error('400116', '要更改的邀请人为当前代理邀请人系统体系内部成员');
  2289. }
  2290. if ($user->level == '3') {
  2291. $user->recom_id = $recomUser->id;
  2292. $user->agent_id = '1';
  2293. $user->crown_id = '';
  2294. if ($user->warea_id != $recomUser->warea_id) {
  2295. $user->warea_id = $recomUser->warea_id;
  2296. $one_agent = User::where('agent_id', $user->id)->pluck('id');
  2297. if (count($one_agent) > 0) {
  2298. User::whereIn('id', $one_agent)->update(['warea_id' => $recomUser->warea_id]);
  2299. foreach ($one_agent as $key => $val) {
  2300. $two_agent = User::where('agent_id', $val)->pluck('id');
  2301. if (count($two_agent) > 0) {
  2302. User::whereIn('id', $two_agent)->update(['warea_id' => $recomUser->warea_id]);
  2303. }
  2304. }
  2305. }
  2306. }
  2307. } else {
  2308. if ($recomUser->level == '3') {
  2309. $user->recom_id = $recomUser->id;
  2310. $user->agent_id = $recomUser->id;
  2311. $user->crown_id = $recomUser->id;
  2312. $user->warea_id = $recomUser->warea_id;
  2313. if ($user->level == '2') {
  2314. $uuu->changeAgentLevelInfoTwo($user->id, $recomUser->id);
  2315. } elseif ($user->level == '1') {
  2316. $uuu->changeAgentLevelInfoThree($user->id, $recomUser->id, $recomUser->id);
  2317. }
  2318. $uuu->changeAgentRecomCrown($user->id, $recomUser->id, $recomUser->warea_id);
  2319. } elseif ($recomUser->level == '2') {
  2320. if ($user->level == '2') {
  2321. $user->recom_id = $recomUser->id;
  2322. $user->agent_id = $recomUser->agent_id;
  2323. $user->crown_id = $recomUser->crown_id;
  2324. $user->warea_id = $recomUser->warea_id;
  2325. $uuu->changeAgentLevelInfoTwo($user->id, $recomUser->agent_id);
  2326. } elseif ($user->level == '1') {
  2327. $user->recom_id = $recomUser->id;
  2328. $user->agent_id = $recomUser->id;
  2329. $user->crown_id = $recomUser->crown_id;
  2330. $user->warea_id = $recomUser->warea_id;
  2331. $uuu->changeAgentLevelInfoThree($user->id, $recomUser->agent_id, $recomUser->id);
  2332. }
  2333. $uuu->changeAgentRecomCrown($user->id, $recomUser->crown_id, $recomUser->warea_id);
  2334. } elseif ($recomUser->level == '1') {
  2335. $recomAgent = User::find($recomUser->agent_id);
  2336. if ($user->level == '2') {
  2337. $user->recom_id = $recomUser->id;
  2338. $user->agent_id = $recomAgent->agent_id;
  2339. $user->crown_id = $recomUser->crown_id;
  2340. $user->warea_id = $recomUser->warea_id;
  2341. $uuu->changeAgentLevelInfoTwo($user->id, $recomAgent->agent_id);
  2342. } elseif ($user->level == '1') {
  2343. $user->recom_id = $recomUser->id;
  2344. $user->agent_id = $recomUser->agent_id;
  2345. $user->crown_id = $recomUser->crown_id;
  2346. $user->warea_id = $recomUser->warea_id;
  2347. $uuu->changeAgentLevelInfoThree($user->id, $recomAgent->agent_id, $recomUser->agent_id);
  2348. }
  2349. $uuu->changeAgentRecomCrown($user->id, $recomUser->crown_id, $recomUser->warea_id);
  2350. }
  2351. }
  2352. $row = $user->save();
  2353. $remark = '恢复';
  2354. $before = User::where('id', $recom_id)->select('id', 'nickname', 'mobile')->first();
  2355. $after = ['id' => $recomUser->id, 'nickname' => $recomUser->nickname, 'mobile' => $recomUser->mobile];
  2356. $log = '变更前邀请人:' . json_encode($before, JSON_UNESCAPED_UNICODE) . ',变更后邀请人:' . json_encode($after, JSON_UNESCAPED_UNICODE);
  2357. $this->addAgentOperationLog('3', $user->id, $remark, $log);
  2358. event(new ChangeRecom($user));
  2359. Log::info('管理员:' . Auth::user()->name . '(id=' . Auth::user()->id . ')修改代理:' . $user->nickname . '(id=' . $user->id . ')邀请人成功,原邀请人id=' . $recom_id . ',原上级id=' . $up_id . ',新邀请人:' . $recomUser->nickname . '(id=' . $recomUser->id . ')');
  2360. }
  2361. DB::commit();
  2362. return $this->success([]);
  2363. }catch(Exception $e){
  2364. DB::rollBack();
  2365. return $this->error($e->getMessage());
  2366. }
  2367. }
  2368. /**查看邀请人是否删除**/
  2369. public function RecomInfo($id){
  2370. $user=User::withTrashed()->where('id',$id)->first();
  2371. $recom_id=$id;
  2372. if ($user->deleted_at){
  2373. $recom_id=$this->RecomInfo($user->recom_id);
  2374. }
  2375. return $recom_id;
  2376. }
  2377. /**查看上级是否删除**/
  2378. public function AgentInfo($id,$level){
  2379. $user=User::withTrashed()->where('id',$id)->first();
  2380. $agent_id=$user->id;
  2381. if ($user->level<=$level){
  2382. $agent_id=$this->AgentInfo($user->agent_id,$level);
  2383. }
  2384. return $agent_id;
  2385. }
  2386. //获取代理升级后团队信息
  2387. public function getUpTeam($uid){
  2388. $user=User::withTrashed()->where('id',$uid)->first();
  2389. $arr=[];
  2390. $num=0;
  2391. if($user->level==2){
  2392. $this->getAgentLevelInfoTwo($uid,$arr,$num);
  2393. }elseif($user->level==1){
  2394. $this->getAgentLevelInfoOne($uid,$arr,$num);
  2395. }
  2396. $data['num']=$num;
  2397. $data['list']=$arr;
  2398. return $data;
  2399. }
  2400. //顶级升皇冠
  2401. public function getAgentLevelInfoTwo($uid,&$arr,&$num){
  2402. $list=User::where('recom_id', $uid)->select('id','nickname','realname','mobile','level','recom_id')->get();//获取所有邀请人
  2403. if(count($list)>0){
  2404. foreach($list as $key=>$val){
  2405. if($val->level=='2' || $val->level=='1'){
  2406. $num+=1;
  2407. // array_push($arr,$val);
  2408. $this->getAgentLevelInfoTwo($val->id,$arr,$num);
  2409. }
  2410. }
  2411. }
  2412. }
  2413. //特级升顶级
  2414. public function getAgentLevelInfoOne($uid,&$arr,&$num){
  2415. $list=User::where('recom_id', $uid)->select('id','nickname','realname','mobile','level','recom_id')->get();//获取所有邀请人
  2416. if(count($list)>0){
  2417. foreach($list as $key=>$val){
  2418. if($val->level=='1'){
  2419. $num+=1;
  2420. // array_push($arr,$val);
  2421. $this->getAgentLevelInfoOne($val->id,$arr,$num);
  2422. }
  2423. }
  2424. }
  2425. }
  2426. public function get_del_cause(){
  2427. $re=CauseDel::where('type',0)->select('id','cause')->get();
  2428. return $this->success($re);
  2429. }
  2430. public function add_del_cause(Request $request){
  2431. $cause=new CauseDel();
  2432. $cause->type=0;
  2433. $cause->cause=$request->cause;
  2434. $cause->save();
  2435. return $this->success([]);
  2436. }
  2437. public function destory_del_cause(Request $request){
  2438. CauseDel::where('id',$request->id)->delete();
  2439. return $this->success([]);
  2440. }
  2441. public function get_jj_cause(){
  2442. $re=CauseDel::where('type',1)->select('id','cause')->get();
  2443. return $this->success($re);
  2444. }
  2445. public function add_jj_cause(Request $request){
  2446. $cause=new CauseDel();
  2447. $cause->type=1;
  2448. $cause->cause=$request->cause;
  2449. $cause->save();
  2450. return $this->success([]);
  2451. }
  2452. public function destory_jj_cause(Request $request){
  2453. CauseDel::where('id',$request->id)->delete();
  2454. return $this->success([]);
  2455. }
  2456. /*
  2457. * 代理清除
  2458. * **/
  2459. public function UserRemove(Request $request){
  2460. $mobile=$request->input('mobile');
  2461. $re=User::where('mobile',$mobile)->first();
  2462. if (!$re){
  2463. return $this->error(500214,'根据手机号查不到代理!');
  2464. }
  2465. if ($re->cert_status==3 || $re->cert_status==6){
  2466. return $this->error(5002141,'该代理已经通过审核,不能删除');
  2467. }
  2468. if ($re->cert_status!=0){
  2469. return $this->error(5002141,'该代理已经进入审核阶段,不能删除');
  2470. }
  2471. DB::table('users')->where('id',$re->id)->delete();
  2472. return $this->success([]);
  2473. }
  2474. /**查找符合条件的需要审核的代理**/
  2475. public function search_peoples(Request $request){
  2476. $admin_user=Auth::user();
  2477. $status=false;
  2478. if ($admin_user->role_id==22||$admin_user->role_id==32 || $admin_user->role_id==24){
  2479. $status=true;
  2480. }
  2481. $warea_id=Warea::where('admin_id',$admin_user->id)->value('id');
  2482. $input=$request->all();
  2483. $recom_info=$request->input('recom_info',null);
  2484. $agent_info=$request->input('agent_info',null);
  2485. $page_index=$input['page_index'];
  2486. $page_size=$input['page_size'];
  2487. $num=($page_index-1)*$page_size;
  2488. $crown_id=$request->input('crown_id','');
  2489. // if ($input['status']==1){
  2490. // $input['status']=0;
  2491. // }
  2492. $user=User::whereIn('cert_status',[3,6])->with(['agent','recom'])->where('service_status',0);
  2493. if($input['status']!='all'){
  2494. $user->where('in_group',$input['status']);
  2495. }
  2496. if (!$status){
  2497. $user=$user->where('warea_id',$warea_id);
  2498. }
  2499. if ($recom_info){
  2500. if (is_numeric($recom_info)){
  2501. if (mb_strlen($recom_info)<5){
  2502. return $this->error(500214,'请输入至少六位的手机号');
  2503. }
  2504. }
  2505. $ids=User::where('mobile','like',"%$recom_info%")->orwhere('nickname','like',"%$recom_info%")->pluck('id');
  2506. $user->whereIn('recom_id',$ids);
  2507. }
  2508. if ($agent_info){
  2509. if (is_numeric($agent_info)){
  2510. if (mb_strlen($agent_info)<5){
  2511. return $this->error(500214,'请输入至少六位的手机号');
  2512. }
  2513. }
  2514. $ids=User::where('mobile','like',"%$agent_info%")->orwhere('nickname','like',"%$agent_info%")->pluck('id');
  2515. $user->whereIn('agent_id',$ids);
  2516. }
  2517. if ($crown_id){
  2518. $user->where('crown_id',$crown_id);
  2519. }
  2520. // if ($input['status']==2){
  2521. // $user->withTrashed();
  2522. // }
  2523. if ($input['search_content']){
  2524. if (is_numeric($input['search_content'])){
  2525. if (mb_strlen($input['search_content'])<5){
  2526. return $this->error(500214,'请输入至少六位的手机号');
  2527. }
  2528. }
  2529. $search_content=$input['search_content'];
  2530. $where=function ($q)use($search_content){
  2531. $q->where('mobile','like','%'.$search_content.'%')
  2532. ->orwhere('nickname','like','%'.$search_content.'%')
  2533. ->orwhere('realname','like','%'.$search_content.'%');
  2534. };
  2535. $user->where($where);
  2536. }
  2537. $user=$user->with(['get_service','crown:id,mobile,nickname'])->with(['warea']);
  2538. $count=$user->count();
  2539. $result=$user->take($page_size)->skip($num)->get();
  2540. return $this->success_list($result,'',$count);
  2541. }
  2542. /**查看凭证**/
  2543. public function LookImg(Request $request){
  2544. $id=$request->input('id');
  2545. $re=UserCert::where('user_id',$id)->orderByDesc('created_at')->first();
  2546. if ($re && $re->five_amount_img){
  2547. return $this->success($re);
  2548. }else{
  2549. return $this->success([]);
  2550. }
  2551. }
  2552. /**获取战区的代理公司**/
  2553. public function GetWareaCrown(){
  2554. $admin_user=Auth::user();
  2555. $status=true;
  2556. if ($admin_user->role_id==22||$admin_user->role_id==32 || $admin_user->role_id==24){
  2557. $status=false;
  2558. }
  2559. $user=User::where('level',3);
  2560. if ($status){
  2561. $id=Auth::user()->id;
  2562. $warea_id=Warea::where('admin_id',$id)->value('id');
  2563. $user=$user->where('warea_id',$warea_id)->select('id','nickname','remark_name')->whereNull('deleted_at')->get();
  2564. }else{
  2565. $user=$user->where('level',3)->whereNull('deleted_at')->get();
  2566. }
  2567. return $this->success($user);
  2568. }
  2569. public function download_peoples(Request $request){
  2570. $admin_user=Auth::user();
  2571. $status=false;
  2572. if ($admin_user->role_id==22||$admin_user->role_id==32 || $admin_user->role_id==24){
  2573. $status=true;
  2574. }
  2575. $warea_id=Warea::where('admin_id',$admin_user->id)->value('id');
  2576. $crown_id=$request->input('crown_id','');
  2577. $user=User::whereIn('cert_status',[3,6])->with(['agent','recom'])->where('service_status',0)->where('in_group',3);
  2578. if (!$status){
  2579. $user->where('warea_id',$warea_id);
  2580. }
  2581. if ($crown_id){
  2582. $user->where('crown_id',$crown_id);
  2583. }
  2584. $user=$user->with(['get_service','crown:id,mobile,nickname'])->with(['warea']);
  2585. $result=$user->get();
  2586. return $this->success_list($result,'');
  2587. }
  2588. /**政委审核**/
  2589. // public function service_audit(Request $request){
  2590. // $input=$request->all();
  2591. // $status=$input['status'];//0通过1未通过
  2592. // $user=User::where('id',$request->id)->withTrashed()->first();
  2593. // if (!$user){
  2594. // return $this->error(500214,'该代理已被删除');
  2595. // }
  2596. // DB::beginTransaction();
  2597. // try{
  2598. // if ($status==1){
  2599. // $reason=new ServiceReason();
  2600. // $reason->user_id=$input['id'];
  2601. // $reason->op_name=Auth::user()->nickname;
  2602. // $reason->reason=$input['reason'];
  2603. // if (!$reason->save()){
  2604. // throw new \Exception(1);
  2605. // }
  2606. // $user->service_status=2;
  2607. // if ($user->openid){
  2608. // $me['openid']=$user->openid;
  2609. // $me['status']=1;
  2610. // $me['data']=[
  2611. // 'first' => '抱歉,您的注册申请已被政委驳回。原因'.$input['reason'],
  2612. // 'keyword1' => '政委驳回',
  2613. // 'keyword2' => date("Y-m-d H:i"),
  2614. // 'remark' => '点击链接进入系统,查看详情',
  2615. // ];
  2616. // event(new AgentAuditServiceEvent($me));
  2617. // }
  2618. // }elseif ($status==0){
  2619. // $user->service_status=0;
  2620. // $user->service_end_time=Carbon::now();
  2621. // if ($user->openid){
  2622. // $me['openid']=$user->openid;
  2623. // $me['status']=0;
  2624. // $me['data']=[
  2625. // 'first' => '恭喜您,您的注册申请已通过政委审核。',
  2626. // 'keyword1' => '政委审核成功',
  2627. // 'keyword2' => date("Y-m-d H:i"),
  2628. // 'remark' => '点击链接进入系统,查看详情',
  2629. // ];
  2630. // event(new AgentAuditServiceEvent($me));
  2631. // }
  2632. // }
  2633. // if (!$user->save()){
  2634. // throw new \Exception(1);
  2635. // }
  2636. // DB::commit();
  2637. // return $this->success([]);
  2638. // }catch (\Exception $exception){
  2639. // DB::rollBack();
  2640. // return $this->error(52201,'','');
  2641. // }
  2642. // }
  2643. /**政委审核**/
  2644. public function service_audit(Request $request){
  2645. $input=$request->all();
  2646. $status=$input['status'];//0通过1未通过
  2647. $user=User::where('id',$request->id)->first();
  2648. if (!$user){
  2649. return $this->error(500214,'该代理已被删除');
  2650. }
  2651. if ($status==1){
  2652. if($user->level>1){
  2653. return $this->error(500214, '代理已升级不能驳回');
  2654. }
  2655. if($user->in_group==1){
  2656. return $this->error(500214, '代理已进群不能驳回');
  2657. }
  2658. DB::beginTransaction();
  2659. try{
  2660. User::where('id',$request->id)->update([
  2661. 'cert_status'=>1,
  2662. 'service_status'=>1,
  2663. 'agent_id'=>null,
  2664. 'crown_id'=>null,
  2665. 'warea_id'=>null
  2666. ]);
  2667. UserCert::where('user_id',$request->id)->update([
  2668. 'recom_audit'=>0,
  2669. 'recom_audit_desc'=>null,
  2670. 'recom_updated_at'=>null,
  2671. 'agent_id'=>null,
  2672. 'agent_audit'=>0,
  2673. 'agent_audit_desc'=>null,
  2674. 'agent_updated_at'=>null,
  2675. 'company_audit'=>0,
  2676. 'company_audit_desc'=>null,
  2677. 'company_updated_at'=>null,
  2678. 'notice_in_group_at'=>null,
  2679. 'notice_remark'=>Carbon::now()->toDateTimeString().'-被政委('.Auth::user()->name.')驳回,原因:'.$request->reason,
  2680. ]);
  2681. DB::commit();
  2682. Log::info($user->nickname.'被政委('.Auth::user()->name.')驳回成功');
  2683. if ($user->openid){
  2684. $me['openid']=$user->openid;
  2685. $me['status']=1;
  2686. $me['data']=[
  2687. 'first' => '抱歉,您的注册申请被政委审核驳回。',
  2688. 'keyword1' => '政委驳回',
  2689. 'keyword2' => date("Y-m-d H:i"),
  2690. 'remark' => '点击链接进入系统,查看详情',
  2691. ];
  2692. event(new AgentAuditServiceEvent($me));
  2693. }
  2694. return $this->success([]);
  2695. }catch(\Exception $e){
  2696. DB::rollBack();
  2697. Log::info($user->nickname.'未联系被政委('.Auth::user()->name.')驳回失败-'.$e->getMessage());
  2698. return $this->error(52201,'','');
  2699. }
  2700. }else{
  2701. if($status==0){
  2702. $user->in_group=1;
  2703. if ($user->openid) {
  2704. $me['openid'] = $user->openid;
  2705. $me['status'] = 0;
  2706. $me['data'] = [
  2707. 'first' => '恭喜您,您的注册申请已通过政委审核。',
  2708. 'keyword1' => '政委审核成功',
  2709. 'keyword2' => date("Y-m-d H:i"),
  2710. 'remark' => '点击链接进入系统,查看详情',
  2711. ];
  2712. event(new AgentAuditServiceEvent($me));
  2713. }
  2714. }elseif ($status==2){
  2715. $user->in_group=2;
  2716. }elseif ($status==3){
  2717. $user->in_group=3;
  2718. }else{
  2719. $user->in_group=4;
  2720. }
  2721. $user->service_end_time=Carbon::now();
  2722. if ($user->save()){
  2723. return $this->success([]);
  2724. }
  2725. }
  2726. return $this->error(52201,'','');
  2727. }
  2728. public function demos(){
  2729. $data=User::where('mobile',15286818088)->get();
  2730. $template_id='QDtFW3nSqMLZ_Aw52zzr6I1V1v0ElBk5o8pHdOSNwBM';
  2731. $url='https://admin.app.jiuweiyun.cn/h5/index.html#/pages/view/page2';
  2732. foreach ($data as $k=>$v){
  2733. if ($v->openid){
  2734. $time1=Carbon::yesterday();
  2735. if ($v->level==2){
  2736. $count=User::whereIn('cert_status',['3','6'])->where('agent_id',$v->id)->where('service_status',0)->where('created_at','>',$time1)->count();
  2737. }else{
  2738. $count=User::whereIn('cert_status',['3','6'])->where('service_status',0)->where('crown_id',$v->id)->where('created_at','>',$time1)->count();
  2739. }
  2740. $ye_num=WdOrder::where('is_pay',1)->where('user_id',$v->id)->whereIn('apply_cancel',[0,1,3])->where('created_at','>=',$time1)->sum('total');
  2741. $app=app('wechat.official_account');
  2742. if ($v->remark_name){
  2743. $name=$v->remark_name;
  2744. }else{
  2745. $name=$v->nickname;
  2746. }
  2747. $mesdata=[
  2748. 'first'=>$name.'您好,昨日您的业绩如下',
  2749. 'keyword1' => date('Y-m-d',Carbon::yesterday()->timestamp),
  2750. 'keyword2' => '昨日你的团队新增'.$count.',微店铺销售了'.$ye_num.'套',
  2751. 'remark' => '点击查看详情',
  2752. ];
  2753. $app->template_message->send([
  2754. 'touser' => $v->openid,
  2755. 'template_id' => $template_id,
  2756. 'url' => $url.'?id='.$v->id,
  2757. 'data' => $mesdata
  2758. ]);
  2759. }
  2760. }
  2761. }
  2762. public function get_reason(){
  2763. $re=DB::table('reason')->where('type',0)->get();
  2764. $data=[];
  2765. foreach ($re as $k=>$v){
  2766. $data[$k]=$v->reason;
  2767. }
  2768. return $this->success_list($data);
  2769. }
  2770. public function add_reason(Request $request){
  2771. DB::table('reason')->insert(['type'=>0,'reason'=>$request->reason]);
  2772. return $this->success([]);
  2773. }
  2774. public function UnbindWechat(Request $request){
  2775. $id=$request->input('id',0);
  2776. if (!$id){
  2777. return $this->error(500214,'','参数不正确');
  2778. }
  2779. $user=User::where('id',$id)->withTrashed()->first();
  2780. if (!$user){
  2781. return $this->error(500214,'','未找到对应用户');
  2782. }
  2783. $user->openid=null;
  2784. $user->unionid=null;
  2785. $user->save();
  2786. return $this->success([]);
  2787. }
  2788. /**获取信息**/
  2789. public function GetUserCertInfo(Request $request){
  2790. $id=$request->input('id')??null;
  2791. $crown_id=$request->input('crown_id')??null;
  2792. if (!$id){
  2793. return $this->error();
  2794. }
  2795. $re=User::where('id',$id)->with(['recom:id,headimgurl,nickname,mobile,level'])
  2796. ->with(['agent:id,headimgurl,nickname,mobile,level'])
  2797. ->select('id','recom_id','agent_id','nickname','mobile','level','headimgurl','auth_startime')->first();
  2798. $res=User::where('id',$crown_id)->select('headimgurl','remark_name')->first();
  2799. return $this->success(['users'=>$re,'crown'=>$res]);
  2800. }
  2801. /**新增*/
  2802. public function GetCrownTeam(Request $request){
  2803. $crown_id=$request->input('crown_id')??null;
  2804. $time=$request->input('time')??Carbon::today()->toDateTimeString();
  2805. $time1=Carbon::parse($time)->addDays(-7);
  2806. $time2=Carbon::parse($time)->addMonths(-1);
  2807. $time3=Carbon::parse($time)->startOfYear();
  2808. $ids=User::where('agent_id',$crown_id)->pluck('id')->toArray();
  2809. $idss=User::whereIn('agent_id',$ids)->pluck('id')->toArray();
  2810. $ia_all=array_merge($ids,$idss);
  2811. $count1=User::whereIn('cert_status',['3','6'])->whereIn('id',$ia_all)->where('service_status',0)->where('created_at','>',$time1)->count();
  2812. $count2=User::whereIn('cert_status',['3','6'])->whereIn('id',$ia_all)->where('service_status',0)->where('created_at','>',$time2)->count();
  2813. $count3=User::whereIn('cert_status',['3','6'])->whereIn('id',$ia_all)->where('service_status',0)->where('created_at','>',$time3)->count();
  2814. return $this->success(['week'=>$count1,'month'=>$count2,'year'=>$count3]);
  2815. }
  2816. /*
  2817. * 查询相关信息
  2818. * ***/
  2819. public function GetUserStoreInfo(Request $request){
  2820. $id=$request->input('id');
  2821. $time=$request->input('time')??Carbon::today()->toDateTimeString();
  2822. $times=strtotime($time);
  2823. $time1=date('Y-m-d H:i:s',$times-3600*24);
  2824. $time2=Carbon::parse($time)->startOfMonth()->toDateTimeString();
  2825. $time3=Carbon::parse($time)->startOfYear()->toDateTimeString();
  2826. $user=User::where('id',$id)->select('headimgurl','remark_name','nickname','mobile','level')->first();
  2827. $ids=User::where('agent_id',$id)->pluck('id')->toArray();
  2828. $idss=User::whereIn('agent_id',$ids)->pluck('id')->toArray();
  2829. $ia_all=array_merge($ids,$idss);
  2830. $store_id=WdStore::where('user_id',$id)->whereNull('deleted_at')->value('id');
  2831. $count1=User::whereIn('cert_status',['3','6'])->whereIn('id',$ia_all)->where('service_status',0)->where('created_at','>',$time1)->count();
  2832. $count2=User::whereIn('cert_status',['3','6'])->whereIn('id',$ia_all)->where('service_status',0)->where('created_at','>',$time2)->count();
  2833. $count3=User::whereIn('cert_status',['3','6'])->whereIn('id',$ia_all)->where('service_status',0)->where('created_at','>',$time3)->count();
  2834. $ye_num=WdOrder::where('is_pay',1)->where('store_id',$store_id)->whereIn('apply_cancel',[0,1,3])->where('created_at','>=',$time1)->sum('total');
  2835. $ye_money=WdOrder::where('is_pay',1)->where('store_id',$store_id)->whereIn('apply_cancel',[0,1,3])->where('created_at','>=',$time1)->sum('account');
  2836. $mon_num=WdOrder::where('is_pay',1)->where('store_id',$store_id)->whereIn('apply_cancel',[0,1,3])->where('created_at','>=',$time2)->sum('total');
  2837. $mon_money=WdOrder::where('is_pay',1)->where('store_id',$store_id)->whereIn('apply_cancel',[0,1,3])->where('created_at','>=',$time2)->sum('account');
  2838. $year_num=WdOrder::where('is_pay',1)->where('store_id',$store_id)->whereIn('apply_cancel',[0,1,3])->where('created_at','>=',$time3)->sum('total');
  2839. $year_money=WdOrder::where('is_pay',1)->where('store_id',$store_id)->whereIn('apply_cancel',[0,1,3])->where('created_at','>=',$time3)->sum('account');
  2840. return $this->success(['yestoday'=>$count1,'month'=>$count2,'year'=>$count3,'yestoday_oder_num'=>$ye_num,'month_order_num'=>$mon_num,'user'=>$user,'year_order_num'=>$year_num,'ye_money'=>$ye_money,'mon_money'=>$mon_money,'year_money'=>$year_money]);
  2841. }
  2842. public function GetLevelUp(Request $request){
  2843. $id=$request->input('id');
  2844. $user=User::where('id',$id)->select('headimgurl','remark_name','nickname','mobile','level')->first();
  2845. if ($user->level==3){
  2846. $id_arr=User::where('agent_id',$user->id)->where('level',2)->pluck('id');
  2847. $levelUp=\DB::table('agent_operation_log')->whereIn('user_id',$id_arr)->where('type',2)
  2848. ->where('created_at','>',Carbon::yesterday()->toDateTimeString())->count();
  2849. return $this->success(['level_up'=>$levelUp]);
  2850. }
  2851. return $this->success([]);
  2852. }
  2853. /**新增*/
  2854. public function GetCrownTeams(Request $request){
  2855. // $id=$request->input('id')??null;
  2856. // $type=$request->input('type')??0;
  2857. // $search_name=$request->input('search_name');
  2858. //
  2859. // if ($type){
  2860. // $time=Carbon::yesterday();
  2861. // }else{
  2862. // $time=Carbon::now()->startOfMonth();
  2863. // }
  2864. // $ids=User::where('agent_id',$id)->pluck('id')->toArray();
  2865. // $idss=User::whereIn('agent_id',$ids)->pluck('id')->toArray();
  2866. //
  2867. // $ia_all=array_merge($ids,$idss);
  2868. //
  2869. // $count1=User::whereIn('cert_status',['3','6'])->whereIn('id',$ia_all)->where('service_status',0)->where('created_at','>',$time);
  2870. //
  2871. // return $this->success(['week'=>$count1,'month'=>$count2,'year'=>$count3]);
  2872. }
  2873. public function GetCrownInfo(){
  2874. $re=User::where('level',3)->whereNull('deleted_at')->select('id','level','remark_name as name','nickname','mobile','headimgurl','cre_num','realname')->orderBy('id')->get();
  2875. return $this->success($re);
  2876. }
  2877. public function GetNextInfo(Request $request){
  2878. $re=User::whereNull('deleted_at')->where('agent_id',$request->id)->with(['child:id,agent_id'])->where('level','<>',3)->select('id','level','remark_name as name','nickname','mobile','headimgurl','cre_num','realname')->get();
  2879. return $this->success($re);
  2880. }
  2881. public function GetLastInfo(Request $request){
  2882. $re=User::where('level',1)->whereNull('deleted_at')->where('level','<>',3)->where('agent_id',$request->id)->select('id','level','remark_name as name','nickname','mobile','headimgurl','cre_num','realname')->get();
  2883. return $this->success($re);
  2884. }
  2885. public function SearchUser(Request $request){
  2886. $search_name=$request->input('search_name');
  2887. $warea_id=$request->input('warea_id')??null;
  2888. $user=User::whereNull('deleted_at');
  2889. if ($warea_id){
  2890. $user->where('warea_id',$warea_id);
  2891. }
  2892. $user=$user->where(function ($q)use($search_name){
  2893. $q->where('nickname','like',"%$search_name%")->orwhere('mobile','like',"%$search_name%")->orwhere('remark_name','like',"%$search_name%");
  2894. })->with(['warea'])->select('id','nickname','remark_name','mobile','level','headimgurl','warea_id')->get();
  2895. return $this->success($user);
  2896. }
  2897. public function GetAllWarea(Request $request){
  2898. $re=Warea::pluck('name','id');
  2899. return $this->success($re);
  2900. }
  2901. public function SearchTeamUser(Request $request){
  2902. $id=$request->input('id');
  2903. $user=User::find($id);
  2904. if ($user->level==3){
  2905. $re=User::where('level',3)->whereNull('deleted_at')->select('id','level','remark_name as name','nickname','mobile','headimgurl','cre_num','realname')->orderBy('id')->get();
  2906. return $this->success($re);
  2907. }else{
  2908. $agent=User::find($user->agent_id);
  2909. if ($agent->level==3){
  2910. $id=$agent->id;
  2911. $re=User::where('level',3)->whereNull('deleted_at')->select('id','level','remark_name as name','nickname','mobile','headimgurl','cre_num','realname')->orderBy('id')->get()->toArray();
  2912. $res=User::whereNull('deleted_at')->where('agent_id',$agent->id)->where('level','<>',3)->select('id','level','remark_name as name','nickname','mobile','headimgurl','cre_num','realname')->get();
  2913. $arr=array_column($re,'id');
  2914. $arr_id=array_search($id,$arr);
  2915. $re[$arr_id]['children']=$res;
  2916. return $this->success($re);
  2917. }else{
  2918. /**代理公司信息*/
  2919. $users=User::find($agent->agent_id);
  2920. //代理公司ID
  2921. $id=$users->id;
  2922. //销售经理下面所有主管
  2923. $last_re=User::where('level',1)->whereNull('deleted_at')->where('agent_id',$agent->id)->select('id','level','remark_name as name','nickname','mobile','headimgurl','cre_num','realname')->get()->toArray();
  2924. //所有的代理公司
  2925. $re=User::where('level',3)->whereNull('deleted_at')->select('id','level','remark_name as name','nickname','mobile','headimgurl','cre_num','realname')->orderBy('id')->get()->toArray();
  2926. $arr=array_column($re,'id');
  2927. $arr_id=array_search($id,$arr);
  2928. //代理公司所有的直属下级
  2929. $res=User::whereNull('deleted_at')->where('agent_id',$id)->where('level','<>',3)->select('id','level','remark_name as name','nickname','mobile','headimgurl','cre_num','realname')->get()->toArray();
  2930. $arrs=array_column($res,'id');
  2931. $arrs_id=array_search($agent->id,$arrs);
  2932. $res[$arrs_id]['children']=$last_re;
  2933. $re[$arr_id]['children']=$res;
  2934. return $this->success($re);
  2935. }
  2936. }
  2937. }
  2938. public function GetEnroll(){
  2939. $count=Enroll::where('is_pay',1)->where('is_refund','<>',1)->where('season',4)->count();
  2940. return $this->success(['count'=>$count]);
  2941. }
  2942. public function UpdateEnrollInfo(Request $request){
  2943. $uid=$request->input('user_id');
  2944. $re=EnrollUser::where('user_id',$uid)->first();
  2945. if (!$re){
  2946. return $this->error();
  2947. }
  2948. if (!$request->input('mobile') || !$request->input('name')){
  2949. return $this->error(400121,'信息提交不全');
  2950. }
  2951. $re->mobile=$request->input('mobile','');
  2952. $re->name=$request->input('name','');
  2953. $re->province=$request->input('province','');
  2954. $re->city=$request->input('city','');
  2955. $re->town=$request->input('town','');
  2956. $re->address=$request->input('address','');
  2957. $re->save();
  2958. return $this->success([]);
  2959. }
  2960. public function GetEnrolls(Request $request){
  2961. $search_name=$request->input('search_name');
  2962. $page_index=$request->input('page_index');
  2963. $page_size=$request->input('page_size');
  2964. $type=$request->input('type',0);
  2965. $num=($page_index-1)*$page_size;
  2966. if ($type==1){
  2967. $re=Enroll::where('is_pay',1)->where('season',6)->where('is_refund',1);
  2968. }else{
  2969. $re=Enroll::where('is_pay',1)->where('season',6)->wherenull('is_refund');
  2970. }
  2971. if($search_name){
  2972. $uid=User::where('nickname','like',"%$search_name%")->orwhere('mobile','like',"%$search_name%")->withTrashed()->pluck('id');
  2973. $re->whereIn('user_id',$uid);
  2974. }
  2975. $count=$re->count();
  2976. $re=$re->with(['user:mobile,level,nickname,realname,headimgurl,id','enroll_user'])->take($page_size)->skip($num)->get();
  2977. return $this->success_list([$re,'count'=>$count]);
  2978. }
  2979. public function ExportEnrollList(Request $request){
  2980. $search_name=$request->input('search_name');
  2981. $season=$request->input('season',6);
  2982. $re=Enroll::where('is_pay',1)->where('season',$season)->wherenull('is_refund');
  2983. if($search_name){
  2984. $uid=User::where('nickname','like',"%$search_name%")->orwhere('mobile','like',"%$search_name%")->pluck('id');
  2985. $re->whereIn('user_id',$uid);
  2986. }
  2987. $re=$re->leftjoin('users','users.id','=','enroll.user_id')
  2988. ->join('warea','warea.id','=','users.warea_id')
  2989. ->leftjoin('enroll_user','enroll_user.user_id','=','users.id')
  2990. ->select('users.mobile as 手机号','users.nickname as 昵称',DB::raw('(CASE
  2991. WHEN users.level=1 THEN "销售主管"
  2992. WHEN users.level=2 THEN "销售经理"
  2993. WHEN users.level=3 THEN "代理公司"
  2994. ELSE "未知" END) as 级别'),'warea.name as 战区','enroll.created_at as 报名时间','agent_id','enroll_user.mobile as 收货人手机号','enroll_user.province as 省份','enroll_user.name as 收获人姓名','enroll_user.city as 城市','enroll_user.town as 地区','enroll_user.address as 详细地址' )
  2995. ->get()->toArray();
  2996. $data=[];
  2997. foreach ($re as $k=>$v){
  2998. $agent_id=$v['agent_id'];
  2999. unset($v['agent_id']);
  3000. $data[$k]=$v;
  3001. if ($v['级别']=='代理公司'){
  3002. $data[$k]['代理公司']='暂无';
  3003. }else{
  3004. $agent=User::find($agent_id);
  3005. if ($agent){
  3006. if ($agent->level==3){
  3007. $data[$k]['代理公司']=$agent->remark_name;
  3008. }else{
  3009. $agents=User::find($agent->agent_id);
  3010. $data[$k]['代理公司']=$agents->remark_name;
  3011. }
  3012. }else{
  3013. $data[$k]['代理公司']='暂无';
  3014. }
  3015. }
  3016. }
  3017. return $this->success($data,count($re));
  3018. }
  3019. public function EEnrollList(Request $request){
  3020. $search_name=$request->input('search_name');
  3021. $season=$request->input('season',4);
  3022. $re=Enroll::where('is_pay',1)->where('season',$season)->wherenull('is_refund');
  3023. if($search_name){
  3024. $uid=User::where('nickname','like',"%$search_name%")->orwhere('mobile','like',"%$search_name%")->pluck('id');
  3025. $re->whereIn('user_id',$uid);
  3026. }
  3027. $re=$re->join('users','users.id','=','enroll.user_id')
  3028. ->join('warea','warea.id','=','users.warea_id')
  3029. ->leftjoin('enroll_user','enroll_user.user_id','=','users.id')
  3030. ->select('users.mobile as 手机号','users.nickname as 昵称',DB::raw('(CASE
  3031. WHEN users.level=1 THEN "销售主管"
  3032. WHEN users.level=2 THEN "销售经理"
  3033. WHEN users.level=3 THEN "代理公司"
  3034. ELSE "未知" END) as 级别'),'warea.name as 战区','enroll.created_at as 报名时间','enroll.id','agent_id','enroll_user.mobile as 收货人手机号','enroll_user.province as 省份','enroll_user.name as 收获人姓名','enroll_user.city as 城市','enroll_user.town as 地区','enroll_user.address as 详细地址' )
  3035. ->pluck('id')->toArray();
  3036. $data=Enroll::where('season',4)->where('is_pay',1)->whereNull('is_refund')->whereNotIn('id',$re)->get();
  3037. return $this->success($data,count($re));
  3038. }
  3039. /*
  3040. * 点击退款
  3041. * **/
  3042. public function Refund(Request $request){
  3043. $re=Enroll::find($request->input('id'));
  3044. if ($re){
  3045. $options=$this->options();
  3046. $payment=Factory::payment($options);
  3047. $number=time().$re->user_id.random_int(11111,99999);
  3048. // 参数分别为:商户订单号、商户退款单号、订单金额、退款金额、其他参数
  3049. $result = $payment->refund->byOutTradeNumber($re->enroll_no, $number, $re->cost*100, $re->cost*100, [
  3050. // 可在此处传入其他参数,详细参数见微信支付文档
  3051. 'refund_desc' => $request->input('refund_desc'),
  3052. 'notify_url'=>'https://api.admin.app.jiuweiyun.cn/api/pay/RefoundMessage'
  3053. ]);
  3054. $re->refund_cause=$request->input('refund_desc');
  3055. $re->op_name=Auth::user()->name;
  3056. $re->is_refund=1;
  3057. $re->save();
  3058. }
  3059. return $this->success([]);
  3060. }
  3061. public function RefundMessage(Request $request){
  3062. $options = $this->options();
  3063. $payment = Factory::payment($options);
  3064. $response = $payment->handleRefundedNotify(function ($message, $reqInfo, $fail){
  3065. $out_trade_no = $reqInfo['out_trade_no']; // 商户订单号
  3066. $out_refund_no = $reqInfo['out_refund_no']; // 微信支付退款订单号
  3067. $order = Enroll::where('enroll_no', '=', $out_trade_no)->first();
  3068. if (empty($order)) {
  3069. return true; // 告诉微信,我已经处理完了,订单没找到,别再通知我了
  3070. }
  3071. if ($message['return_code'] === 'SUCCESS') { // return_code 表示通信状态,不代表支付状态
  3072. // 用户是否支付成功
  3073. if ($reqInfo['refund_status'] === 'SUCCESS') {
  3074. $enroll = Enroll::where('enroll_no', '=', $out_trade_no)->first();
  3075. $enroll->is_refund = 1;
  3076. $enroll->refund_num = $out_refund_no;
  3077. $enroll->refund_time = Carbon::now()->toDateTimeString();
  3078. $enroll->save();
  3079. }
  3080. } else {
  3081. return $fail('通信失败,请稍后再通知我');
  3082. }
  3083. return true;
  3084. });
  3085. return $response;
  3086. }
  3087. protected function options(){
  3088. return [
  3089. 'app_id' => config('wechat.payment.daweiboshi.app_id'),//config('wechat.payment.default.app_id'),
  3090. 'mch_id' => config('wechat.payment.daweiboshi.mch_id'),
  3091. 'sub_mch_id' => '',
  3092. 'key' => config('wechat.payment.daweiboshi.key'),
  3093. 'notify_url' =>'',
  3094. // 'notify_url' =>url('api/pay/message'),
  3095. 'cert_path' =>config('wechat.payment.daweiboshi.cert_path'),
  3096. 'key_path' =>config('wechat.payment.daweiboshi.key_path'),
  3097. ];
  3098. }
  3099. public function GetUserRecom(){
  3100. $re=User::where('level',3)->with(['child'=>function ($q){
  3101. $q->with(['child'=>function($query){
  3102. $query->select('level','nickname','remark_name','mobile','headimgurl','id','agent_id',DB::raw('if("status"=0,"false","true") as collapsed '));
  3103. }])->select('level','nickname','remark_name','mobile','headimgurl','id','agent_id',DB::raw('if("status"=0,"false","true") as collapsed '));
  3104. }])->select('level','nickname','remark_name','mobile','headimgurl','id','agent_id',DB::raw('if("status"=0,"false","true") as collapsed '))->limit(50)->get();
  3105. return $this->success($re);
  3106. }
  3107. public function GetUserRecoms(){
  3108. $re=Cache::remember('UserDataAll',Carbon::now()->addDays(1),function (){
  3109. return User::where('recom_id',31070)->with(['allChildren'=>function ($q){
  3110. $q->select('level','nickname','remark_name','mobile','headimgurl','id','recom_id')->whereNotNull('recom_id');
  3111. }])->select('level','nickname','remark_name','mobile','headimgurl','id','recom_id')->whereNotNull('recom_id')->get();
  3112. });
  3113. return $this->success($re);
  3114. }
  3115. public function GetParent(Request $request){
  3116. $id=$request->input('id',null);
  3117. $status=$request->input('status',null)??null;
  3118. $id_arr=[];
  3119. if ($id){
  3120. $id_arr=$this->Getcom($id,[]);
  3121. }
  3122. if (!$status){
  3123. $re=User::where('recom_id',31070)->select('level','nickname','remark_name','mobile','headimgurl','id','recom_id','cre_num','realname','province','city','country')->whereNull('deleted_at')->whereNotNull('recom_id')->get();
  3124. }else{
  3125. $re=User::where('recom_id',31070)->where('id',$id)->select('level','nickname','remark_name','mobile','headimgurl','id','recom_id','cre_num','realname','province','city','country')->whereNull('deleted_at')->whereNotNull('recom_id')->get();
  3126. }
  3127. $res=$this->Getcoms($id_arr,$re);
  3128. return $this->success($res);
  3129. }
  3130. public function GetParents(Request $request){
  3131. $id=$request->input('id',null);
  3132. $arr=$request->input('arr',null)??null;
  3133. Log::error($arr);
  3134. $data=[];
  3135. if ($arr){
  3136. foreach ($arr as $k=>$v){
  3137. $data[]=json_decode($v,true);
  3138. }
  3139. }
  3140. $arr=$data;
  3141. $id_arr=[];
  3142. if ($id){
  3143. $id_arr=$this->Getcom($id,[]);
  3144. }
  3145. if (!isset($arr[0])){
  3146. $re=User::where('recom_id',31070)->select('level','nickname','remark_name','mobile','headimgurl','id','recom_id','cre_num','realname','province','city','country')->whereNull('deleted_at')->whereNotNull('recom_id')->get();
  3147. }else{
  3148. if (!$arr[0]['status']){
  3149. $re=User::where('recom_id',31070)->where('id',$arr[0]['id'])->select('level','nickname','remark_name','mobile','headimgurl','id','recom_id','cre_num','realname','province','city','country')->whereNull('deleted_at')->whereNotNull('recom_id')->get();
  3150. }else{
  3151. $re=User::where('recom_id',31070)->select('level','nickname','remark_name','mobile','headimgurl','id','recom_id','cre_num','realname','province','city','country')->whereNull('deleted_at')->whereNotNull('recom_id')->get();
  3152. }
  3153. }
  3154. $res=$this->Getcomss($id_arr,$re,$arr,0,[],1,$id);
  3155. $e=[];
  3156. for($i=1;$i<$res[1];$i++){
  3157. $e[]=$i;
  3158. }
  3159. return $this->success(['data'=>$res[0],'info'=>[$e,$res[3]]]);
  3160. }
  3161. public function Getcom($id,$arr=[]){
  3162. $user=User::where('id',$id)->select('level','nickname','remark_name','mobile','headimgurl','id','recom_id','cre_num','realname')->whereNotNull('recom_id')->whereNull('deleted_at')->first();
  3163. $arr[]=$id;
  3164. // $recom_arr=User::where('recom_id',$user->recom_id)->select('level','nickname','remark_name','mobile','headimgurl','id','recom_id')->get();
  3165. // foreach ($recom_arr as $k=>$v){
  3166. // if ($v->id==$id){
  3167. // $recom_arr[$k]->collapsed=false;
  3168. // }
  3169. // }
  3170. //
  3171. // $arrs=$recom_arr;
  3172. if ($user->recom_id!=31070){
  3173. if ($user->recom_id){
  3174. $arr[]=$user->recom_id;
  3175. return $this->Getcom($user->recom_id,$arr);
  3176. }
  3177. }
  3178. return $arr;
  3179. }
  3180. public function Getcoms($ids=[],$re){
  3181. foreach ($re as $k=>$v){
  3182. $child=User::where('recom_id',$v->id)->whereNull('deleted_at')->count();
  3183. if ($child){
  3184. $re[$k]->hasChild=true;
  3185. }else{
  3186. $re[$k]->hasChild=false;
  3187. }
  3188. if (in_array($v->id,$ids)){
  3189. $re[$k]->collapsed=false;
  3190. $child=User::where('recom_id',$v->id)->whereNull('deleted_at')->select('level','cre_num','nickname','remark_name','mobile','headimgurl','id','recom_id','realname')->get();
  3191. $re[$k]->child=$child;
  3192. if (count($child)){
  3193. $re[$k]->hasChild=true;
  3194. }else{
  3195. $re[$k]->hasChild=false;
  3196. }
  3197. $this->Getcoms($ids,$re[$k]->child);
  3198. }
  3199. }
  3200. return $re;
  3201. }
  3202. public function Getcomss($ids=[],$re,$arr,$m,$e,$l,$id,$r=0){
  3203. if (!isset($arr[$m])){
  3204. $status=true;
  3205. }else{
  3206. if ($arr[$m]['status']){
  3207. $status=true;
  3208. }else{
  3209. $status=false;
  3210. }
  3211. }
  3212. foreach ($re as $k=>$v){
  3213. $l++;
  3214. $child=User::where('recom_id',$v->id)->whereNull('deleted_at')->count();
  3215. if ($child){
  3216. $re[$k]->hasChild=true;
  3217. }else{
  3218. $re[$k]->hasChild=false;
  3219. }
  3220. $re[$k]->status=$status;
  3221. if (!$status){
  3222. $re[$k]->team=User::where('agent_id',$v->id)->count();
  3223. $num=$this->getUpTeam($v->id);
  3224. $re[$k]->up_team=$num['num'];
  3225. }
  3226. if (!$status){
  3227. $ll=$l-1;
  3228. $cre_num=$v->cre_num;
  3229. $re[$k]->age='';
  3230. $re[$k]->sexs='';
  3231. if ($cre_num){
  3232. $year=date('Y',time());
  3233. $re[$k]->age=$year-mb_substr($cre_num,6,4);
  3234. $sex=mb_substr($cre_num,16,1);
  3235. if ($sex%2==0){
  3236. $re[$k]->sexs='女';
  3237. }else{
  3238. $re[$k]->sexs='男';
  3239. }
  3240. }
  3241. $re[$k]->address=$v->province.$v->city.$v->country;
  3242. $re[$k]->l=$ll;
  3243. $e[]=$re[$k];
  3244. }
  3245. if ($v->id==$id){
  3246. $r=$l;
  3247. }
  3248. if (in_array($v->id,$ids)){
  3249. $m++;
  3250. if (!isset($arr[$m])){
  3251. $re[$k]->collapsed=false;
  3252. $child=User::where('recom_id',$v->id)->whereNull('deleted_at')->select('level','cre_num','nickname','remark_name','mobile','headimgurl','id','recom_id','realname','province','city','country')->get();
  3253. $re[$k]->child=$child;
  3254. if (count($child)){
  3255. $re[$k]->hasChild=true;
  3256. }else{
  3257. $re[$k]->hasChild=false;
  3258. }
  3259. $h=$this->Getcomss($ids,$re[$k]->child,$arr,$m,$e,$l,$id,$r);
  3260. $l=$h[1];
  3261. $r=$h[2];
  3262. $e=$h[3];
  3263. }else{
  3264. if (!$arr[$m]['status']){
  3265. $re[$k]->collapsed=false;
  3266. $child=User::where('recom_id',$v->id)->where('id',$arr[$m]['id'])->whereNull('deleted_at')->select('level','cre_num','nickname','remark_name','mobile','headimgurl','id','recom_id','realname','province','city','country')->get();
  3267. $re[$k]->child=$child;
  3268. if (count($child)){
  3269. $re[$k]->hasChild=true;
  3270. }else{
  3271. $re[$k]->hasChild=false;
  3272. }
  3273. $h=$this->Getcomss($ids,$re[$k]->child,$arr,$m,$e,$l,$id,$r);
  3274. $l=$h[1];
  3275. $r=$h[2];
  3276. $e=$h[3];
  3277. }else{
  3278. $re[$k]->collapsed=false;
  3279. $child=User::where('recom_id',$v->id)->whereNull('deleted_at')->select('level','cre_num','nickname','remark_name','mobile','headimgurl','id','recom_id','realname','province','city','country')->get();
  3280. $re[$k]->child=$child;
  3281. if (count($child)){
  3282. $re[$k]->hasChild=true;
  3283. }else{
  3284. $re[$k]->hasChild=false;
  3285. }
  3286. $h=$this->Getcomss($ids,$re[$k]->child,$arr,$m,$e,$l,$id,$r);
  3287. $l=$h[1];
  3288. $r=$h[2];
  3289. $e=$h[3];
  3290. }
  3291. }
  3292. }
  3293. }
  3294. return [$re,$l,$r,$e];
  3295. }
  3296. public function GetRcomList(Request $request){
  3297. $id=$request->id;
  3298. $user=User::where('recom_id',$id)->select('level','nickname','cre_num','remark_name','mobile','headimgurl','id','recom_id','realname')->get();
  3299. return $this->success($user);
  3300. }
  3301. /**修改战区***/
  3302. public function UpdateWarea(Request $request){
  3303. User::where('id',$request->id)->update(['warea_id'=>$request->input('warea_id')]);
  3304. return $this->success([]);
  3305. }
  3306. /****/
  3307. public function GetUserInfos(Request $request){
  3308. $id=$request->input('id');
  3309. $id_all=[$id];
  3310. $agent_id=User::where('agent_id',$id)->pluck('id')->toArray();
  3311. $id_all=array_merge($id_all,$agent_id);
  3312. $re=User::whereIn('agent_id',$id_all)->select('id','recom_id','agent_id','nickname'
  3313. ,'mobile','level')->with(['recom','agent'])->get();
  3314. $data=[];
  3315. foreach ($re as $k=>$v){
  3316. $data[$k]['昵称']=$v->nickname;
  3317. $data[$k]['手机号']=$v->mobile;
  3318. $data[$k]['级别']=$v->level;
  3319. $data[$k]['上级昵称']=$v->agent->nickname;
  3320. $data[$k]['上级手机号']=$v->agent->mobile;
  3321. $data[$k]['邀请人昵称']=$v->recom->nickname;
  3322. $data[$k]['邀请人手机号']=$v->recom->mobile;
  3323. }
  3324. return $this->success($data);
  3325. }
  3326. //顶级升皇冠
  3327. // public function getAgentLevelInfoTwos($uid,$arr){
  3328. // $list=User::where('recom_id', $uid)->where('level','<',3)->select('id','nickname','realname','mobile','level','recom_id')->get()->toArray();//获取所有邀请人
  3329. // if(count($list)>0){
  3330. // foreach($list as $key=>$val){
  3331. // if($val['level']=='2' || $val['level']=='1'){
  3332. // array_push($arr,$val);
  3333. // $arr=$this->getAgentLevelInfoTwos($val['id'],$arr);
  3334. // }
  3335. // }
  3336. // }
  3337. // return $arr;
  3338. // }
  3339. public function GetUSerAll(){
  3340. $data=User::whereIn('cert_status',[3,6])->where('service_status',0)->whereNull('deleted_at')
  3341. ->where('in_group',1)->select('nickname','mobile','level')->get();
  3342. return $this->success($data);
  3343. }
  3344. /**获取现在和历史邀请人信息**/
  3345. public function GetNowHistory(Request $request){
  3346. $id=$request->input('id');
  3347. $user=User::where('id',$id)->withTrashed()->first();
  3348. $NowRom=User::where('id',$user->recom_id)->select('nickname','id','headimgurl','mobile','realname','level')->withTrashed()->first();
  3349. $user_cert=UserCert::where('user_id',$id)->first();
  3350. $data['now']=$NowRom;
  3351. $data['history']=[];
  3352. $arr=[];
  3353. if ($user_cert){
  3354. if ($user_cert->recom_id==$user->recom_id){
  3355. $data['history']=[];
  3356. }else{
  3357. $recom_user=User::where('id',$user_cert->recom_id)->select('nickname','id','headimgurl','mobile','realname','level','deleted_at')->withTrashed()->first()->toArray();
  3358. if ($recom_user){
  3359. if ($recom_user['deleted_at']){
  3360. $recomuser_cert=AgentOperationLog::where('user_id',$recom_user['id'])->where('type',4)->value('remark');
  3361. $t=['remark'=>$recomuser_cert];
  3362. $t=array_merge($recom_user,$t);
  3363. $arr[]=$t;
  3364. }
  3365. }
  3366. $user_cert=AgentOperationLog::where('user_id',$id)->where('type',3)->get();
  3367. foreach ($user_cert as $k=>$v){
  3368. $num=stripos($v->log,'null');
  3369. if (!is_numeric($num)){
  3370. $log=mb_substr($v->log,13);
  3371. $num=stripos($log,',');
  3372. $ids=mb_substr($log,0,$num);
  3373. $usser=User::where('id',$ids)->select('nickname','id','headimgurl','mobile','realname','level','deleted_at')->withTrashed()->first()->toarray();
  3374. $t=['remark'=>$v->remark];
  3375. $t=array_merge($usser,$t);
  3376. $arr[]=$t;
  3377. }
  3378. }
  3379. $data['history']=$arr;
  3380. }
  3381. }
  3382. return $this->success($data);
  3383. }
  3384. //上传图片
  3385. public function uploadImage(Request $request){
  3386. $file= $request->file('file');
  3387. $path_url='activity_img/user_img';
  3388. $upload= new UploadFilesHandler();
  3389. $result= $upload->save($file, $path_url, null, 'image');
  3390. if($result){
  3391. return $this->success($result['path']);
  3392. }
  3393. return $this->error();
  3394. }
  3395. }