| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016 |
- <?php
- /**
- * 重庆赤晓店信息科技有限公司
- * https://www.chixiaodian.com
- * Copyright (c) 2023 赤店商城 All rights reserved.
- */
- namespace app\modules\admin\controllers;
- use app\jobs\LgCashJob;
- use app\librarys\shareTree\exceptions\LogicException;
- use app\models\AccountLog;
- use app\models\BonusPool;
- use app\models\BonusPoolDetail;
- use app\models\BonusPoolLevel;
- use app\models\Cash;
- use app\models\CashExt;
- use app\models\Cat;
- use app\models\District;
- use app\models\Goods;
- use app\models\Level;
- use app\models\Lg;
- use app\models\OldUserTreePath;
- use app\models\ShareHolderAreaAgentApply;
- use app\models\ShareHolderFrostLog;
- use app\models\ShareHolderLevelLog;
- use app\models\ShareHolderParentOutLog;
- use app\models\ShareHolderProfitGoodsLog;
- use app\models\UserShareMoney;
- use app\models\UserTreePath;
- use app\models\Option;
- use app\models\Order;
- use app\models\OrderDetail;
- use app\models\SaasUser;
- use app\models\ShareDetail;
- use app\models\ShareHolder;
- use app\models\ShareHolderLevel;
- use app\models\ShareHolderOutLog;
- use app\models\Store;
- use app\models\StoreMoneyLog;
- use app\models\User;
- use app\modules\admin\models\BonusPoolSetting;
- use app\utils\Alipay\Alipay;
- use app\utils\Alipay\AlipayProfit;
- use app\utils\LgApi;
- use yii\base\BaseObject;
- use yii\helpers\Json;
- class ShareHolderController extends BaseController
- {
- public $export;
- public function actionAuditList()
- {
- $name = get_params('name');
- $status = get_params('status');
- $mobile = get_params('mobile');
- $query = ShareHolder::find()->alias('sh')->leftJoin(['u' => User::tableName()], 'u.id=sh.user_id')
- ->leftJoin(['su' => SaasUser::tableName()], 'su.mobile=u.binding')
- ->where(['sh.store_id' => get_store_id(), 'sh.is_delete' => 0]);
- if ($name) {
- $query->andWhere(['or', ['like', 'su.name', $name], ['like', 'sh.name', $name], ['like', 'u.nickname', $name]]);
- }
- if ($mobile) {
- $query->andWhere(['sh.mobile' => $mobile]);
- }
- if (in_array($status, [0, 1, 2]) && !is_null($status)) {
- if ($status == 1) {
- $query->andWhere(['in', 'sh.status', [1, 2]]);
- } else {
- $query->andWhere(['sh.status' => $status]);
- }
- }
- $query->select('sh.*, u.nickname, u.avatar_url as avatar')->orderBy('sh.created_at desc, sh.audit_time asc');
- $list = pagination_make($query);
- return $this->asJson([
- 'code' => 0,
- 'msg' => 'success',
- 'data' => [
- 'data' => $list['list'],
- 'pageNo' => $list['pageNo'],
- 'totalCount' => $list['totalCount']
- ]
- ]);
- }
- /**
- * 审核股东
- * @return \yii\web\Response
- */
- public function actionBatchAudit()
- {
- $id = post_params('id');
- $status = post_params('status');
- if (!in_array($status, [1, 2])) {
- return $this->asJson([
- 'code' => 1,
- 'msg' => '参数错误'
- ]);
- }
- if (empty($id) || !is_array($id)) {
- return $this->asJson([
- 'code' => 1,
- 'msg' => '参数错误'
- ]);
- }
- // 判断符合条件不 TODO: 申请股东的条件
- $t = \Yii::$app->db->beginTransaction();
- ShareHolder::updateAll(['status' => $status, 'audit_time' => time()], ['in', 'id', $id]);
- if ($status == 1) {
- foreach ($id as $value) {
- $share_holder = ShareHolder::findOne($value);
- $user = User::findOne($share_holder->user_id);
- if (!$user) {
- $t->rollBack();
- return $this->asJson([
- 'code' => 1,
- 'msg' => '用户不存在'
- ]);
- }
- $share_holder_level = ShareHolderLevel::findOne(['id' => $share_holder->level_id]);
- // 检查股东升级
- // \app\utils\Share\BonusPool::checkLevel(get_store_id());
- \app\utils\Share\BonusPool::ShareHolderLevelJob(get_store_id(), 0, $share_holder->user_id);
- // \app\utils\Share\BonusPool::checkChildHolderUpdateLevel($value, $share_holder->level_id);
- if ($share_holder_level->member_level > $user->level){
- $user->level = $value->member_level;
- \Yii::warning(['------------ 等级更新成功自动更新等级对应会员等级 ------------', [
- '之前等级' . $user->level,
- '之后等级' . $share_holder_level->member_level,
- ]]);
- }
- $user->is_holder = 1;
- if (!$user->save()) {
- $t->rollBack();
- return $this->asJson([
- 'code' => 1,
- 'msg' => '处理失败'
- ]);
- }
- }
- }
- $t->commit();
- return $this->asJson([
- 'code' => 0,
- 'msg' => '审核成功'
- ]);
- }
- /**
- * 等级
- * @return \yii\web\Response
- */
- public function actionLevelList()
- {
- $store_id = get_store_id();
- $name = get_params('name');
- $query = ShareHolderLevel::find()->where(['store_id' => $store_id, 'is_delete' => 0]);
- if ($name) {
- $query->andWhere(['like', 'name', $name]);
- }
- $query->orderBy(['level' => SORT_ASC]);
- $pagination = pagination_make($query);
- $list = $pagination['list'];
- foreach ($list as &$value) {
- $value['condition'] = Json::decode($value['condition']);
- }
- return $this->asJson([
- 'code' => 0,
- 'msg' => 'success',
- 'data' => [
- 'data' => $list,
- 'pageNo' => $pagination['pageNo'],
- 'totalCount' => $pagination['totalCount']
- ],
- ]);
- }
- /**
- * 会员等级启用/禁用
- */
- public function actionLevelStatus()
- {
- $data = post_params();
- $store_id = get_store_id();
- $level = ShareHolderLevel::find()->where(['id' => $data['id'], 'store_id' => $store_id])->one();
- if (!$level) {
- return $this->asJson([
- 'code' => 1,
- 'msg' => '等级不存在',
- ]);
- }
- $level->status = $data['status'];
- if ($data['status'] == 0) {
- $exit = ShareHolder::find()->where(['store_id' => $store_id, 'level_id' => $level->id])->exists();
- if ($exit) {
- return $this->asJson([
- 'code' => 1,
- 'msg' => '该等级下有会员,不可禁用',
- ]);
- }
- }
- if ($level->save()) {
- return $this->asJson([
- 'code' => 0,
- 'msg' => '成功',
- ]);
- } else {
- return $this->asJson([
- 'code' => 1,
- 'msg' => '网络异常',
- ]);
- }
- }
- public function actionUpdateLevel()
- {
- $store_id = get_store_id();
- $level = post_params('level');
- $timeout_days = post_params('timeout_days', 0);
- $id = post_params('id', 0);
- $name = post_params('name');
- $member_level = post_params('member_level');
- $team_reward_rate = post_params('team_reward_rate', 0);
- $range_rate = post_params('range_rate', 0);
- $holder_rate = post_params('holder_rate', 0);
- $equal_rate = post_params('equal_rate', 0);
- $detail = post_params('detail');
- $condition = post_params('condition');
- $share_rate_one = post_params('share_rate_one', 0);
- $share_rate_two = post_params('share_rate_two', 0);
- $share_rate_three = post_params('share_rate_three', 0);
- $old_team_reward_rate = post_params('old_team_reward_rate', 0);
- $old_range_rate = post_params('old_range_rate', 0);
- $old_repeat_range_rate = post_params('old_repeat_range_rate', 0);
- $old_holder_rate = post_params('old_holder_rate', 0);
- $old_equal_rate = post_params('old_equal_rate', 0);
- $old_share_rate_one = post_params('old_share_rate_one', 0);
- $old_share_rate_two = post_params('old_share_rate_two', 0);
- $old_share_rate_three = post_params('old_share_rate_three', 0);
- $range_rate_type = post_params('range_rate_type', 0);
- $is_user_level_range_rate = post_params('is_user_level_range_rate', 0);
- $pic_url = post_params('pic_url', 0);
- $status = post_params('status');
- $is_default = post_params('is_default');
- if (empty($level) || empty($name) || ($range_rate === '' || $range_rate === null) || ($holder_rate === '' || $holder_rate === null) || !in_array($is_default, [0, 1])) {
- return $this->asJson([
- 'code' => 1,
- 'msg' => '参数有误'
- ]);
- }
- $t = \Yii::$app->db->beginTransaction();
- if ($id) {
- $share_holder_level = ShareHolderLevel::findOne($id);
- \Yii::warning([$share_holder_level->level, $level]);
- if ($share_holder_level->level != $level) {
- $count = ShareHolder::find()->where(['is_delete' => 0, 'store_id' => $store_id, 'level_id' => $share_holder_level->id])->count();
- if ($count > 0) {
- return $this->asJson([
- 'code' => 1,
- 'msg' => '当前等级下有会员,禁止修改等级'
- ]);
- }
- $exist = ShareHolderLevel::find()->where(['level' => $level, 'store_id' => $store_id,
- 'is_delete' => 0])->exists();
- if ($exist) {
- return $this->asJson([
- 'code' => 1,
- 'msg' => '会员等级已存在'
- ]);
- }
- }
- if ($share_holder_level->name != $name) {
- $exist_0 = ShareHolderLevel::find()->where(['name' => $name, 'store_id' => $store_id,
- 'is_delete' => 0])->exists();
- if ($exist_0) {
- return $this->asJson([
- 'code' => 1,
- 'msg' => '等级名称重复'
- ]);
- }
- }
- } else {
- $share_holder_level = new ShareHolderLevel();
- $exist = ShareHolderLevel::find()->where(['level' => $level, 'store_id' => $store_id,
- 'is_delete' => 0])->exists();
- if ($exist) {
- return $this->asJson([
- 'code' => 1,
- 'msg' => '会员等级已存在'
- ]);
- }
- $exist_0 = ShareHolderLevel::find()->where(['name' => $name, 'store_id' => $store_id,
- 'is_delete' => 0])->exists();
- if ($exist_0) {
- return $this->asJson([
- 'code' => 1,
- 'msg' => '等级名称重复'
- ]);
- }
- }
- if ($is_default == 1) {
- ShareHolderLevel::updateAll(['is_default' => 0], ['is_default' => 1, 'store_id' => get_store_id(), 'is_delete' => 0]);
- } else {
- $share_level = ShareHolderLevel::findOne(['is_default' => 1, 'store_id' => get_store_id(), 'is_delete' => 0]);
- if (!$share_level) {
- $t->rollBack();
- return $this->asJson([
- 'code' => 1,
- 'msg' => '请设置默认等级'
- ]);
- }
- }
- $share_level_list = ShareHolderLevel::find()->where([ 'store_id' => $store_id, 'is_delete' => 0])->all();
- $is_exist_independent_team = 0;
- $is_exist_independent_team_id = 0;
- foreach ($share_level_list as $k => $v) {
- $share_level_list_condition = Json::decode($v->condition);
- if (!isset($share_level_list_condition['shareholder'])) {
- continue;
- }
- $shareholder = $share_level_list_condition['shareholder'];
- if ($shareholder['independent_team']) {
- $is_exist_independent_team = 1;
- $is_exist_independent_team_id = $v->id;
- break;
- }
- }
- $current_independent_team = $condition['shareholder']['independent_team'];
- if ($is_exist_independent_team == 1 && $current_independent_team == 1 && $is_exist_independent_team_id !== $id) {
- return $this->asJson([
- 'code' => 1,
- 'msg' => '只能一个等级开启独立团队'
- ]);
- }
- if ($condition['self']['is_open'] == '1' && $condition['self']['value']['price'] == '0') {
- foreach ($share_level_list as $k => $v) {
- $share_level_list_condition = Json::decode($v->condition);
- if (!isset($share_level_list_condition['self'])) {
- continue;
- }
- $shareholder = $share_level_list_condition['self'];
- if ($shareholder['is_open'] && $shareholder['value']['price'] === '0' && $v->id != $id) {
- return $this->asJson([
- 'code' => 1,
- 'msg' => '只能一个等级开启消费金额为0'
- ]);
- }
- }
- }
- if (intval($condition['amount_total']['is_open']) && $condition['amount_total']['value'] <= 0) {
- return $this->asJson([
- 'code' => 1,
- 'msg' => '请填写佣金总额达标条件'
- ]);
- }
- $share_holder_level->is_default = $is_default;
- $share_holder_level->store_id = $store_id;
- $share_holder_level->level = $level;
- $share_holder_level->timeout_days = (int)$timeout_days;
- $share_holder_level->name = $name;
- $share_holder_level->member_level = $member_level;
- $share_holder_level->share_rate_one = $share_rate_one;
- $share_holder_level->share_rate_two = $share_rate_two;
- $share_holder_level->share_rate_three = $share_rate_three;
- $share_holder_level->team_reward_rate = $team_reward_rate;
- $share_holder_level->range_rate = $range_rate;
- $share_holder_level->holder_rate = $holder_rate;
- $share_holder_level->equal_rate = $equal_rate;
- $share_holder_level->detail = $detail;
- $share_holder_level->condition = Json::encode($condition);
- $share_holder_level->pic_url = $pic_url;
- $share_holder_level->old_team_reward_rate = $old_team_reward_rate;
- $share_holder_level->old_range_rate = $old_range_rate;
- $share_holder_level->old_repeat_range_rate = $old_repeat_range_rate;
- $share_holder_level->old_holder_rate = $old_holder_rate;
- $share_holder_level->old_equal_rate = $old_equal_rate;
- $share_holder_level->old_share_rate_one = $old_share_rate_one;
- $share_holder_level->old_share_rate_two = $old_share_rate_two;
- $share_holder_level->old_share_rate_three = $old_share_rate_three;
- $share_holder_level->is_user_level_range_rate = $is_user_level_range_rate;
- if (!is_null($range_rate_type)) {
- $share_holder_level->range_rate_type = $range_rate_type;
- }
- if (in_array($status, [0, 1]) && !is_null($status)) {
- $share_holder_level->status = $status;
- }
- if ($share_holder_level->save()) {
- $t->commit();
- return $this->asJson([
- 'code' => 0,
- 'msg' => '成功'
- ]);
- } else {
- $t->rollBack();
- return $this->asJson([
- 'code' => 1,
- 'msg' => '创建失败'
- ]);
- }
- }
- /**
- * 会员等级删除
- */
- public function actionDeleteLevel()
- {
- $data = post_params();
- $store_id = get_store_id();
- $level = ShareHolderLevel::findOne(['id' => $data['id'], 'store_id' => $store_id, 'is_delete' => 0]);
- if (!$level) {
- return $this->asJson([
- 'code' => 1,
- 'msg' => '等级不存在',
- ]);
- }
- $exist = ShareHolder::find()->where(['store_id' => $store_id, 'level_id' => $level->id, 'is_delete' => 0])->exists();
- if ($exist) {
- return $this->asJson([
- 'code' => 1,
- 'msg' => '该等级下有会员,不可删除'
- ]);
- }
- $level->is_delete = 1;
- if ($level->save()) {
- return $this->asJson([
- 'code' => 0,
- 'msg' => '成功',
- ]);
- }
- return $this->asJson([
- 'code' => 1,
- 'msg' => '网络异常',
- ]);
- }
- public function actionLevel()
- {
- $list = ShareHolderLevel::find()->where(['store_id' => get_store_id(), 'is_delete' => 0])->orderBy('created_at desc')->asArray()->all();
- $out_level = 0;
- $out_num = 0;
- foreach ($list as $item) {
- $condition = json_decode($item['condition'], true);
- if ($condition['shareholder']['is_open'] == 1 && $condition['shareholder']['independent_team'] == 1 && $condition['shareholder']['num'] > 0) {
- $out_level = $item['id'];
- $out_num = $condition['shareholder']['num'];
- break;
- }
- }
- return $this->asJson([
- 'code' => 0,
- 'data' => [
- 'list' => $list,
- 'out_level' => (int)$out_level,
- 'out_num' => (int)$out_num,
- ],
- ]);
- }
- /**
- * 股东列表
- * @return \yii\web\Response
- */
- public function actionList()
- {
- $nickname = get_params('nickname');
- $name = get_params('name');
- $mobile = get_params('mobile');
- $level_id = get_params('level_id');
- $parent = get_params('parent');
- $query = ShareHolder::find()->alias('sh')->where(['sh.store_id' => get_store_id(), 'sh.is_delete' => 0, 'sh.status' => 1, 'u.is_delete' => 0])
- ->andWhere(['IS NOT', 'u.id', NULL])
- ->leftJoin(['shl' => ShareHolderLevel::tableName()], 'shl.id=sh.level_id and shl.is_delete = 0')
- ->leftJoin(['u' => User::tableName()], 'u.id=sh.user_id')
- ->leftJoin(['su' => SaasUser::tableName()], 'su.mobile=u.binding');
- if ($nickname) {
- $query->andWhere(['like', 'u.nickname', $nickname]);
- }
- if ($name) {
- $query->andWhere(['like', 'sh.name', $name]);
- }
- if ($mobile) {
- $query->andWhere(['sh.mobile' => $mobile]);
- }
- if ($level_id) {
- $query->andWhere(['sh.level_id' => $level_id]);
- }
- $query->select('sh.id, sh.name, sh.mobile, u.nickname, u.avatar_url as avatar, shl.name level_name, sh.audit_time, u.parent_id, u.old_parent_id, sh.user_id, sh.level_id, sh.province_id, sh.city_id, sh.district_id, sh.agent_type, sh.agent_rate, sh.is_out')->orderBy('sh.created_at desc, sh.audit_time desc');
- if (!$parent) {
- $list = pagination_make($query);
- $data = $list['list'];
- $pageNo = $list['pageNo'];
- $count = $list['totalCount'];
- } else {
- $pageNo = get_params('pageNo', 1);
- $pageSize = get_params('pageSize', 20);
- $list = $query->asArray()->all();
- $new_list = [];
- foreach ($list as $value) {
- $user = User::find()->alias('u')->where(['u.store_id' => get_store_id(), 'u.id' => $value['parent_id']])
- ->leftJoin(['su' => SaasUser::tableName()], 'su.mobile=u.binding')->select('su.name')->asArray()->one();
- if (false !== strpos($user['name'], $parent)) {
- $new_list[] = $value;
- }
- }
- $count = count($new_list);
- $data = [];
- if (!empty($new_list)) {
- $data = array_slice($new_list, ($pageNo - 1) * $pageSize, $pageSize);
- }
- }
- $team_num = Option::get('team_num', get_store_id(), 'bonus_pool', 0)['value'];
- // 处理数据
- foreach ($data as &$v) {
- $team_list = User::findOld()->alias('u')->childs($v['user_id'], true, $team_num)->andWhere(['u.store_id' => get_store_id()])->select('u.id')->column();
- $team_order_price = Order::find()
- ->where(['store_id' => get_store_id(), 'user_id' => $team_list, 'is_delete' => 0, 'is_pay' => 1, 'trade_status' => [Order::ORDER_FLOW_NO_SEND, Order::ORDER_FLOW_SEND, Order::ORDER_FLOW_CONFIRM]])
- ->select('pay_price')
- ->sum('pay_price');
- $v['team_order_price'] = $team_order_price ?? 0;
- // parent_id
- $user = User::findOne($v['parent_id']);
-
- if ($user) {
- $v['parent_id'] = $user->id;
- } else {
- $v['parent_id'] = 0;
- }
- $v['level_id'] = $v['level_id'] == 0 ? null : $v['level_id'];
- $v['level_name'] = !isset($v['level_name']) || empty($v['level_name']) ? '普通会员' : $v['level_name'];
- $v['parent_name'] = '/';
- if ($v['parent_id'] > 0) {
- $user = User::findOne($v['parent_id']);
- $parent_name = $user ? SaasUser::findOne(['mobile' => $user->binding]) : null;
- $v['parent_name'] = $parent_name ? $parent_name->name : '/';
- }
- $oldUser = User::findOne($v['old_parent_id']);
- $v['old_parent_name'] = '/';
- if ($oldUser) {
- $saas_user = SaasUser::findOne(['mobile' => $oldUser->binding]);
- if ($saas_user) {
- $v['old_parent_id'] = $oldUser->id;
- $v['old_parent_name'] = $saas_user->name;
- }
- }
- // $old_parent_name = SaasUser::findOne($v['old_parent_id']);
- // $v['old_parent_name'] = $old_parent_name ? $old_parent_name->name : '/';
- // // 下级所有的人数
- // $v['level_count'] = count(User::find()->childs($v['user_id'])->andWhere(['store_id' => get_store_id()])->asArray()->all()) ?: 0;
- // // 一级人数
- // $level_one = User::find()->childs($v['user_id'], false, 1)->andWhere(['store_id' => get_store_id()])->select('binding, nickname, avatar_url')->asArray()->all();
- // $v['level_one_count'] = count($level_one) ?: 0;
- // 极差佣金
- $v['range_profit'] = ShareDetail::find()->where(['is_delete' => 0, 'store_id' => get_store_id(), 'user_id' => $v['user_id'], 'type' => [ShareDetail::TYPE_RANGE_PROFIT, ShareDetail::TYPE_RANGE_PROFIT_OLD], 'is_send' => 1])->sum('money');
- // 股东分红
- $v['holder_profit'] = ShareDetail::find()->where(['is_delete' => 0, 'store_id' => get_store_id(), 'user_id' => $v['user_id'], 'type' => ShareDetail::TYPE_HOLDER_PROFIT, 'is_send' => 1])->sum('money');
- }
- foreach ($data as &$v) {
-
- $user = User::findOne($v['user_id']);
- $v['nickname'] = $user->nickname;
- $v['avatar'] = $user->avatar_url;
- if($user->binding){
- $saas_user = SaasUser::findOne(['mobile' => $user->binding]);
- }else{
- if($user->alipay_open_id){
- $saas_user = SaasUser::findOne(['ali_user_id' => $user->alipay_open_id]);
- }
- }
- $profitGoods = null;
- //获取当前购买最大升级产品的记录
- $profitGoodsLog = ShareHolderProfitGoodsLog::find()->alias('l')->where(['l.user_id' => $v['user_id'], 'l.is_switch' => 1])
- ->leftJoin(['o' => Order::tableName()], 'l.order_id = o.id')->andWhere(['o.is_sale' => 1])
- ->orderBy('l.goods_price desc')->select('l.goods_id')->asArray()->one();
- if (!empty($profitGoodsLog['goods_id'])) {
- $profitGoods_ = Goods::findOne($profitGoodsLog['goods_id']);
- $profitGoods = [
- 'name' => $profitGoods_->name,
- 'cover_pic' => $profitGoods_->cover_pic
- ];
- }
- $v['profit_goods'] = $profitGoods;
- // if($saas_user){
- // $v['nickname'] = $saas_user->name;
- // $v['avatar'] = $saas_user->avatar;
- // }
- //展示助力出局下级
- $v['child_user'] = [];
- if ((int)$v['is_out'] === 1) {
- $v['child_user'] = ShareHolderOutLog::find()->alias('sh')->where(['sh.parent_user_id' => $v['user_id']])
- ->leftJoin(['u' => User::tableName()], 'sh.child_user_id = u.id')
- ->leftJoin(['su' => SaasUser::tableName()], 'u.binding = su.mobile')
- ->select('su.name, su.avatar')->asArray()->all();
- }
- }
- return $this->asJson([
- 'code' => 0,
- 'msg' => 'success',
- 'data' => [
- 'data' => $data,
- 'pageNo' => intval($pageNo),
- 'totalCount' => $count
- ]
- ]);
- }
- /**
- * 获取团队订单列表
- */
- public function actionTeamOrderList()
- {
- try {
- $user_id = get_params('user_id');
- $order_no = get_params('order_no');
- $name = get_params('name');
- $team_num = Option::get('team_num', get_store_id(), 'bonus_pool', 0)['value'];
- $team_list = User::findOld()->alias('u')->childs($user_id, true, $team_num)->andWhere(['u.store_id' => get_store_id()])->select('u.id')->column();
- $query = Order::find()->alias('o')
- ->leftJoin(['u' => User::tableName()], 'u.id=o.user_id')
- ->leftJoin(['su' => SaasUser::tableName()], 'su.mobile=u.binding')
- ->where(['o.store_id' => get_store_id(), 'o.user_id' => $team_list, 'o.is_delete' => 0, 'is_pay' => 1, 'o.trade_status' => [Order::ORDER_FLOW_NO_SEND, Order::ORDER_FLOW_SEND, Order::ORDER_FLOW_CONFIRM]]);
- if ($order_no) {
- $query->andWhere(['LIKE', 'o.order_no', $order_no]);
- }
- if ($name) {
- $query->andWhere(['LIKE', 'su.name', $name]);
- }
- $query->select('su.name nickname, o.id, o.pay_time, o.order_no, o.pay_price, o.express_price, o.total_price, o.is_pay, o.trade_status, o.created_at')->orderBy('o.created_at desc')->groupBy('o.id');
- $data = pagination_make($query);
- foreach ($data['list'] as &$value) {
- $value['pay_time'] = $value['pay_time'] > 0 ? date("Y-m-d H:i:s", $value['pay_time']) : '-';
- $value['created_at'] = $value['created_at'] > 0 ? date("Y-m-d H:i:s", $value['created_at']) : '-';
- $value['is_pay'] = (int)$value['is_pay'];
- $value['trade_status'] = (int)$value['trade_status'];
- $value['goods_list'] = OrderDetail::find()->where(['order_id' => $value['id']])->select('goods_name, num, attr, pic, total_price')->asArray()->all();
- }
- return $this->asJson([
- 'code' => 0,
- 'msg' => '获取成功',
- 'data' => [
- 'list' => $data['list'],
- 'pageNo' => $data['pageNo'],
- 'totalCount' => $data['totalCount']
- ]
- ]);
- } catch (\Exception $e) {
- return [
- 'code' => 0,
- 'msg' => $e->getMessage(),
- 'data' => [
- 'data' => [],
- 'pageNo' => 0,
- 'totalCount' => 0
- ]
- ];
- }
- }
- /**
- * 原推荐关系列表
- * @return void
- * @author Syan mzsongyan@gmail.com
- * @date 2022-07-12
- */
- public function actionOldShareList()
- {
- $store_id = get_store_id();
- $id = get_params('id');
- $name = get_params('nickname');
- $mobile = get_params('mobile');
- $query = ShareHolder::find()->alias('sh')
- ->leftJoin(['u' => User::tableName()], 'u.id = sh.user_id')
- ->leftJoin(['shl' => ShareHolderLevel::tableName()], 'shl.id = sh.level_id and shl.is_delete = 0')
- ->leftJoin(['su' => SaasUser::tableName()], 'su.mobile = u.binding')
- ->where([
- 'u.is_delete' => 0,
- 'sh.is_delete' => 0,
- 'u.store_id' => $store_id,
- 'sh.store_id' => $store_id,
- 'sh.status' => 1,
- ]);
- if ($id) {
- $query->andWhere(['u.old_parent_id' => $id]);
- }
- if ($name) {
- $query->andWhere(['like', 'u.nickname', $name]);
- }
- if ($mobile) {
- $query->andWhere(['like', 'u.binding', $mobile]);
- }
-
- $query->select('u.nickname as user_name, u.avatar_url as user_avatar, sh.id, sh.name, u.binding as user_mobile, u.old_parent_id, u.id as user_id, shl.name as level_name');
- $list = pagination_make($query);
- foreach ($list['list'] as &$item) {
- $old_parent = User::findOne($item['old_parent_id']);
- if ($old_parent) {
- $item['old_parent_name'] = $old_parent->nickname;
- // $old_parent_user = SaasUser::find()->where(['mobile' => $old_parent->binding])->select('name, avatar')->asArray()->one();
- // if ($old_parent_user) {
- // $item['old_parent_name'] = $old_parent_user['name'];
- // } else {
- // $item['old_parent_name'] = '';
- // }
- } else {
- $item['old_parent_name'] = '';
- }
- $item['count'] = User::find()->alias('u')
- ->leftJoin(['sh' => ShareHolder::tableName()], 'sh.user_id = u.id')
- ->where(['sh.is_delete' => 0, 'sh.status' => 1])
- ->andWhere([
- 'u.old_parent_id' => $item['user_id']
- ])
- ->count();
- }
- return $this->asJson([
- 'code' => 0,
- 'msg' => 'success',
- 'data' => [
- 'data' => $list['list'],
- 'pageNo' => $list['pageNo'],
- 'totalCount' => $list['totalCount'],
- ]
- ]);
- }
- /**
- * 链动推荐关系列表
- * @return void
- * @author Syan mzsongyan@gmail.com
- * @date 2022-07-12
- */
- public function actionChainShareList()
- {
- $store_id = get_store_id();
- $id = get_params('id');
- $name = get_params('nickname');
- $mobile = get_params('mobile');
- $query = ShareHolder::find()->alias('sh')
- ->leftJoin(['u' => User::tableName()], 'u.id = sh.user_id')
- ->leftJoin(['shl' => ShareHolderLevel::tableName()], 'shl.id = sh.level_id')
- ->leftJoin(['su' => SaasUser::tableName()], 'su.mobile = u.binding')
- ->where([
- 'u.is_delete' => 0,
- 'sh.is_delete' => 0,
- 'u.store_id' => $store_id,
- 'sh.store_id' => $store_id,
- 'sh.status' => 1,
- ]);
- if ($id) {
- $query->andWhere(['u.parent_id' => $id]);
- }
- if ($name) {
- $query->andWhere(['like', 'su.name', $name]);
- }
- if ($mobile) {
- $query->andWhere(['like', 'u.binding', $mobile]);
- }
-
- $query->select('u.nickname as user_name, u.avatar_url as user_avatar, sh.id, sh.name, u.binding as user_mobile, u.parent_id, u.id as user_id, shl.name as level_name');
- $list = pagination_make($query);
- foreach ($list['list'] as &$item) {
- $parent = User::findOne($item['parent_id']);
- if ($parent) {
- $parent_user = SaasUser::find()->where(['mobile' => $parent->binding])->select('name, avatar')->asArray()->one();
- if ($parent_user) {
- $item['parent_name'] = $parent_user['name'];
- } else {
- $item['parent_name'] = '';
- }
- } else {
- $item['parent_name'] = '';
- }
- $item['count'] = User::find()->alias('u')
- ->leftJoin(['sh' => ShareHolder::tableName()], 'sh.user_id = u.id')
- ->where(['sh.is_delete' => 0, 'sh.status' => 1])
- ->andWhere([
- 'u.parent_id' => $item['user_id']
- ])
- ->count();
- }
- return $this->asJson([
- 'code' => 0,
- 'msg' => 'success',
- 'data' => [
- 'data' => $list['list'],
- 'pageNo' => $list['pageNo'],
- 'totalCount' => $list['totalCount'],
- ]
- ]);
- }
- /**
- * 下一级列表
- * @return \yii\web\Response
- */
- public function actionLevelOneUser()
- {
- $name = get_params('name');
- $user_id = get_params('user_id');
- $level_id = get_params('level_id');
- $pageNo = get_params('pageNo', 1);
- $pageSize = get_params('pageSize', 20);
- $list = User::find()->alias('u')->leftJoin(['su' => SaasUser::tableName()], 'su.mobile=u.binding')->where(['u.store_id' => get_store_id(), 'u.parent_id' => $user_id])
- ->select('u.binding, u.nickname, u.avatar_url, u.id, su.name, su.avatar, u.is_holder')->orderBy('u.is_holder desc')->asArray()->all();
- $new_list = [];
- foreach ($list as &$value) {
- $value['level_name'] = '';
- $value['level_one_count'] = 0;
- $value['level_count'] = 0;
- $value['range_profit'] = 0;
- $value['holder_profit'] = 0;
- $share_holder = ShareHolder::findOne(['user_id' => $value['id'], 'is_delete' => 0, 'status' => 1]);
- $level = -1;
- if ($share_holder) {
- $level = $share_holder->level_id;
- $value['level_name'] = ShareHolderLevel::findOne($level)->name;
- // 下级所有的人数
- $v['level_count'] = count(User::find()->childs($value['id'])->andWhere(['store_id' => get_store_id()])->asArray()->all()) ?: 0;
- // 一级人数
- $level_one = User::find()->childs($value['id'], false, 1)->andWhere(['store_id' => get_store_id()])->select('binding, nickname, avatar_url')->asArray()->all();
- $v['level_one_count'] = count($level_one) ?: 0;
- // 极差佣金
- $v['range_profit'] = ShareDetail::find()->where(['is_delete' => 0, 'store_id' => get_store_id(), 'user_id' => $value['id'], 'type' => [ShareDetail::TYPE_RANGE_PROFIT, ShareDetail::TYPE_RANGE_PROFIT_OLD], 'is_send' => 1])->sum('money');
- // 股东分红
- $v['holder_profit'] = ShareDetail::find()->where(['is_delete' => 0, 'store_id' => get_store_id(), 'user_id' => $value['id'], 'type' => ShareDetail::TYPE_HOLDER_PROFIT, 'is_send' => 1])->sum('money');
- }
- if ($name || $level_id) {
- if ($name && !$level_id) {
- if (false !== strpos($value['name'], $name) || false !== strpos($value['nickname'], $name)) {
- $new_list[] = $value;
- }
- } else if ($level_id && !$name) {
- if ($level == $level_id) {
- $new_list[] = $value;
- }
- } else {
- if ((false !== strpos($value['name'], $name) || false !== strpos($value['nickname'], $name)) && $level == $level_id) {
- $new_list[] = $value;
- }
- }
- } else {
- $new_list[] = $value;
- }
- }
- $count = count($new_list);
- $data = [];
- if (!empty($new_list)) {
- $data = array_slice($new_list, ($pageNo - 1) * $pageSize, $pageSize);
- }
- return $this->asJson([
- 'code' => 0,
- 'msg' => 'success',
- 'data' => [
- 'data' => $data,
- 'pageNo' => intval($pageNo),
- 'totalCount' => $count
- ]
- ]);
- }
- /**
- * 编辑
- * @return \yii\web\Response
- */
- public function actionEdit()
- {
- $id = post_params('id');
- $type = post_params('type');
- $value = post_params('value');
- $saas_user_id = post_params('saas_user_id');
- $old_saas_user_id = post_params('old_saas_user_id');
- $province_id = post_params('province_id');
- $city_id = post_params('city_id');
- $district_id = post_params('district_id');
- $agent_type = post_params('agent_type', 0);
- $agent_rate = post_params('agent_rate', 0);
- $is_out = post_params('is_out', 0);
- $out_users = post_params('out_users', []);
- // TODO: 申请股东的条件
- $t = \Yii::$app->db->beginTransaction();
- $share_holder = ShareHolder::findOne($id);
- if (!$share_holder) {
- return $this->asJson([
- 'code' => 1,
- 'msg' => '数据不存在'
- ]);
- }
- // 删除
- if ($type == 1) {
- $share_holder->is_delete = 1;
- if (!$share_holder->save()) {
- $t->rollBack();
- return $this->asJson([
- 'code' => 1,
- 'msg' => '删除异常'
- ]);
- }
- $user = User::findOne($share_holder->user_id);
- $user->is_holder = 0;
- if (!$user->save()) {
- $t->rollBack();
- return $this->asJson([
- 'code' => 1,
- 'msg' => '处理异常'
- ]);
- }
- $t->commit();
- return $this->asJson([
- 'code' => 0,
- 'msg' => '删除成功'
- ]);
- }
- // 编辑等级
- $old_parent_id = 0;
- if ($type == 2) {
- $share_user = User::findOne($share_holder->user_id);
- $parent_user_old_parent_id = $share_user->parent_id;
- $oldParentChange = 0;
- $parentChange = 0;
- $beforeOldParentId = $share_user->old_parent_id;
- $beforeParentId = $share_user->parent_id;
- if ($old_saas_user_id) {
- $old_parent_id = $share_user->old_parent_id;
- try {
- // $old_saas_user = SaasUser::findOne($old_saas_user_id);
- // $old_user = User::findOne(['store_id' => get_store_id(), 'binding' => $old_saas_user->mobile]);
- $old_user = User::findOne(['store_id' => get_store_id(), 'id' => $old_saas_user_id]);
- if (!$old_user) {
- $t->rollBack();
- return $this->asJson([
- 'code' => 1,
- 'msg' => '未找到该用户'
- ]);
- }
- $share_user->old_parent_id != $old_user->id && $oldParentChange = 1;
- $share_user->old_parent_id = $old_user->id;
- } catch (LogicException $e) {
- $t->rollBack();
- return $this->asJson([
- 'code' => 1,
- 'msg' => $e->getMessage()
- ]);
- }
- }
- if ($saas_user_id) {
- try {
- $user = User::findOne(['store_id' => get_store_id(), 'id' => $saas_user_id]);
- if (!$user) {
- $t->rollBack();
- return $this->asJson([
- 'code' => 1,
- 'msg' => '未找到该用户'
- ]);
- }
- $share_user->parent_id != $user->id && $parentChange = 1;
- $share_user->parent_id = $user->id;
- } catch (LogicException $e) {
- $t->rollBack();
- return $this->asJson([
- 'code' => 1,
- 'msg' => $e->getMessage()
- ]);
- }
- }
- // 代理
- if (in_array($agent_type, [1, 2, 3])) {
- if ($agent_type == 1 && empty($province_id)) {
- $t->rollBack();
- return $this->asJson([
- 'code' => 1,
- 'msg' => '请选择区域代理地区'
- ]);
- }
- if ($agent_type == 2 && (empty($province_id) || empty($city_id))) {
- $t->rollBack();
- return $this->asJson([
- 'code' => 1,
- 'msg' => '请选择区域代理地区'
- ]);
- }
- if ($agent_type == 3 && (empty($province_id) && empty($city_id) && empty($district_id))) {
- $t->rollBack();
- return $this->asJson([
- 'code' => 1,
- 'msg' => '请选择区域代理地区'
- ]);
- }
- $is_multi_agent = Option::get('is_multi_agent', $share_holder->store_id, 'bonus_pool_area_agent', 0)['value'];
- if ($agent_type == 1) {
- $province_share = ShareHolder::find()->where(['province_id' => $province_id, 'agent_type' => 1, 'is_delete' => 0, 'store_id' => get_store_id()])
- ->andWhere(['!=', 'id', $share_holder->id])->one();
- if ($province_share && !$is_multi_agent) {
- $t->rollBack();
- return $this->asJson([
- 'code' => 1,
- 'msg' => '已存在省代理'
- ]);
- }
- }
- if ($agent_type == 2) {
- $city_share = ShareHolder::find()->where(['city_id' => $city_id, 'agent_type' => 2, 'is_delete' => 0, 'store_id' => get_store_id()])->andWhere(['!=', 'id', $share_holder->id])->one();
- if ($city_share && !$is_multi_agent) {
- $t->rollBack();
- return $this->asJson([
- 'code' => 1,
- 'msg' => '已存在市代理'
- ]);
- }
- }
- if ($agent_type == 3) {
- $district_share = ShareHolder::find()->where(['district_id' => $district_id, 'agent_type' => 3, 'is_delete' => 0, 'store_id' => get_store_id()])->andWhere(['!=', 'id', $share_holder->id])->one();
- if ($district_share && !$is_multi_agent) {
- $t->rollBack();
- return $this->asJson([
- 'code' => 1,
- 'msg' => '已存在区域代理'
- ]);
- }
- }
- $share_holder->province_id = $province_id;
- $share_holder->city_id = $city_id;
- $share_holder->district_id = $district_id;
- $share_holder->agent_rate = $agent_rate;
- $share_holder->agent_type = $agent_type;
- }
- if ($agent_type == 0) {
- $share_holder->agent_type = 0;
- }
- $old_share_holder_level_id = $share_holder->level_id;
- $old_share_holder_level = ShareHolderLevel::findOne(['id' => $old_share_holder_level_id]);
- $share_holder->level_id = $value;
- if (!$share_holder->save()) {
- $t->rollBack();
- return $this->asJson([
- 'code' => 1,
- 'msg' => '处理异常'
- ]);
- }
- $share_holder_level = ShareHolderLevel::findOne(['id' => $value]);
- $open = true;
- $condition = Json::decode($share_holder_level->condition);
- if (isset($condition['shareholder'])) {
- $shareholder = $condition['shareholder'];
- if ($shareholder['independent_team']) {
- $open = false;
- $share_user->parent_id = 0;
- }
- }
- //todo 提交bug说是后台修改没有记录 增加修改记录
- if (intval($old_share_holder_level_id) !== intval($value)) {
- $level_log = new ShareHolderLevelLog();
- $level_log->before_level = $old_share_holder_level->level;
- $level_log->after_level = $share_holder_level->level;
- $level_log->user_id = $share_holder->user_id;
- $level_log->store_id = $share_holder->store_id;
- if ($is_out == 1 && count($out_users) == 0) {
- $level_log->desc = "后台修改等级, 没有助推下级";
- } else {
- $level_log->desc = "后台修改等级";
- }
- if (!$level_log->save()) {
- return $this->asJson([
- 'code' => 1,
- 'msg' => '股东等级更新失败'
- ]);
- }
- }
- if ($share_holder_level->member_level > $share_user->level){
- $share_user->level = $share_holder_level->member_level;
- \Yii::warning(['------------ 编辑等级对应会员等级 ------------', [
- '之前等级' . $share_user->level,
- '之后等级' . $share_holder_level->member_level,
- ]]);
- }
- if (!$share_user->save()) {
- $t->rollBack();
- \Yii::warning(['------------ 编辑等级对应会员等级更新失败 ------------', $share_user->errors]);
- return $this->asJson([
- 'code' => 1,
- 'msg' => '处理异常'
- ]);
- }
- $oldParentChange && \app\utils\Share\BonusPool::addShareHolderParentOutLog($share_user, $beforeOldParentId, ShareHolderParentOutLog::getConditionName(11), 1);
- $parentChange && \app\utils\Share\BonusPool::addShareHolderParentOutLog($share_user, $beforeParentId, ShareHolderParentOutLog::getConditionName(11), 0);
- // if ($old_parent_id > 0 && $old_parent_id !== $share_user->old_parent_id) {
- // $addShareHolderParentOutLog = \app\utils\Share\BonusPool::addShareHolderParentOutLog($share_user, $old_parent_id, "后台修改数据更改上级", 1);
- // if ($addShareHolderParentOutLog['code'] != 0) {
- // $t->rollBack();
- // \Yii::warning(['------------ 编辑股东旧上级记录更新失败 ------------', $addShareHolderParentOutLog['msg']]);
- // return $this->asJson([
- // 'code' => 1,
- // 'msg' => '处理异常'
- // ]);
- // };
- // }
- try {
- // 检查下级升级
- // \app\utils\Share\BonusPool::checkLevel(get_store_id(), 1);
- \app\utils\Share\BonusPool::ShareHolderLevelJob(get_store_id(), 1, $share_holder->user_id);
- // \app\utils\Share\BonusPool::checkChildHolderUpdateLevel($share_holder->user_id, $share_holder->level_id);
- } catch (\Exception $e) {
- $t->rollBack();
- return $this->asJson([
- 'code' => 1,
- 'msg' => '处理异常'
- ]);
- }
- if ($is_out == 1) {
- $share_holder->is_out = 1;
- $share_holder->save();
- if (count($out_users) > 0) {
-
- foreach ($out_users as $user_id) {
- $user_item = User::findOne($user_id);
-
- $child = ShareHolder::findOne(['user_id' => $user_id, 'is_delete' => 0]);
- if ($user_item) {
- $out_log = ShareHolderOutLog::findOne([
- 'parent_user_id' => $share_holder->user_id,
- 'child_user_id' => $user_id
- ]);
- if (!$out_log) {
- $out_log = new ShareHolderOutLog();
- $out_log->parent_user_id = $share_holder->user_id;
- $out_log->child_user_id = $user_id;
- }
- $out_log->status = $child->is_out;
- $out_log->save();
- if ($child && intval($child->is_out)) {
- continue;
- }
- $beforeParentId = $user_item->parent_id;
- $user_item->parent_id = $parent_user_old_parent_id;
- if (!$user_item->save()) {
- $t->rollBack();
- return $this->asJson([
- 'code' => 1,
- 'msg' => '助力出局的股东改变关系失败'
- ]);
- }
- \app\utils\Share\BonusPool::addShareHolderParentOutLog($user_item, $beforeParentId, "后台修改数据使股东上级出局");
- //记录出局关系
- //判断滑落
- $share_detail_arr = [
- ShareDetail::TYPE_HOLDER_PROFIT,
- ShareDetail::TYPE_RANGE_PROFIT,
- ShareDetail::TYPE_TWO_PLUS_ONE_SHARE_PROFIT,
- ShareDetail::TYPE_TWO_PLUS_ONE_SHARE_TEAM_PROFIT,
- ShareDetail::TYPE_RANGE_PROFIT_OLD,
- ShareDetail::TYPE_TWO_PLUS_ONE_SHARE_TEAM_PROFIT_OLD,
- ShareDetail::TYPE_RANGE_PROFIT_OLD_USER_LEVEL
- ];
- $share_detail = ShareDetail::find()->alias('sd')
- ->leftJoin(['o' => Order::tableName()], 'o.id = sd.type_id')
- ->where(['o.user_id' => $user_item->id, 'sd.type' => $share_detail_arr, 'sd.user_id' => $share_user->id])
- ->asArray()->one();
- if ($share_detail) {
- ShareDetail::handleChildData($share_detail['id']);
- }
- }
- // TODO 后台修改股东等级 下级不变动上级问题
- }
- }
- }
- $t->commit();
- return $this->asJson([
- 'code' => 0,
- 'msg' => '修改成功'
- ]);
- }
- }
- public function actionAdd()
- {
- $store_id = get_store_id();
- $name = post_params('name');
- $user_id = post_params('user_id');
- $mobile = post_params('mobile');
- $province = post_params('province', 0);
- $city = post_params('city', 0);
- $district = post_params('district', 0);
- $town = post_params('town', 0);
- $address = post_params('address', '');
- $is_area = post_params('is_area');
- $agent_type = post_params('agent_type');
- $agent_rate = (float)post_params('agent_rate');
- $agent_rate_status = post_params('agent_rate_status');
- //获取省市区
- $province_name = District::findOne($province)->name ?: '';
- $city_name = District::findOne($city)->name ?: '';
- $district_name = District::findOne($district)->name ?: '';
- $town_name = District::findOne($town)->name ?: '';
- if (!$is_area) {
- if (empty($name) || empty($mobile) || empty($province) || empty($city) || empty($district) || empty($address)
- || empty($province_name) || empty($city_name) || empty($district_name)) {
- // return $this->asJson([
- // 'code' => 1,
- // 'msg' => '参数错误'
- // ]);
- }
- }
- $t = \Yii::$app->db->beginTransaction();
- $where = ['store_id' => $store_id, 'user_id' => $user_id, 'is_delete' => 0, 'status' => [1, 0]];
- if ($is_area) {
- $where = array_merge($where, ['agent_type' => [1, 2, 3]]);
- }
- $admin = ShareHolder::find()->where($where)->one();
- if ($admin) {
- return $this->asJson([
- 'code' => 1,
- 'msg' => '当前已成为股东或存在待审核记录'
- ]);
- }
- $is_multi_agent = Option::get('is_multi_agent', $store_id, 'bonus_pool_area_agent', 0)['value'];
- if ($is_area) {
- $user_area_agent = ShareHolderAreaAgentApply::findOne(
- [
- 'store_id' => $store_id,
- 'user_id' => $user_id,
- 'is_delete' => 0,
- 'status' => [0, 1]
- ]
- );
- if ($user_area_agent) {
- return $this->asJson([
- 'code' => 1,
- 'msg' => '当前已成为区域代理或存在待审核记录'
- ]);
- }
- $where = [
- 'store_id' => $store_id,
- 'is_delete' => 0,
- 'status' => [0, 1],
- 'agent_type' => $agent_type,
- 'province_id' => $province
- ];
- switch ($agent_type) {
- case 2:
- $where = array_merge($where, ['city_id' => $city]);
- break;
- case 3:
- $where = array_merge($where, ['city_id' => $city, 'district_id' => $district]);
- break;
- case 4:
- $where = array_merge($where, ['city_id' => $city, 'district_id' => $district, 'town_id' => $town]);
- break;
- }
- $other_area_agent = ShareHolderAreaAgentApply::findOne($where);
- if ($other_area_agent && !$is_multi_agent) {
- return $this->asJson([
- 'code' => 1,
- 'msg' => '当前存在同区域待审核记录'
- ]);
- }
- $other_share_holder = ShareHolder::findOne($where);
- if ($other_share_holder && !$is_multi_agent) {
- return $this->asJson([
- 'code' => 1,
- 'msg' => '当前存在同区域代理'
- ]);
- }
- }
- //获取手机号
- $user = User::findOne($user_id);
- $binding = $user->binding;
- //保存信息
- $share_level = ShareHolderLevel::findOne(['is_default' => 1, 'store_id' => get_store_id(), 'is_delete' => 0]);
- if (!$share_level) {
- return $this->asJson([
- 'code' => 1,
- 'msg' => '需要添加等级'
- ]);
- }
- $share_holder = new ShareHolder();
- if ($is_area) {
- $share_holder_ = ShareHolder::findOne(['store_id' => get_store_id(), 'user_id' => $user_id, 'is_delete' => 0]);
- if ($share_holder_) {
- $share_holder = $share_holder_;
- } else {
- $share_holder->audit_time = time();
- $share_holder->level_id = $share_level->id;
- }
- if($share_holder->agent_type == 0){
- $share_holder->agent_time = time();
- }
- $share_holder->agent_type = $agent_type;
- $share_holder->agent_rate = $agent_rate;
- $share_holder->agent_rate_status = $agent_rate_status;
- }
-
- $share_holder->store_id = get_store_id();
- $share_holder->user_id = $user_id;
- $share_holder->name = $name;
- $share_holder->address = $address;
- $share_holder->mobile = $binding;
- $share_holder->province_id = $share_holder->province = $province;
- $share_holder->city_id = $share_holder->city = $city;
- $share_holder->district_id = $share_holder->district = $district;
- $share_holder->town_id = $town;
- $share_holder->province_name = $province_name;
- $share_holder->city_name = $city_name;
- $share_holder->district_name = $district_name;
- $share_holder->town_name = $town_name;
- $share_holder->status = 1;
- if (!$share_holder->save()) {
- $t->rollBack();
- return $this->asJson([
- 'code' => 1,
- 'msg' => '股东处理失败'
- ]);
- }
- if ($share_level->member_level > $user->level){
- $user->level = $share_level->member_level;
- \Yii::warning(['------------ 添加等级对应会员等级 ------------', [
- '之前等级' . $user->level,
- '之后等级' . $share_level->member_level,
- ]]);
- }
- $user->is_holder = 1;
- if (!$user->save()) {
- $t->rollBack();
- return $this->asJson([
- 'code' => 1,
- 'msg' => '处理失败'
- ]);
- }
- $t->commit();
- return $this->asJson([
- 'code' => 0,
- 'msg' => '添加成功'
- ]);
- }
- /**
- * 极差分润订单
- * @return \yii\web\Response
- */
- public function actionShareOrder()
- {
- $order_no = get_params('order_no');
- $name = get_params('name');
- $type = get_params('type');// 区分链动
- $is_area = get_params('is_area'); //只显示区域分红
- $query = Order::find()->alias('o')->leftJoin(['sd' => ShareDetail::tableName()], 'sd.type_id = o.id')
- ->leftJoin(['u' => User::tableName()], 'u.id=o.user_id')
- ->leftJoin(['su' => SaasUser::tableName()], 'su.mobile=u.binding')
- ->where(['o.store_id' => get_store_id()])
- ->andWhere(['<>', 'o.trade_status', 1]);
- if ($name) {
- $query->andWhere(['like', 'su.name', $name]);
- }
- $type_where = ['in', 'sd.type', [2, 5, 6, 7, 8, 9]];
- if ($type) {
- $type_where = ['in', 'sd.type', [2, 5, 6, 9]];
- }
- if ($is_area) {
- $type_where = ['AND', ['sd.type' => 3], ['>', 'sd.money', '0']];
- }
- $type_where = ['OR', $type_where, ['OR', ['>', 'holder_first_price', 0], ['>', 'holder_second_price', 0], ['>', 'holder_third_price', 0],
- ['>', 'old_holder_first_price', 0], ['>', 'old_holder_second_price', 0], ['>', 'old_holder_third_price', 0]]];
- $query->andWhere($type_where);
- if ($order_no) {
- $query->andWhere(['o.order_no' => $order_no]);
- }
- $query->select('o.id, o.pay_time created_at, sd.money, o.id type_id, su.name nickname, o.pay_time, o.order_no, o.id order_id, o.holder_first_price,
- o.holder_second_price, o.holder_third_price, o.old_holder_first_price, o.old_holder_second_price, o.old_holder_third_price,o.express_price')
- ->orderBy('o.id desc')->groupBy('o.id');
- $list = pagination_make($query);
- foreach ($list['list'] as &$value) {
- $value['order_pay_price'] = 0;
- $order = Order::find()->select('pay_price')->where(['order_no' => $value['order_no']])->one();
- if ($order) {
- $value['order_pay_price'] = $order->pay_price;
- }
- $value['goods_list'] = OrderDetail::find()->where(['order_id' => $value['type_id']])->select('goods_name, num, attr, pic, total_price')->asArray()->all();
- if ($type) {
- $value['range_profit'] = ShareDetail::find()->where(['type' => ShareDetail::TYPE_RANGE_PROFIT, 'type_id' => $value['type_id']])->sum('money');
- } else {
- $value['range_profit'] = ShareDetail::find()->where(['type' => [ShareDetail::TYPE_RANGE_PROFIT, ShareDetail::TYPE_RANGE_PROFIT_OLD, ShareDetail::TYPE_RANGE_PROFIT_OLD_USER_LEVEL], 'type_id' => $value['type_id']])->sum('money');
- }
- $value['agent_profit'] = ShareDetail::find()->where(['type' => ShareDetail::TYPE_AREA_PROFIT, 'type_id' => $value['type_id']])->sum('money');
- $share_holder_price = bcadd($value['old_holder_first_price'],
- bcadd($value['old_holder_second_price'],
- bcadd($value['old_holder_third_price'],
- bcadd($value['holder_first_price'],
- bcadd($value['holder_second_price'], $value['holder_third_price'], 2)
- , 2)
- , 2)
- , 2)
- , 2);
- $value['share_holder_price'] = '¥' . $share_holder_price;
- }
- return $this->asJson([
- 'code' => 0,
- 'msg' => 'success',
- 'data' => [
- 'data' => $list['list'],
- 'pageNo' => $list['pageNo'],
- 'totalCount' => $list['totalCount']
- ]
- ]);
- }
- /**
- * 佣金列表
- * @return \yii\web\Response
- */
- public function actionProfitList()
- {
- $order_no = get_params('order_no');
- $order_id = get_params('order_id', 0);
- $name = get_params('name');
- $buyer = get_params('buyer');
- $level_id = get_params('level_id');
- $pay_start_time = get_params('pay_start_time');
- $pay_end_time = get_params('pay_end_time');
- $send_start_time = get_params('send_start_time');
- $send_end_time = get_params('send_end_time');
- $profit_type = get_params('profit_type');
- $type = get_params('type', 0);
- $store_id = get_store_id();
- $query = ShareDetail::find()->alias('sd')->leftJoin(['o' => Order::tableName()], 'o.id=sd.type_id AND sd.type <> 1')
- ->leftJoin(['u' => User::tableName()], 'u.id=o.user_id')
- ->leftJoin(['su' => SaasUser::tableName()], 'su.mobile=u.binding')
- ->leftJoin(['u1' => User::tableName()], 'u1.id=sd.user_id')
- ->leftJoin(['su1' => SaasUser::tableName()], 'su1.mobile=u1.binding')
- ->leftJoin(['sh' => ShareHolder::tableName()], 'sh.user_id=u1.id')
- ->leftJoin(['shl' => ShareHolderLevel::tableName()], 'shl.id=sh.level_id and shl.is_delete = 0')
- ->where([
- 'sd.store_id' => $store_id,
- 'u.store_id' => $store_id,
- 'u1.store_id' => $store_id,
- 'sh.store_id' => $store_id,
- 'sd.is_delete' => 0,
- 'sh.is_delete' => 0
- ]);
- $query->andWhere(['in', 'sd.type', [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]]);
- if ($type) {
- $query->andWhere(['in', 'sd.type', [2, 5, 6, 9]]);
- } else {
- if ($profit_type == ShareDetail::TYPE_AREA_PROFIT) {
- $query->andWhere(['sd.type' => ShareDetail::TYPE_AREA_PROFIT])->andWhere(['>', 'sd.money', 0]);
- }
- if ($profit_type == ShareDetail::TYPE_RANGE_PROFIT) {
- $query->andWhere(['sd.type' => [ShareDetail::TYPE_RANGE_PROFIT, ShareDetail::TYPE_RANGE_PROFIT_OLD, ShareDetail::TYPE_RANGE_PROFIT_OLD_USER_LEVEL]]);
- }
- if (!$profit_type) {
- $query->andWhere(['<>', 'sd.type', ShareDetail::TYPE_AREA_PROFIT]);
- }
- }
- if ($name) {
- $query->andWhere([
- 'or',
- ['like', 'su1.name', $name],
- ['like', 'u1.nickname', $name],
- ]);
- }
- if ($level_id) {
- $query->andWhere(['sh.level_id' => $level_id]);
- }
- if ($order_id) {
- $query->andWhere(['sd.type_id' => $order_id]);
- }
- if ($order_no) {
- $query->andWhere(['o.order_no' => $order_no]);
- }
- if ($buyer) {
- $query->andWhere([
- 'or',
- ['like', 'su.name', $buyer],
- ['like', 'u.nickname', $buyer],
- ]);
- }
- if ($pay_start_time) {
- $query->andWhere(['>=', 'o.pay_time', strtotime($pay_start_time)]);
- }
- if ($pay_end_time) {
- $query->andWhere(['<=', 'o.pay_time', strtotime($pay_end_time)]);
- }
- if ($send_start_time) {
- $query->andWhere(['>=', 'sd.send_time', strtotime($send_start_time)]);
- }
- if ($send_end_time) {
- $query->andWhere(['<=', 'sd.send_time', strtotime($send_end_time)]);
- }
- $query->select('sd.*, su.name buyer_name, u.nickname buyer_nickname, o.pay_time, o.order_no, u1.nickname holder_nickname, u1.avatar_url holder_avatar_url, shl.name level_name, o.order_no, o.pay_price, sh.agent_type')->orderBy('sd.created_at desc');
- $query->groupBy('sd.id');
- $range_name = Option::get('range_name', get_store_id(), 'bonus_pool', '')['value'];
- $holder_name = Option::get('holder_name', get_store_id(), 'bonus_pool', '')['value'];
- $area_name = Option::get('area_name', get_store_id(), 'bonus_pool', '')['value'];
- $old_range_name = Option::get('old_range_name', get_store_id(), 'bonus_pool', '')['value'];
- $direct_range_name = Option::get('direct_range_name', get_store_id(), 'bonus_pool', '')['value'];
- $old_add_holder_name = Option::get('old_add_holder_name', get_store_id(), 'bonus_pool', '')['value'];
- $list = pagination_make($query);
- foreach ($list['list'] as &$value) {
- $value['agent_type'] = (int)$value['agent_type'];
- $value['profit_name'] = '分红';
- if ($value['type'] == ShareDetail::TYPE_HOLDER_PROFIT) {
- // $value['profit_name'] = $holder_name ?: '股东分红';
- $value['profit_name'] = $holder_name ?: '股东分红';
- $value['order_no'] = '奖金池ID:' . $value['type_id'];
- $value['buyer_name'] = '';
- $value['buyer_nickname'] = '';
- $value['pay_price'] = '';
- }
- if ($value['type'] == ShareDetail::TYPE_RANGE_PROFIT) {
- // $value['profit_name'] = $range_name ?: '级差分红';
- $value['profit_name'] = $range_name ?: '级差分红';
- }
- if ($value['type'] == ShareDetail::TYPE_RANGE_PROFIT_OLD) {
- // $value['profit_name'] = $range_name ?: '级差分红(原关系)';
- $value['profit_name'] = $old_range_name ?: '级差分红(原关系)';
- }
- if ($value['type'] == ShareDetail::TYPE_TWO_PLUS_ONE_SHARE_TEAM_PROFIT_OLD) {
- // $value['profit_name'] = $range_name ?: '直属团队收益分成(原关系)';
- $value['profit_name'] = $old_add_holder_name ?: '直属团队收益分成(原关系)';
- }
- if ($value['type'] == ShareDetail::TYPE_TWO_PLUS_ONE_SHARE_TEAM_PROFIT) {
- // $value['profit_name'] = $range_name ?: '直属团队收益分成';
- $value['profit_name'] = $direct_range_name ?: '直属团队收益分成';
- }
- if ($value['type'] == ShareDetail::TYPE_AREA_PROFIT) {
- // $value['profit_name'] = $area_name ?: '区域分红';
- $value['profit_name'] = $area_name ?: '区域分红';
- }
- if ($value['type'] == ShareDetail::TYPE_FROST_PROFIT) {
- // $value['profit_name'] = $range_name ?: '冻结金额释放';
- $value['profit_name'] = '冻结金额释放';
- }
- if ($value['type'] == ShareDetail::TYPE_RANGE_PROFIT_OLD_USER_LEVEL) {
- // $value['profit_name'] = $range_name ?: '冻结金额释放';
- $value['profit_name'] = '商城会员等级分红';
- }
- }
- return $this->asJson([
- 'code' => 0,
- 'msg' => 'success',
- 'data' => [
- 'data' => $list['list'],
- 'pageNo' => $list['pageNo'],
- 'totalCount' => $list['totalCount']
- ]
- ]);
- }
- /**
- * 分销佣金列表
- * @return \yii\web\Response
- */
- public function actionShareProfitList()
- {
- try {
- $order_no = get_params('order_no');
- $name = get_params('name');
- $buyer = get_params('buyer');
- $pay_start_time = get_params('pay_start_time');
- $pay_end_time = get_params('pay_end_time');
- $query = UserShareMoney::find()->alias('usm')->leftJoin(['o' => Order::tableName()], 'o.id=usm.order_id')
- ->leftJoin(['u' => User::tableName()], 'u.id=o.user_id')
- ->leftJoin(['su' => SaasUser::tableName()], 'su.mobile=u.binding')
- ->leftJoin(['u1' => User::tableName()], 'u1.id=usm.user_id')
- ->leftJoin(['su1' => SaasUser::tableName()], 'su1.mobile=u1.binding')
- ->leftJoin(['sh' => ShareHolder::tableName()], 'sh.user_id=u1.id')
- ->leftJoin(['shl' => ShareHolderLevel::tableName()], 'shl.id=sh.level_id and shl.is_delete=0')
- ->where(['usm.store_id' => get_store_id(), 'usm.is_delete' => 0, 'usm.type' => 2, 'usm.source' => [1, 2, 3, 4], 'o.trade_status' => [
- Order::ORDER_FLOW_NO_SEND, Order::ORDER_FLOW_SEND, Order::ORDER_FLOW_CONFIRM
- ]])
- ->groupBy("usm.id");
- if ($name) {
- $query->andWhere([
- 'or',
- ['like', 'su1.name', $name],
- ['like', 'u1.nickname', $name],
- ]);
- }
- if ($order_no) {
- $query->andWhere(['o.order_no' => $order_no]);
- }
- if ($buyer) {
- $query->andWhere([
- 'or',
- ['like', 'su.name', $buyer],
- ['like', 'u.nickname', $buyer],
- ]);
- }
- if ($pay_start_time) {
- $query->andWhere(['>=', 'o.pay_time', strtotime($pay_start_time)]);
- }
- if ($pay_end_time) {
- $query->andWhere(['<=', 'o.pay_time', strtotime($pay_end_time)]);
- }
- $query->select('usm.*, su.name buyer_name, u.nickname buyer_nickname, o.pay_time, o.order_no, u1.nickname holder_nickname, u1.avatar_url holder_avatar_url, shl.name level_name, o.order_no, o.pay_price')->orderBy('usm.created_at desc');
- // $query->groupBy('usm.order_id');
- $list = pagination_make($query);
- return $this->asJson([
- 'code' => 0,
- 'msg' => 'success',
- 'data' => [
- 'data' => $list['list'],
- 'pageNo' => $list['pageNo'],
- 'totalCount' => $list['totalCount']
- ]
- ]);
- } catch (\Exception $e) {
- return $this->asJson([
- 'code' => 1,
- 'msg' => $e->getMessage()
- ]);
- }
- }
- //奖金池新增
- public function actionPoolSave()
- {
- try {
- $store_id = get_store_id();
- $start_time = input_params('start_time');
- $end_time = input_params('end_time');
- $money = input_params('money');
- $level_id = input_params('level_id');
- $pool = new BonusPool();
- $pool->store_id = $store_id;
- $pool->start_time = strtotime($start_time);
- $pool->end_time = strtotime($end_time);
- if(!$pool->save()){
- throw new \Exception(array_shift($pool->getFirstErrors()));
- }
- $poolLevel = new BonusPoolLevel();
- $poolLevel->store_id = $store_id;
- $poolLevel->pool_id = $pool->id;
- $poolLevel->money = $money;
- $poolLevel->level_id = $level_id;
- $poolLevel->user_id = '[]';
- $poolLevel->is_send = 0;
- $poolLevel->send_time = 0;
- if(!$poolLevel->save()){
- throw new \Exception(array_shift($poolLevel->getFirstErrors()));
- }
- return $this->asJson([
- 'code' => 0,
- 'msg' => '操作成功',
- ]);
-
- } catch (\Exception $e) {
- return $this->asJson([
- 'code' => 1,
- 'msg' => $e->getMessage()
- ]);
- }
-
- }
- /**
- * 奖金池列表
- * @return \yii\web\Response
- */
- public function actionPool()
- {
- $send_start_time = get_params('send_start_time');
- $send_end_time = get_params('send_end_time');
- $pool_time = get_params('pool_time');
- $level_id = get_params('level_id');
- $store_id = get_store_id();
- $query = BonusPoolLevel::find()->alias('bpl')->leftJoin(['bp' => BonusPool::tableName()], 'bp.id=bpl.pool_id')
- ->leftJoin(['shl' => ShareHolderLevel::tableName()], 'shl.id=bpl.level_id')
- ->where(['bpl.store_id' => $store_id]);
- if ($send_start_time) {
- $query->andWhere(['>=', 'bp.send_time', strtotime($send_start_time)]);
- }
- if ($send_end_time) {
- $query->andWhere(['<=', 'bp.send_time', strtotime($send_end_time)]);
- }
- if ($pool_time) {
- $query->andWhere(['and', ['>=', 'bp.start_time', strtotime($pool_time)], ['<=', 'bp.end_time', strtotime($pool_time)]]);
- }
- if ($level_id) {
- $query->andWhere(['bpl.level_id' => $level_id]);
- }
- $query->select('bp.start_time, bp.end_time, bpl.*, shl.name level_name')->orderBy('bpl.created_at desc');
- $list = pagination_make($query);
- $high_level_join_average = intval(Option::get('high_level_join_average', $store_id, 'bonus_pool', 0)['value']);
- $dividends_method = intval(Option::get('dividends_method', $store_id, 'bonus_pool', 0)['value']);
- foreach ($list['list'] as &$value) {
- $value['time'] = date('Y年m月d日', $value['start_time']) . '-' . date('Y年m月d日', $value['end_time']);
- $value['user_list'] = [];
- if ($value['is_send']) {
- $user_ids = Json::decode($value['user_id']);
- } else {
- $share_holder_level = $value['level_id'];
- if ($high_level_join_average && !$dividends_method) {
- $shareHolderLevelOnce = ShareHolderLevel::findOne(['is_delete' => 0, 'id' => $value['level_id']]);
- $share_holder_level = ShareHolderLevel::find()->where(['store_id' => $shareHolderLevelOnce->store_id, 'is_delete' => 0])
- ->andWhere(['>=', 'level', $shareHolderLevelOnce->level])->select('id')->column();
- }
- $share_holder_arr = ShareHolder::find()->where([
- 'store_id' => get_store_id(),
- 'is_delete' => 0,
- 'status' => 1,
- 'level_id' => $share_holder_level
- ])->select('user_id')->asArray()->all();
- if (empty($share_holder_arr)) {
- $user_ids = [];
- } else {
- $user_ids = array_column($share_holder_arr, 'user_id');
- if ($dividends_method) {
- $pool_level = BonusPoolLevel::findOne($value['id']);
- $poolUserMoney = \app\utils\Share\BonusPool::poolUserMoney($pool_level, $user_ids);
- if ($poolUserMoney) {
- $user_ids_ = [];
- foreach ($poolUserMoney as $poolUserIndex => $poolUserItem) {
- if ($poolUserItem > 0) {
- $user_ids_[] = $poolUserIndex;
- }
- }
- $user_ids = $user_ids_;
- } else {
- $user_ids = [];
- }
- }
- }
- }
- $value['user_list'] = $user_ids;
- // if (!empty($user_ids)) {
- // foreach ($user_ids as $v) {
- // $user = User::findOne($v);
- // $saas_user = SaasUser::findOne(['mobile' => $user->binding]);
- // $share_holder = ShareHolder::findOne(['user_id' => $v]);
- // $share_holder_level = ShareHolderLevel::findOne($share_holder->level_id);
- // $money = ShareDetail::find()->where(['type' => ShareDetail::TYPE_HOLDER_PROFIT, 'type_id' => $value['pool_id'], 'user_id' => $v])->sum('money');
- // $value['user_list'][] = [
- // 'name' => $saas_user->name ?: $user->nickname,
- // 'avatar' => $saas_user->avatar ?: $user->avatar_url,
- // 'level_name' => $share_holder_level->name,
- // 'money' => $money,
- // 'send_time' => $value['send_time']
- // ];
- // }
- // }
- }
- return $this->asJson([
- 'code' => 0,
- 'msg' => 'success',
- 'data' => [
- 'data' => $list['list'],
- 'pageNo' => $list['pageNo'],
- 'totalCount' => $list['totalCount']
- ]
- ]);
- }
- /**
- * 帮扶基金
- * @return \yii\web\Response
- */
- public function actionShareFrostLogList()
- {
- try {
- $order_no = get_params('order_no');
- $is_send = get_params('is_send', -1);
- $send_start_time = get_params('send_start_time');
- $send_end_time = get_params('send_end_time');
- $query = ShareHolderFrostLog::find()->alias('shf')
- ->leftJoin(['o' => Order::tableName()], 'shf.order_id = o.id')
- ->leftJoin(['u' => User::tableName()], 'u.id=shf.child_user_id')
- ->leftJoin(['su' => SaasUser::tableName()], 'su.mobile=u.binding')
- ->leftJoin(['u1' => User::tableName()], 'u1.id=shf.parent_user_id')
- ->leftJoin(['su1' => SaasUser::tableName()], 'su1.mobile=u1.binding')
- ->leftJoin(['sh' => ShareHolder::tableName()], 'sh.user_id=u1.id')
- ->leftJoin(['shl' => ShareHolderLevel::tableName()], 'shl.id=sh.level_id')
- ->where(['u.store_id' => get_store_id()])
- ->andWhere(['<>', 'o.trade_status', 1]);
- // $query = ShareDetail::find()->alias('sd')->leftJoin(['o' => Order::tableName()], 'o.id=sd.type_id')
- // ->leftJoin(['u' => User::tableName()], 'u.id=o.user_id')
- // ->leftJoin(['su' => SaasUser::tableName()], 'su.mobile=u.binding')
- // ->leftJoin(['u1' => User::tableName()], 'u1.id=sd.user_id')
- // ->leftJoin(['su1' => SaasUser::tableName()], 'su1.mobile=u1.binding')
- // ->leftJoin(['sh' => ShareHolder::tableName()], 'sh.user_id=u1.id')
- // ->leftJoin(['shl' => ShareHolderLevel::tableName()], 'shl.id=sh.level_id')
- // ->where(['sd.store_id' => get_store_id(), 'sd.is_delete' => 0, 'sd.type' => [6, 8]]);
- if ($order_no) {
- $query->andWhere(['o.order_no' => $order_no]);
- }
- if ($is_send >= 0 && in_array($is_send, [0, 1])) {
- $query->andWhere(['shf.status' => $is_send]);
- }
- if ($send_start_time) {
- $query->andWhere(['>=', 'shf.created_at', strtotime($send_start_time)]);
- }
- if ($send_end_time) {
- $query->andWhere(['<=', 'shf.created_at', strtotime($send_end_time)]);
- }
- $query->select('shf.*, su.avatar buyer_avatar, su.name buyer_name, u.nickname buyer_nickname, u1.nickname holder_name, u1.avatar_url holder_avatar, u1.nickname holder_nickname, u1.avatar_url holder_avatar_url, shl.name level_name, o.order_no')->orderBy('shf.created_at desc')->groupBy('shf.id');
- $list = pagination_make($query);
- foreach ($list['list'] as &$item) {
- $item['created_at'] = date("Y-m-d H:i:s", $item['created_at']);
- $item['send_time'] = $item['updated_at'] ? date("Y-m-d H:i:s", $item['updated_at']) : '-';
- $item['order_no'] = $item['order_no'] ?: '-';
- $item['money'] = $item['amount'];
- }
- return $this->asJson([
- 'code' => 0,
- 'msg' => 'success',
- 'data' => [
- 'data' => $list['list'],
- 'pageNo' => $list['pageNo'],
- 'totalCount' => $list['totalCount']
- ]
- ]);
- } catch (\Exception $e) {
- return $this->asJson([
- 'code' => 1,
- 'msg' => $e->getMessage()
- ]);
- }
- }
- /**
- * 复购冻结佣金列表
- * @return \yii\web\Response
- */
- public function actionFugouFrostLogList()
- {
- try {
- $order_no = get_params('order_no');
- $is_send = get_params('is_send', -1);
- $send_start_time = get_params('send_start_time');
- $send_end_time = get_params('send_end_time');
- $query = \app\models\ShareHolderFugouFrostLog::find()->alias('shf')
- ->leftJoin(['o' => Order::tableName()], 'shf.order_id = o.id')
- ->leftJoin(['u' => User::tableName()], 'u.id=shf.user_id')
- ->leftJoin(['su' => SaasUser::tableName()], 'su.mobile=u.binding')
- ->where(['u.store_id' => get_store_id()]);
- if ($order_no) {
- $query->andWhere(['o.order_no' => $order_no]);
- }
- if ($is_send >= 0 && in_array($is_send, [0, 1])) {
- $query->andWhere(['shf.status' => $is_send]);
- }
- if ($send_start_time) {
- $query->andWhere(['>=', 'shf.created_at', strtotime($send_start_time)]);
- }
- if ($send_end_time) {
- $query->andWhere(['<=', 'shf.created_at', strtotime($send_end_time)]);
- }
- $query->select('shf.*, u.avatar_url avatar, u.nickname name, o.order_no')->orderBy('shf.created_at desc')->groupBy('shf.id');
- $list = pagination_make($query);
- foreach ($list['list'] as &$item) {
- $item['created_at'] = date("Y-m-d H:i:s", $item['created_at']);
- $item['send_time'] = $item['updated_at'] ? date("Y-m-d H:i:s", $item['updated_at']) : '-';
- $item['order_no'] = $item['order_no'] ?: '-';
- $item['money'] = $item['amount'];
- }
- return $this->asJson([
- 'code' => 0,
- 'msg' => 'success',
- 'data' => [
- 'data' => $list['list'],
- 'pageNo' => $list['pageNo'],
- 'totalCount' => $list['totalCount']
- ]
- ]);
- } catch (\Exception $e) {
- return $this->asJson([
- 'code' => 1,
- 'msg' => $e->getMessage()
- ]);
- }
- }
- /**
- * 下一级列表
- * @return \yii\web\Response
- */
- public function actionPoolMan()
- {
- $name = get_params('name');
- $id = get_params('id');
- $level_id = get_params('level_id');
- $store_id = get_store_id();
- $bonus_pool_level = BonusPoolLevel::findOne($id);
- if (!$bonus_pool_level) {
- return $this->asJson([
- 'code' => 1,
- 'msg' => '未找到该等级奖金池'
- ]);
- }
- $user_ids = [];
- if ($bonus_pool_level->is_send) {
- $user_ids = Json::decode($bonus_pool_level->user_id);
- } else {
- $share_holder_level = $bonus_pool_level->level_id;
- $high_level_join_average = intval(Option::get('high_level_join_average', $store_id, 'bonus_pool', 0)['value']);
- $dividends_method = intval(Option::get('dividends_method', $store_id, 'bonus_pool', 0)['value']);
- if ($high_level_join_average && !$dividends_method) {
- $shareHolderLevelOnce = ShareHolderLevel::findOne(['is_delete' => 0, 'id' => $bonus_pool_level->level_id]);
- $share_holder_level = ShareHolderLevel::find()->where(['store_id' => $shareHolderLevelOnce->store_id, 'is_delete' => 0])
- ->andWhere(['>=', 'level', $shareHolderLevelOnce->level])->select('id')->column();
- }
- $share_holder_arr = ShareHolder::find()->where([
- 'store_id' => $store_id,
- 'is_delete' => 0,
- 'status' => 1,
- 'level_id' => $share_holder_level
- ])->select('user_id')->asArray()->all();
- if (!empty($share_holder_arr)) {
- $user_ids = array_column($share_holder_arr, 'user_id');
- if ($dividends_method) {
- $pool_level = BonusPoolLevel::findOne($bonus_pool_level->id);
- $poolUserMoney = \app\utils\Share\BonusPool::poolUserMoney($pool_level, $user_ids);
- if ($poolUserMoney) {
- $user_ids_ = [];
- foreach ($poolUserMoney as $poolUserIndex => $poolUserItem) {
- if ($poolUserItem > 0) {
- $user_ids_[] = $poolUserIndex;
- }
- }
- $user_ids = $user_ids_;
- } else {
- $user_ids = [];
- }
- }
- }
- }
- //获取期数时间内显示用户下单金额以及金额是否达标
- //获取当前期数时间
- $bonus_pool = BonusPool::findOne($bonus_pool_level->pool_id);
- $query = ShareHolder::find()->alias('sh')
- ->leftJoin(['shl' => ShareHolderLevel::tableName()], 'shl.id=sh.level_id')
- ->leftJoin(['u' => User::tableName()], 'u.id=sh.user_id')
- ->leftJoin(['su' => SaasUser::tableName()], 'su.mobile=u.binding')
- ->where(['sh.store_id' => get_store_id()])->andWhere(['in', 'sh.user_id', $user_ids]);
- if ($name) {
- $query->andWhere([
- 'or',
- ['like', 'u.nickname', $name],
- ['like', 'su.name', $name]
- ]);
- }
- if ($level_id) {
- $query->andWhere(['sh.level_id' => $level_id]);
- }
- $query->select('u.nickname, u.avatar_url, su.name, su.avatar, shl.name level_name, sh.id, sh.user_id')->orderBy('sh.audit_time desc')->groupBy('sh.user_id');
- $list = pagination_make($query);
- foreach ($list['list'] as &$value) {
- //根据当前期数时间,获取用户商城下单金额
- $value['pay_price'] = BonusPoolDetail::find()->alias('b')->leftJoin(['o' => Order::tableName()], 'b.order_id = o.id')
- ->where(['o.user_id' => $value['user_id']])
- ->andWhere(['and', ['>=', 'b.created_at', $bonus_pool->start_time], ['<', 'b.created_at', $bonus_pool->end_time]])
- ->groupBy('o.id')
- ->select('o.pay_price')->column();
- $value['pay_price'] = sprintf("%.2f", array_sum($value['pay_price']));
- // $value['pay_price'] = Order::find()->where(['user_id' => $value['user_id'], 'is_sale' => 1])
- // ->andWhere(['and', ['>=', 'updated_at', $bonus_pool->start_time], ['<', 'updated_at', $bonus_pool->end_time]])
- // ->select('pay_price')->groupBy('user_id')->sum('pay_price') ?? 0;
- //判断是否达标
- $dividends_condition = Option::get('dividends_condition', get_store_id(), 'bonus_pool', 0)['value'];
- $value['is_standard'] = 0;
- if ($dividends_condition <= $value['pay_price']) {
- $value['is_standard'] = 1;
- }
- $share_detail = ShareDetail::find()->where(['is_delete' => 0, 'store_id' => get_store_id(), 'user_id' => $value['user_id'], 'type' => ShareDetail::TYPE_HOLDER_PROFIT, 'type_id' => $bonus_pool_level->id])->one();
- $value['profit'] = $share_detail->money && $value['is_standard'] === 1 ? $share_detail->money : '0.00';
- $value['is_send'] = $share_detail->is_send ?? 0;
- $value['send_time'] = $share_detail->send_time;
- }
- return $this->asJson([
- 'code' => 0,
- 'msg' => 'success',
- 'data' => [
- 'data' => $list['list'],
- 'pageNo' => $list['pageNo'],
- 'totalCount' => $list['totalCount']
- ]
- ]);
- }
- /**
- * 奖金池发放
- * @return \yii\web\Response
- */
- public function actionSendPool()
- {
- $pool_level_id = post_params('id');
- $bonus_pool_level = BonusPoolLevel::findOne($pool_level_id);
- if (!$bonus_pool_level || $bonus_pool_level->is_send == 1) {
- return $this->asJson([
- 'code' => 1,
- 'msg' => '未找到数据或已发放'
- ]);
- }
- $bonus_pool = BonusPool::findOne($bonus_pool_level->pool_id);
- // 判断是否到发放时间
- if ($bonus_pool->end_time > time()) {
- return $this->asJson([
- 'code' => 1,
- 'msg' => '未到奖金池结束时间,暂时不能发放'
- ]);
- }
- $res = \app\utils\Share\BonusPool::poolShare($pool_level_id);
- return $this->asJson($res);
- }
- public function actionPoolDetail()
- {
- $order_no = get_params('order_no');
- $pay_start_time = get_params('pay_start_time');
- $pay_end_time = get_params('pay_end_time');
- $create_start_time = get_params('create_start_time');
- $create_end_time = get_params('create_end_time');
- $pool_level_id = get_params('pool_level_id');
- $store_id = get_store_id();
- $query = BonusPoolDetail::find()->alias('bpd')->leftJoin(['o' => Order::find()->select('id, order_no, pay_price, pay_time')->andWhere(['store_id' => $store_id])->union(\app\plugins\scanCodePay\models\Order::find()->select('id, order_no, (total_price+take_price) pay_price, created_at pay_time')->andWhere(['store_id' => $store_id]))], 'o.id=bpd.order_id');
- $query->andWhere(['bpd.store_id' => $store_id]);
- if ($pay_start_time) {
- $query->andWhere(['>=', 'o.pay_time', strtotime($pay_start_time)]);
- }
- if ($pay_end_time) {
- $query->andWhere(['<=', 'o.pay_time', strtotime($pay_end_time)]);
- }
- if ($create_start_time) {
- $query->andWhere(['>=', 'bpd.created_at', strtotime($create_start_time)]);
- }
- if ($create_end_time) {
- $query->andWhere(['<=', 'bpd.created_at', strtotime($create_end_time)]);
- }
- if ($order_no) {
- $query->andWhere(['like', 'o.order_no', $order_no]);
- }
- if ($pool_level_id) {
- $query->andWhere(['bpd.pool_level_id' => $pool_level_id]);
- }
- $query->select('bpd.*, o.order_no, o.pay_price, o.pay_time')->orderBy('bpd.created_at desc, o.pay_time desc');
- $list = pagination_make($query);
- return $this->asJson([
- 'code' => 0,
- 'msg' => 'success',
- 'data' => [
- 'data' => $list['list'],
- 'pageNo' => $list['pageNo'],
- 'totalCount' => $list['totalCount']
- ]
- ]);
- }
- /**
- * 提现列表
- * @return \yii\web\Response
- */
- public function actionCashList()
- {
- $store_id = get_store_id();
- $start_time = get_params('start_time');
- $end_time = get_params('end_time');
- $status = get_params('status');
- $name = get_params('name');
- $is_area = get_params('is_area');
- $audit_start_time = get_params('audit_start_time');
- $audit_end_time = get_params('audit_end_time');
- $query = Cash::find()->alias('c')
- ->leftJoin(['u' => User::tableName()], 'u.id=c.user_id')
- ->leftJoin(['su' => SaasUser::tableName()], 'su.mobile=u.binding')
- ->leftJoin(['sh' => ShareHolder::tableName()], 'sh.user_id=c.user_id')
- ->leftJoin(['shl' => ShareHolderLevel::tableName()], 'shl.id=sh.level_id')
- ->where(['c.is_delete' => Cash::IS_DELETE_NO, 'c.store_id' => $store_id]);
- if ($start_time) {
- $query->andWhere(['>=', 'c.created_at', strtotime($start_time)]);
- }
- if ($end_time) {
- $query->andWhere(['<=', 'c.created_at', strtotime($end_time)]);
- }
- if ($name) {
- $query->andWhere([
- 'or',
- ['like', 'su.name', $name],
- ['like', 'u.nickname', $name],
- ]);
- }
- if ($audit_start_time) {
- $query->andWhere(['>=', 'c.updated_at', strtotime($audit_start_time)]);
- }
- if ($audit_end_time) {
- $query->andWhere(['<=', 'c.updated_at', strtotime($audit_end_time)]);
- }
- if ($status == Cash::STATUS_APPLY) { //待审核
- $query->andWhere(['c.status' => Cash::STATUS_APPLY]);
- }
- if ($status == Cash::STATUS_CONFIRM) { // 待打款
- $query->andWhere(['c.status' => Cash::STATUS_CONFIRM]);
- }
- if ($status == Cash::STATUS_GIVEN) { // 已打款
- $query->andWhere(['in', 'c.status', [Cash::STATUS_GIVEN, Cash::STATUS_RECHARGE]]);
- }
- if ($status == Cash::STATUS_REFUSE) { // 已拒绝
- $query->andWhere(['c.status' => Cash::STATUS_REFUSE]);
- }
- if ($is_area) {
- $query->andWhere(['cash_type' => Cash::IS_CASH_TYPE_AREA_AGENT]);
- } else {
- $query->andWhere(['c.cash_type' => 3]);
- }
- $query->distinct()->orderBy('c.status ASC,c.created_at DESC')->select([
- 'c.*', 'su.id saas_user_id', 'u.nickname', 'u.avatar_url', 'u.binding', 'shl.name level_name'
- ]);
- $pagination = pagination_make($query);
- $list = $pagination['list'];
- foreach($list as &$value){
- $value['service_money'] = bcdiv(bcmul($value['service_charge'], $value['price'], 2), 100, 2);
- $value['money'] = Cash::getServiceMoney($value);
- $value['status_name'] = Cash::getCashStatusName($value);
- $saas_user = SaasUser::findOne($value['saas_user_id']);
- $value['card_no'] = '';
- // if (intval($value['type']) === Cash::TYPE_BANK) {
- if ($saas_user->withdraw_method) {
- $withdraw_method = json_decode($saas_user->withdraw_method, true);
- if (!empty($withdraw_method)) {
- foreach ($withdraw_method as $method_item) {
- if ($method_item['type'] === 'bank_card') {
- $value['card_no'] = $method_item['card_no'];
- }
- }
- }
- }
- // }
- $cashExtArr = CashExt::find()->where(['cash_id' => $value['id']])->select('cash_price_type, real_price')->asArray()->all();
- $value['cash_ext_text'] = null;
- if ($cashExtArr) {
- $value['cash_ext_text'] = '提现明细:';
- foreach ($cashExtArr as $cashExtItem) {
- $value['cash_ext_text'] .= CashExt::$cashPriceTypeMap[$cashExtItem['cash_price_type']] . ':' . $cashExtItem['real_price'] . ';';
- }
- }
- }
- if($this->export = input_params('export', 0)){
- return $this->export($list);
- }
- return $this->asJson([
- 'code' => 0,
- 'msg' => 'success',
- 'data' => [
- 'data' => $list,
- 'pageNo' => $pagination['pageNo'],
- 'totalCount' => $pagination['totalCount']
- ],
- ]);
- }
- private function export($list)
- {
- $rows = [[
- 'ID',
- '会员信息',
- '会员等级',
- '手机号',
- '申请提现金额(元)',
- '手续费(元)',
- '实际打款(元)',
- '姓名',
- '提现到',
- '账户',
- '身份证号',
- '开户行',
- '支行',
- '状态',
- '申请时间',
- '审核时间',
- ]];
- foreach($list as $item){
- $r = [
- $item['id'],
- $item['nickname'],
- $item['level_name'],
- $item['binding'],
- $item['price'],
- $item['service_money'],
- $item['money'],
- $item['name'],
- Cash::$type[$item['type']] ?? '--',
- $item['mobile'],
- $item['card_no'],
- $item['bank_name'],
- $item['bank_branch'],
- Cash::$status[$item['status']] ?? '',
- date('Y-m-d H:i:s', $item['created_at']),
- $item['updated_at'] <= 0 ? '' : date('Y-m-d H:i:s', $item['updated_at']),
- ];
- $rows[] = $r;
- }
- $writer = \Spatie\SimpleExcel\SimpleExcelWriter::streamDownload(time() . '.xlsx')->noHeaderRow()
- ->addRows($rows)->toBrowser();
- }
- /**
- * 提现申请审核
- * @return \yii\web\Response
- */
- public function actionCashApply()
- {
- $id = post_params('id');
- $status = post_params('status');
- $store_id = get_store_id();
- if (empty($id) || !is_array($id)) {
- return $this->asJson([
- 'code' => 1,
- 'msg' => '数据格式错误'
- ]);
- }
- $t = \Yii::$app->db->beginTransaction();
- foreach ($id as $value) {
- $cash = Cash::findOne(['id' => $value, 'is_delete' => Cash::IS_DELETE_NO,
- 'store_id' => $store_id]);
- if (!$cash) {
- $t->rollBack();
- return $this->asJson([
- 'code' => 1,
- 'msg' => '提现记录不存在,请刷新重试'
- ]);
- }
- if (!$cash->order_no) {
- $order_no = null;
- while (true) {
- $order_no = date('YmdHis') . mt_rand(100000, 999999);
- $exist_order_no = Cash::find()->where(['order_no' => $order_no])->exists();
- if (!$exist_order_no) {
- break;
- }
- }
- $cash->order_no = $order_no;
- $cash->save();
- }
- \Yii::$app->cache->set('holder_cash_cache_' . $value, $cash->order_no);
- if (!in_array($status, [1, 3])) {
- \Yii::$app->cache->set('holder_cash_cache_' . $value, false);
- $t->rollBack();
- return $this->asJson([
- 'code' => 1,
- 'msg' => '提现记录ID: ' . $value . '已审核,请刷新重试'
- ]);
- }
- $cash->status = $status;
- if ($status == Cash::STATUS_REFUSE) {
- $user = User::findOne($cash->user_id);
- $user->price += $cash->price;
- if (!$user->save()) {
- return $this->asJson([
- 'code' => 1,
- 'msg' => '网络异常'
- ]);
- }
- // NoticeSend::CashFail($cash->user_id, $user->binding, $cash->price, '提现被驳回', '提现被驳回');
- }
- if (!$cash->save()) {
- $t->rollBack();
- return $this->asJson([
- 'code' => 1,
- 'msg' => '网络异常,请刷新重试'
- ]);
- }
- }
- $t->commit();
- return $this->asJson([
- 'code' => 0,
- 'msg' => '审核成功'
- ]);
- }
- /**
- * 打款
- * @return \yii\web\Response
- */
- public function actionCashConfirm()
- {
- $id = post_params('id');
- $status = post_params('status');
- $store_id = get_store_id();
- $store = Store::findOne($store_id);
- $cash = Cash::findOne([
- 'id' => $id,
- 'is_delete' => Cash::IS_DELETE_NO,
- 'store_id' => $store_id
- ]);
- if (!$cash) {
- return $this->asJson([
- 'code' => 1,
- 'msg' => '提现记录不存在,请刷新重试'
- ]);
- }
- if ($status == Cash::STATUS_GIVEN) {
- if($store->is_platform_transfers == 1){
- $store_wechat_cash = json_decode(Option::get('store_wechat_cash', $store_id, 'store')['value'], true);
- $val = 0;
- foreach ((array)$store_wechat_cash as $value) {
- if (!empty($value)) {
- $val = 1;
- break;
- }
- }
- if(!$val){
- return $this->asJson([
- 'code' => 1,
- 'msg' => '未配置平台微信提现设置'
- ]);
- }
- }
- }
- if (!$cash->order_no) {
- $order_no = null;
- while (true) {
- $order_no = date('YmdHis') . mt_rand(100000, 999999);
- $exist_order_no = Cash::find()->where(['order_no' => $order_no])->exists();
- if (!$exist_order_no) {
- break;
- }
- }
- $cash->order_no = $order_no;
- $cash->save();
- }
- if ($cash->status != 1) {
- return $this->asJson([
- 'code' => 1,
- 'msg' => '操作错误,请刷新重试'
- ]);
- }
- $res = [];
- $cashExt = CashExt::findOne(['cash_id' => $cash['id'], 'cash_price_type' => CashExt::CASH_PRICE_TYPE_AMOUNT]);
- if ($cashExt) {
- $price = $cashExt->real_price;
- } else {
- $price = ($cash->price - ($cash->price * ($cash->service_charge / 100)));
- }
- $servePrice = ($cash->price * ($cash->service_charge / 100));
- if ($store->store_balance < $price && $store->is_platform_transfers == 1) {
- return $this->asJson([
- 'code' => 1,
- 'msg' => '店铺剩余提现余额不足'
- ]);
- }
- $wechat_type = 1;
- $wechat_cash = Option::get('wechat_cash', $store_id, 'store')['value'];
- if($store->is_platform_transfers == 1){
- $wechat_cash = Option::get('store_wechat_cash', $store_id, 'store')['value'];
- $wechat_type = 0;
- }
- if ($status == Cash::STATUS_GIVEN) { //微信自动打款
- if($price <= 0){
- $cash->status = Cash::STATUS_GIVEN;
- if($cash->save()){
- return $this->asJson([
- 'code' => 0,
- 'msg' => '成功'
- ]);
- }
- }
- if ((int)$cash->type === 0) {
- $cash->status = Cash::STATUS_GIVEN;
- $cash->pay_time = time();
- $cash->pay_type = Cash::PAY_TYPE_WX;
- $user = User::findOne($cash->user_id);
- $wechat_open_id = $user->wechat_open_id;
- $data = [
- 'partner_trade_no' => $cash->order_no,
- 'openid' => $wechat_open_id,
- 'check_name' => 'NO_CHECK',
- 'amount' => $price * 100,
- 'desc' => '转账',
- 'user_name' => $cash->name
- ];
- // TODO 扣除店铺提现金额
- if ($wechat_type == 0) {
- $cashExt = CashExt::findOne(['cash_id' => $cash->id, 'cash_price_type' => CashExt::CASH_PRICE_TYPE_AMOUNT]);
- $before = $store->store_balance;
- $store->store_balance -= $cashExt ? $cashExt->real_price : $price;
- $store->price -= $cashExt ? $cashExt->real_price : $price;
- $store->store_withdrawn_cash += $cashExt ? $cashExt->real_price : $price;
- $after = $store->store_balance;
- $cashExtServePrice = $cashExt ? bcsub($cashExt->price, $cashExt->real_price, 2) : $servePrice;
- $cashExtPrice = $cashExt ? $cashExt->price : $cash->price;
- $cashExtRealPrice = $cashExt ? $cashExt->real_price : $price;
- if ($store->save()) {
- StoreMoneyLog::saveLog(get_store_id(), StoreMoneyLog::LOG_TYPE_EXPEND, StoreMoneyLog::TYPE_SHAREHOLDER, $cashExtRealPrice, " ID{$id}:用户提现{$cashExtPrice}元,扣除手续费{$cashExtServePrice}元,提现实际扣除{$cashExtRealPrice}元", $before, $after, $wechat_type);
- }
- }
- $wechat = \Yii::$app->controller->wechatPay;
- // $res = $wechat->transfer->toBalance($data);
- $res = (new \app\utils\WechatMerchant\WxV3($wechat))->transferBatches(get_store_id(), $data);
- //判断是否使用新版本转账 增加转账标识
- $wechat_cash = json_decode($wechat_cash, true);
- if (intval($wechat_cash['is_open']) === 2) {
- if (!$res['code']) {
- $cash->is_platform_transfers = intval($store->is_platform_transfers);
- $cash->wx_cash_type = Cash::WX_CASH_TYPE_NEW;
- $cash->wx_cash_state = $res['data']['state'];
- $cash->wx_cash_result_info = json_encode($res['data'], JSON_UNESCAPED_UNICODE);
- $cash->save();
- }
- }
- // NoticeSend::CashSuccess($cash->user_id, $user->binding, $price, '微信自动打款', ($cash->price - $price));
- } elseif ((int)$cash->type === 1) {
- $order = (object)[
- 'store_id' => $cash->store_id,
- 'order_no' => $cash->order_no,
- 'pay_price' => $price,
- 'name' => $cash->name
- ];
- $result = Alipay::transfer($order, $cash->mobile);
- if (isset($result['code']) && $result['code'] == 1) {
- if (strpos($result['msg'], 'aop.invalid-app-auth-token-no-api')) {
- $result['msg'] = '接口未授权,请前往支付宝开放平台查询是否开通产品或授权支付宝转账产品';
- }
- if (strpos($result['msg'], 'PAYEE_NOT_EXIST')) {
- $result['msg'] = '收款账号不存在或姓名有误,建议核实账号和姓名是否准确';
- }
- if (strpos($result['msg'], 'BALANCE_IS_NOT_ENOUGH')) {
- $result['msg'] = '商户余额不足';
- }
- return $this->asJson($result);
- } else {
- // TODO 扣除店铺提现金额
- if ($wechat_type == 0) {
- $cashExt = CashExt::findOne(['cash_id' => $cash->id, 'cash_price_type' => CashExt::CASH_PRICE_TYPE_AMOUNT]);
- $before = $store->store_balance;
- $store->store_balance -= $cashExt ? $cashExt->real_price : $price;
- $store->price -= $cashExt ? $cashExt->real_price : $price;
- $store->store_withdrawn_cash += $cashExt ? $cashExt->real_price : $price;
- $after = $store->store_balance;
- $cashExtServePrice = $cashExt ? bcsub($cashExt->price, $cashExt->real_price, 2) : $servePrice;
- $cashExtPrice = $cashExt ? $cashExt->price : $cash->price;
- $cashExtRealPrice = $cashExt ? $cashExt->real_price : $price;
- if ($store->save()) {
- StoreMoneyLog::saveLog(get_store_id(), StoreMoneyLog::LOG_TYPE_EXPEND, StoreMoneyLog::TYPE_SHAREHOLDER, $cashExtRealPrice, " ID{$id}:用户提现{$cashExtPrice}元,扣除手续费{$cashExtServePrice}元,提现实际扣除{$cashExtRealPrice}元", $before, $after, $wechat_type);
- }
- }
- }
- $cash->status = Cash::STATUS_GIVEN;
- $cash->pay_time = time();
- $cash->pay_type = Cash::TYPE_ALIPAY;
- $cash->save();
- return $this->asJson([
- 'code' => 0,
- 'msg' => '成功'
- ]);
- }elseif ((int)$cash->type === 4) {
- $user = User::findOne($cash->user_id);
- $saas = SaasUser::findOne(['mobile' => $user->binding]);
- $lg_info = Lg::find()->where(['user_id'=>$saas->id,'status'=>1,'is_delete'=>0])->one();
- $lgApi = new LgApi($cash->store_id);
- //灵工提现
- $post_data = [
- 'store_id' => $cash->store_id,
- 'outTradeNo' => $cash->order_no,//唯一批次号
- 'accNo' => bcmul($price,100),
- 'amt' => bcmul($price,100),
- 'name' => $cash->name,
- 'certCard' => $lg_info->cert_card//身份证号
- ];
- $result = $lgApi->FlexiblePay($post_data);
- if (isset($result['status']) && $result['status'] == 999) {
- return $this->asJson($result);
- }
- $cash->status = 6;//灵工待打款
- $cash->save();
- //灵工提现接口调用后消息队列查询状态
- \queue_push(new LgCashJob(['id'=>$cash->id,'store_id'=>$store_id,'type'=>3,'retry' => 5]), 60);
- return $this->asJson([
- 'code' => 0,
- 'msg' => '成功'
- ]);
- }
- } elseif ($status == Cash::STATUS_HAND) { //手动打款
- // TODO 扣除店铺提现金额
- if ($wechat_type == 0) {
- $cashExt = CashExt::findOne(['cash_id' => $cash->id, 'cash_price_type' => CashExt::CASH_PRICE_TYPE_AMOUNT]);
- $before = $store->store_balance;
- $store->store_balance -= $cashExt ? $cashExt->real_price : $price;
- $store->price -= $cashExt ? $cashExt->real_price : $price;
- $store->store_withdrawn_cash += $cashExt ? $cashExt->real_price : $price;
- $after = $store->store_balance;
- $cashExtServePrice = $cashExt ? bcsub($cashExt->price, $cashExt->real_price, 2) : $servePrice;
- $cashExtPrice = $cashExt ? $cashExt->price : $cash->price;
- $cashExtRealPrice = $cashExt ? $cashExt->real_price : $price;
- if ($store->save()) {
- StoreMoneyLog::saveLog(get_store_id(), StoreMoneyLog::LOG_TYPE_EXPEND, StoreMoneyLog::TYPE_SHAREHOLDER, $cashExtRealPrice, " ID{$id}:用户提现{$cashExtPrice}元,扣除手续费{$cashExtServePrice}元,提现实际扣除{$cashExtRealPrice}元", $before, $after, $wechat_type);
- }
- }
- // if ((int)$cash->type === 3) {
- // AccountLog::saveLog($cash->user_id, $price, 2, 1, 0, 0, '股东提现打款');
- // }
- $cash->status = Cash::STATUS_GIVEN;
- $cash->pay_time = time();
- $cash->pay_type = Cash::PAY_TYPE_HAND;
- $res['result_code'] = "SUCCESS";
- // NoticeSend::CashSuccess($cash->user_id, $user->binding, $price, '手动打款', ($cash->price - $price));
- }
- if (isset($res['result_code']) && $res['result_code'] == 'SUCCESS') {
- $cash->save();
- return $this->asJson([
- 'code' => 0,
- 'msg' => '成功'
- ]);
- } else {
- return $this->asJson([
- 'code' => 1,
- 'msg' => !empty($res['err_code_des']) ? $res['err_code_des'] : '请稍后重试',
- 'data' => $res
- ]);
- }
- }
- /**
- * 基础设置
- * @return \yii\web\Response
- */
- public function actionSettingInfo()
- {
- $bonus_setting = new BonusPoolSetting();
- $bonus_setting->store_id = get_store_id();
- return $this->asJson($bonus_setting->search());
- }
- /**
- * 基础设置
- * @return \yii\web\Response
- */
- public function actionSetting()
- {
- $params = post_params();
- $bonus_setting = new BonusPoolSetting();
- $bonus_setting->attributes = $params;
- $bonus_setting->store_id = get_store_id();
- return $this->asJson($bonus_setting->save());
- }
- public function actionFugouInfo()
- {
- $bonus_setting = new BonusPoolSetting();
- $bonus_setting->store_id = get_store_id();
- return $this->asJson($bonus_setting->fugouInfo());
- }
- public function actionFugouSave()
- {
- $params = post_params();
- $bonus_setting = new BonusPoolSetting();
- $bonus_setting->attributes = $params;
- $bonus_setting->store_id = get_store_id();
- return $this->asJson($bonus_setting->fugouSave());
- }
- public function actionLevelDetail()
- {
- $level_id = get_params('level_id');
- $share_holder_level = ShareHolderLevel::findOne($level_id);
- if (!$share_holder_level) {
- return $this->asJson([
- 'code' => 1,
- 'msg' => '数据不存在'
- ]);
- }
- $condition = Json::decode($share_holder_level->condition);
- if (!isset($condition['self']['value']['order_number'])) {
- $self_price = $condition['self']['value'];
- $condition['self']['value'] = [];
- $condition['self']['value']['order_number'] = '0';
- $condition['self']['value']['price'] = $self_price;
- }
- if (!isset($condition['amount_total'])) {
- $condition['amount_total']['is_open'] = 0;
- $condition['amount_total']['value'] = '0.00';
- }
- $goods_id = $condition['goods']['value']['id'];
- $condition['goods']['value']['id'] = Goods::find()->where(['id' => $goods_id, 'is_delete' => 0])->select('id')->column();
- // 会员列表
- $level = Level::find()->select('level, name')->where([
- 'store_id' => get_store_id(),
- 'is_delete' => Level::NOT_DELETE,
- 'status' => Level::STATUS_TRUE
- ])->asArray()->all();
- $level[] = ['level' => '-1', 'name' => '普通用户'];
- $data = [
- 'id' => $share_holder_level->id,
- 'level' => $share_holder_level->level,
- 'timeout_days' => $share_holder_level->timeout_days,
- 'name' => $share_holder_level->name,
- 'member_level' => $share_holder_level->member_level,
- 'condition' => $condition,
- 'detail' => $share_holder_level->detail,
- 'range_rate' => $share_holder_level->range_rate,
- 'team_reward_rate' => $share_holder_level->team_reward_rate,
- 'holder_rate' => $share_holder_level->holder_rate,
- 'equal_rate' => $share_holder_level->equal_rate,
- 'status' => $share_holder_level->status,
- 'is_default' => $share_holder_level->is_default,
- 'share_rate_one' => $share_holder_level->share_rate_one,
- 'share_rate_two' => $share_holder_level->share_rate_two,
- 'share_rate_three' => $share_holder_level->share_rate_three,
- 'pic_url' => $share_holder_level->pic_url,
- 'old_team_reward_rate' => $share_holder_level->old_team_reward_rate,
- 'old_range_rate' => $share_holder_level->old_range_rate,
- 'old_holder_rate' => $share_holder_level->old_holder_rate,
- 'old_equal_rate' => $share_holder_level->old_equal_rate,
- 'old_share_rate_one' => $share_holder_level->old_share_rate_one,
- 'old_share_rate_two' => $share_holder_level->old_share_rate_two,
- 'old_share_rate_three' => $share_holder_level->old_share_rate_three,
- 'old_repeat_range_rate' => $share_holder_level->old_repeat_range_rate ?: '0.00',
- 'range_rate_type' => $share_holder_level->range_rate_type ?? 0,
- 'is_user_level_range_rate' => $share_holder_level->is_user_level_range_rate ?? 0,
- ];
- return $this->asJson([
- 'code' => 0,
- 'data' => $data,
- 'member_level_list' => $level,
- ]);
- }
- public function actionOtherInfo()
- {
- return $this->asJson([
- 'code' => 0,
- 'data' => [
- 'agreement' => Option::get('holder_agreement', get_store_id(), 'store', '')['value'] ?: '',
- 'banner' => Option::get('holder_banner', get_store_id(), 'store', '')['value'] ?: [],
- 'holder_audit' => (int)Option::get('holder_audit', get_store_id(), 'store', 0)['value'] ?: 0
- ]
- ]);
- }
- public function actionSubmitOtherInfo()
- {
- $holder_agreement = post_params('holder_agreement', '');
- $holder_banner = post_params('holder_banner', []);
- $holder_audit = post_params('holder_audit', 0);
- Option::set(['holder_agreement', 'holder_banner', 'holder_audit'], [$holder_agreement, $holder_banner, $holder_audit], get_store_id(), 'store');
- return $this->asJson([
- 'code' => 0,
- 'msg' => '更新成功'
- ]);
- }
- public function actionGetFilter()
- {
- $store_id = get_store_id();
- $filterLevel = ShareHolderLevel::find()->where(['store_id' => $store_id, 'is_delete' => 0])->select('level')->column();
- return $this->asJson([
- 'code' => 0,
- 'msg' => '更新成功',
- 'data' => $filterLevel
- ]);
- }
- //获取等级变动记录
- public function actionGetHolderLevelLog()
- {
- try {
- $nickname = get_params('nickname');
- $start_time = get_params('start_time');
- $end_time = get_params('end_time');
- $query = ShareHolderLevelLog::find()->alias('s')->where(['s.store_id' => get_store_id()])
- ->leftJoin(['sh' => ShareHolder::tableName()], 'sh.user_id = s.user_id')
- ->leftJoin(['u' => User::tableName()], 's.user_id = u.id')
- ->leftJoin(['su' => SaasUser::tableName()], 'su.mobile = u.binding')
- ->andWhere(['AND', ['IS NOT', 'sh.id', NULL], ['IS NOT', 'u.id', NULL], ['IS NOT', 'su.id', NULL]]);
- if ($nickname) {
- $query->andWhere(['LIKE', 'su.name', $nickname]);
- }
- if ($start_time) {
- $query->andWhere(['>=', 's.created_at', strtotime($start_time)]);
- }
- if ($end_time) {
- $query->andWhere(['<=', 's.created_at', strtotime($end_time)]);
- }
- $query->select('s.id, u.nickname name, s.after_level, s.before_level, s.created_at, s.desc, u.avatar_url avatar, s.order_id');
- $query->orderBy('s.created_at desc')->groupBy('s.id');
- $pagination = pagination_make($query);
- $list = $pagination['list'];
- foreach ($list as &$item) {
- $item['order'] = Order::find()->where(['id' => $item['order_id']])->select('order_no, pay_price')
- ->asArray()->one();
- $item['created_at'] = date('Y-m-d H:i:s', $item['created_at']);
- $item['after_level'] = ShareHolderLevel::find()->where([
- 'store_id' => get_store_id(),
- 'is_delete' => 0,
- 'level' => $item['after_level']
- ])->select('name')->asArray()->one()['name'];
- $item['before_level'] = ShareHolderLevel::find()->where([
- 'store_id' => get_store_id(),
- 'is_delete' => 0,
- 'level' => $item['before_level']
- ])->select('name')->asArray()->one()['name'];
- }
- return $this->asJson([
- 'code' => 0,
- 'msg' => 'success',
- 'data' => [
- 'list' => $list,
- 'pageNo' => $pagination['pageNo'],
- 'totalCount' => $pagination['totalCount']
- ]
- ]);
- } catch (\Exception $e) {
- return $this->asJson([
- 'code' => 1,
- 'msg' => $e->getMessage()
- ]);
- }
- }
- //股东上级变动记录
- public function actionGetHolderOutLog()
- {
- try {
- $type = get_params('type', null);
- $nickname = get_params('nickname');
- $start_time = get_params('start_time');
- $end_time = get_params('end_time');
- $query = ShareHolderParentOutLog::find()->alias('s')->where(['s.store_id' => get_store_id()])
- ->leftJoin(['u' => User::tableName()], 's.user_id = u.id')
- ->leftJoin(['su' => SaasUser::tableName()], 'su.mobile = u.binding');
- if ($type === null) {
- $query->leftJoin(['sh' => ShareHolder::tableName()], 'u.id = sh.user_id')
- ->andWhere(['>', 'sh.id', 0])
- ->andWhere(['sh.is_delete' => 0]);
- } else {
- $query->andWhere(['s.type' => $type]);
- }
- if ($nickname) {
- $query->andWhere(['LIKE', 'su.name', $nickname]);
- }
- if ($start_time) {
- $query->andWhere(['>=', 's.created_at', strtotime($start_time)]);
- }
- if ($end_time) {
- $query->andWhere(['<=', 's.created_at', strtotime($end_time)]);
- }
- $query->select('s.id, u.nickname name, u.avatar_url avatar, s.parent_user_id, s.old_parent_user_id, s.created_at, s.desc, s.type');
- $query->orderBy('s.id desc');
- $pagination = pagination_make($query);
- $list = $pagination['list'];
- foreach ($list as &$item) {
- $item['type'] = (int)$item['type'];
- $item['created_at'] = date('Y-m-d H:i:s', $item['created_at']);
- $store = Store::findOne(get_store_id());
- $item['old_parent_user'] = User::find()->alias('u')
- ->leftJoin(['su' => SaasUser::tableName()], 'su.mobile = u.binding')
- ->where(['u.id' => $item['old_parent_user_id']])->select('u.nickname name, u.avatar_url avatar')->asArray()->one() ?: [
- 'name' => '总店',
- 'avatar' => $store->logo
- ];
- $item['parent_user'] = User::find()->alias('u')
- ->leftJoin(['su' => SaasUser::tableName()], 'su.mobile = u.binding')
- ->where(['u.id' => $item['parent_user_id']])->select('u.nickname name, u.avatar_url avatar')->asArray()->one() ?: [
- 'name' => '总店',
- 'avatar' => $store->logo
- ];
- }
- return $this->asJson([
- 'code' => 0,
- 'msg' => 'success',
- 'data' => [
- 'q' => $query->createCommand()->getRawSql(),
- 'list' => $list,
- 'pageNo' => $pagination['pageNo'],
- 'totalCount' => $pagination['totalCount']
- ]
- ]);
- } catch (\Exception $e) {
- return $this->asJson([
- 'code' => 1,
- 'msg' => $e->getMessage()
- ]);
- }
- }
- public function actionAddPrice()
- {
- $is_order = \post_params('is_order', true);
- $order = \post_params('order', []);
- $type = \post_params('type', 2);
- $user = \post_params('user', []);
- $price = \post_params('price', 0);
- $remark = \post_params('remark', '');
- $actionType = \post_params('actionType', 1);
- $t = \Yii::$app->db->beginTransaction();
- try {
- $send_user = User::findOne($user['id']);
- if (!$send_user) {
- return $this->asJson([
- 'code' => 1,
- 'msg' => '佣金获取人不存在'
- ]);
- }
- if ($actionType == 2 && $send_user->price < $price) {
- return $this->asJson([
- 'code' => 1,
- 'msg' => '佣金获取人可提现佣金不足'
- ]);
- }
-
- $share_detail = new ShareDetail();
- $share_detail->store_id = get_store_id();
- $share_detail->user_id = $user['id'];
- if ($actionType == 1) {
- $share_detail->money = $price;
- } else {
- $share_detail->money = -$price;
- }
- $share_detail->is_send = 1;
- $share_detail->desc = $remark;
- $share_detail->type = $type;
- $share_detail->send_time = time();
- if ($is_order) {
- $share_detail->type_id = $order['id'];
- }
- $share_detail->save();
- if ($actionType == 1) {
- $send_user->total_price += $price;
- $send_user->price += $price;
- } else {
- $send_user->price -= $price;
- }
-
- $send_user->save();
- $t->commit();
- return $this->asJson([
- 'code' => 0,
- 'msg' => 'success'
- ]);
- } catch (\Throwable $e) {
- $t->rollBack();
- return $this->asJson([
- 'code' => 1,
- 'msg' => '操作失败!',
- ]);
- }
- }
- }
|