Fenxiao.php 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688
  1. <?php
  2. /**
  3. * Niushop商城系统 - 团队十年电商经验汇集巨献!
  4. * =========================================================
  5. * Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
  6. * ----------------------------------------------
  7. * 官方网址: https://www.niushop.com
  8. * =========================================================
  9. */
  10. namespace addon\fenxiao\shop\controller;
  11. use addon\fenxiao\model\Config as ConfigModel;
  12. use addon\fenxiao\model\Fenxiao as FenxiaoModel;
  13. use addon\fenxiao\model\FenxiaoAccount;
  14. use addon\fenxiao\model\FenxiaoApply;
  15. use addon\fenxiao\model\FenxiaoData;
  16. use addon\fenxiao\model\FenxiaoLevel as FenxiaoLevelModel;
  17. use addon\fenxiao\model\FenxiaoOrder as FenxiaoOrderModel;
  18. use app\model\goods\Goods as GoodsModel;
  19. use app\model\member\Member as MemberModel;
  20. use app\shop\controller\BaseShop;
  21. /**
  22. * 分销设置
  23. */
  24. class Fenxiao extends BaseShop
  25. {
  26. protected $replace = []; //视图输出字符串内容替换 相当于配置文件中的'view_replace_str'
  27. public function __construct()
  28. {
  29. parent::__construct();
  30. $this->replace = [
  31. 'FENXIAO_JS' => __ROOT__ . '/addon/fenxiao/shop/view/public/js',
  32. 'FENXIAO_CSS' => __ROOT__ . '/addon/fenxiao/shop/view/public/css'
  33. ];
  34. }
  35. /**
  36. * 分销概况
  37. */
  38. public function index()
  39. {
  40. //获取分销商账户统计
  41. $fenxiao_data_model = new FenxiaoData();
  42. $account_data = $fenxiao_data_model->getFenxiaoAccountData($this->site_id);
  43. $this->assign('account_data', $account_data);
  44. //累计佣金
  45. $fenxiao_account = number_format($account_data[ 'account' ], 2, '.', '');
  46. $this->assign('fenxiao_account', $fenxiao_account);
  47. //获取申请人数
  48. $fenxiao_apply_num = $fenxiao_data_model->getFenxiaoApplyCount($this->site_id);
  49. $this->assign('fenxiao_apply_num', $fenxiao_apply_num);
  50. //分销商人数
  51. $fenxiao_num = $fenxiao_data_model->getFenxiaoCount($this->site_id);
  52. $this->assign('fenxiao_num', $fenxiao_num);
  53. //获取分销的总金额
  54. $order_model = new FenxiaoOrderModel();
  55. $commission = $order_model->getFenxiaoOrderInfo([ [ 'site_id', '=', $this->site_id ] ], 'sum(real_goods_money) as real_goods_money,sum(commission) as commission');
  56. if ($commission[ 'data' ][ 'real_goods_money' ] == null) {
  57. $commission[ 'data' ][ 'real_goods_money' ] = '0.00';
  58. }
  59. if ($commission[ 'data' ][ 'commission' ] == null) {
  60. $commission[ 'data' ][ 'commission' ] = '0.00';
  61. }
  62. $this->assign('shop_commission', $commission[ 'data' ]);
  63. //获取已结算分销的总金额
  64. $commission_end = $order_model->getFenxiaoOrderInfo([ [ 'site_id', '=', $this->site_id ], [ 'is_settlement', '=', 1 ], [ 'is_refund', '=', 0 ] ], 'sum(real_goods_money) as real_goods_money,sum(commission) as commission');
  65. if ($commission_end[ 'data' ][ 'real_goods_money' ] == null) {
  66. $commission_end[ 'data' ][ 'real_goods_money' ] = '0.00';
  67. }
  68. if ($commission_end[ 'data' ][ 'commission' ] == null) {
  69. $commission_end[ 'data' ][ 'commission' ] = '0.00';
  70. }
  71. $this->assign('shop_commission_end', $commission_end[ 'data' ]);
  72. //获取已退款的佣金
  73. $commission_refund = $order_model->getFenxiaoOrderInfo([ [ 'site_id', '=', $this->site_id ], [ 'is_refund', '=', 1 ] ], 'sum(real_goods_money) as real_goods_money,sum(commission) as commission');
  74. if ($commission_refund[ 'data' ][ 'real_goods_money' ] == null) {
  75. $commission_refund[ 'data' ][ 'real_goods_money' ] = '0.00';
  76. }
  77. if ($commission_refund[ 'data' ][ 'commission' ] == null) {
  78. $commission_refund[ 'data' ][ 'commission' ] = '0.00';
  79. }
  80. $this->assign('shop_commission_refund', $commission_refund[ 'data' ]);
  81. $goods_model = new GoodsModel();
  82. $fenxiao_goods_num = $goods_model->getGoodsInfo([ [ 'site_id', '=', $this->site_id ], [ 'is_fenxiao', '=', 1 ], [ 'is_delete', '=', 0 ] ], 'count(goods_id) as fenxiao_goods_num');
  83. $this->assign('fenxiao_goods_num', $fenxiao_goods_num[ 'data' ][ 'fenxiao_goods_num' ]);
  84. $commission_money = round($commission[ 'data' ][ 'commission' ], 2) - round($commission_end[ 'data' ][ 'commission' ], 2) - round($commission_refund[ 'data' ][ 'commission' ], 2);
  85. $commission_money = number_format($commission_money, 2);
  86. $this->assign('commission_money', $commission_money);
  87. $this->forthMenu();
  88. return $this->fetch('fenxiao/index');
  89. }
  90. /**
  91. * 分销商列表
  92. */
  93. public function lists()
  94. {
  95. $model = new FenxiaoModel();
  96. if (request()->isAjax()) {
  97. $condition[] = [ 'f.site_id', '=', $this->site_id ];
  98. $fenxiao_name = input('fenxiao_name', '');
  99. if ($fenxiao_name) {
  100. $condition[] = [ 'f.fenxiao_name', 'like', '%' . $fenxiao_name . '%' ];
  101. }
  102. $nickname = input('nickname', '');
  103. if ($nickname) {
  104. $condition[] = [ 'm.nickname', 'like', '%' . $nickname . '%' ];
  105. }
  106. $mobile = input('mobile', '');
  107. if ($mobile) {
  108. $condition[] = [ 'm.mobile', 'like', '%' . $mobile . '%' ];
  109. }
  110. $parent_name = input('parent_name', '');
  111. if ($parent_name) {
  112. $condition[] = [ 'pf.fenxiao_name', 'like', '%' . $parent_name . '%' ];
  113. }
  114. $level_id = input('level_id', '');
  115. if ($level_id) {
  116. $condition[] = [ 'f.level_id', '=', $level_id ];
  117. }
  118. $start_time = input('start_time', '');
  119. $end_time = input('end_time', '');
  120. if ($start_time && $end_time) {
  121. $condition[] = [ 'f.create_time', 'between', [ date_to_time($start_time), date_to_time($end_time) ] ];
  122. } elseif (!$start_time && $end_time) {
  123. $condition[] = [ 'f.create_time', '<=', date_to_time($end_time) ];
  124. } elseif ($start_time && !$end_time) {
  125. $condition[] = [ 'f.create_time', '>=', date_to_time($start_time) ];
  126. }
  127. $status = input('status', '');
  128. if (!empty($status)) {
  129. $condition[] = [ 'f.status', '=', $status ];
  130. }
  131. $page = input('page', 1);
  132. $page_size = input('page_size', PAGE_LIST_ROWS);
  133. $list = $model->getFenxiaoPageList($condition, $page, $page_size, 'f.create_time desc');
  134. return $list;
  135. } else {
  136. $level_model = new FenxiaoLevelModel();
  137. $level_list = $level_model->getLevelList([ [ 'status', '=', 1 ], [ 'site_id', '=', $this->site_id ] ], 'level_id,level_name');
  138. $this->assign('level_list', $level_list[ 'data' ]);
  139. $config_model = new ConfigModel();
  140. $basics = $config_model->getFenxiaoBasicsConfig($this->site_id);
  141. $this->assign("basics_info", $basics[ 'data' ][ 'value' ]);
  142. $this->forthMenu();
  143. return $this->fetch('fenxiao/lists');
  144. }
  145. }
  146. /**
  147. * 添加分销商
  148. */
  149. public function add()
  150. {
  151. if (request()->isAjax()) {
  152. $fenxiao_data = [
  153. 'site_id' => $this->site_id,
  154. 'fenxiao_name' => input('fenxiao_name', ''),//分销商名称
  155. 'level_id' => input('level_id', 0),//分销商等级
  156. 'parent' => input('fenxiao_id', 0),//上级分销商ID
  157. 'member_id' => input('member_id', 0),//关联会员ID
  158. ];
  159. $apply_model = new FenxiaoApply();
  160. return $apply_model->addFenxiao($fenxiao_data);
  161. } else {
  162. //获取分销商等级
  163. $level_model = new FenxiaoLevelModel();
  164. $level_list = $level_model->getLevelList([ [ 'status', '=', 1 ], [ 'site_id', '=', $this->site_id ] ], 'level_id,level_name');
  165. $this->assign('level_list', $level_list[ 'data' ]);
  166. //获取分销商列表
  167. $fenxiao_model = new FenxiaoModel();
  168. $condition[] = [ 'status', '=', '1' ];
  169. $fenxiao_list = $fenxiao_model->getFenxiaoList($condition, 'fenxiao_id,fenxiao_name');
  170. $this->assign('fenxiao_list', $fenxiao_list[ 'data' ]);
  171. //获取会员列表
  172. $member_model = new MemberModel();
  173. $where[] = [ 'is_fenxiao', '=', '0' ];
  174. $member_list = $member_model->getMemberList($where, 'member_id,nickname');
  175. $this->assign('member_list', $member_list[ 'data' ]);
  176. return $this->fetch('fenxiao/add');
  177. }
  178. }
  179. /**
  180. * 获取分销商列表
  181. */
  182. public function getFenxiaoList()
  183. {
  184. $page_index = input('page', 1);
  185. $page_size = input('page_size', PAGE_LIST_ROWS);
  186. $fenxiao_search = input("fenxiao_search", '');
  187. $condition = [];
  188. $condition[] = [ 'mobile|fenxiao_name', 'like', '%' . $fenxiao_search . '%' ];
  189. $condition[] = [ 'status', '=', 1 ];
  190. $fenxiao_model = new FenxiaoModel();
  191. $list = $fenxiao_model->getFenxiaoPageLists($condition, $page_index, $page_size, '', 'fenxiao_id,fenxiao_name,account');
  192. return $list;
  193. }
  194. /**
  195. * 获取会员列表
  196. */
  197. public function getMemberList()
  198. {
  199. $page_index = input('page', 1);
  200. $page_size = input('page_size', PAGE_LIST_ROWS);
  201. $member_search = input("member_search", '');
  202. $condition = [];
  203. $condition[] = [ 'mobile|email|username', 'like', '%' . $member_search . '%' ];
  204. $condition[] = [ 'site_id', '=', $this->site_id ];
  205. $condition[] = [ 'is_fenxiao', '=', '0' ];
  206. $member_model = new MemberModel();
  207. $list = $member_model->getMemberPageList($condition, $page_index, $page_size, '', 'member_id,headimg,nickname,point,balance');
  208. return $list;
  209. }
  210. /**
  211. * 详情
  212. */
  213. public function detail()
  214. {
  215. $fenxiao_id = input('fenxiao_id', '');
  216. $model = new FenxiaoModel();
  217. $fenxiao_leve_model = new FenxiaoLevelModel();
  218. $condition[] = [ 'f.fenxiao_id', '=', $fenxiao_id ];
  219. $info = $model->getFenxiaoDetailInfo($condition);
  220. if (empty($info[ 'data' ])) $this->error('未获取到分销商数据', addon_url('fenxiao://shop/fenxiao/lists'));
  221. $fenxiao_level = $fenxiao_leve_model->getLevelInfo([ [ 'level_id', '=', $info[ 'data' ][ 'level_id' ] ] ]);
  222. $this->assign('status', $model->fenxiao_status_zh);
  223. $this->assign('level', $fenxiao_level[ 'data' ]);
  224. $this->assign('info', $info[ 'data' ]);
  225. $this->forthMenu([ 'fenxiao_id' => $fenxiao_id ]);
  226. return $this->fetch('fenxiao/fenxiao_detail');
  227. }
  228. /**
  229. * 分销账户信息
  230. */
  231. public function account()
  232. {
  233. $model = new FenxiaoModel();
  234. $fenxiao_id = input('fenxiao_id', '');
  235. $condition[] = [ 'f.fenxiao_id', '=', $fenxiao_id ];
  236. $info = $model->getFenxiaoDetailInfo($condition);
  237. if (empty($info[ 'data' ])) $this->error('未获取到分销商数据', addon_url('fenxiao://shop/fenxiao/lists'));
  238. $account = $info[ 'data' ][ 'account' ] - $info[ 'data' ][ 'account_withdraw_apply' ];
  239. $info[ 'data' ][ 'account' ] = number_format($account, 2, '.', '');
  240. $this->assign('fenxiao_info', $info[ 'data' ]);
  241. if (request()->isAjax()) {
  242. $account_model = new FenxiaoAccount();
  243. $page = input('page', 1);
  244. $status = input('status', '');
  245. $fenxiao_id = input('fenxiao_id', '');
  246. $list_condition[] = [ 'fenxiao_id', '=', $fenxiao_id ];
  247. if ($status) {
  248. if ($status == 1) {
  249. $list_condition[] = [ 'money', '>', 0 ];
  250. } else {
  251. $list_condition[] = [ 'money', '<', 0 ];
  252. }
  253. }
  254. $start_time = input('start_time', '');
  255. $end_time = input('end_time', '');
  256. if ($start_time && $end_time) {
  257. $list_condition[] = [ 'create_time', 'between', [ $start_time, $end_time ] ];
  258. } elseif (!$start_time && $end_time) {
  259. $list_condition[] = [ 'create_time', '<=', $end_time ];
  260. } elseif ($start_time && !$end_time) {
  261. $list_condition[] = [ 'create_time', '>=', $start_time ];
  262. }
  263. $page_size = input('page_size', PAGE_LIST_ROWS);
  264. $list = $account_model->getFenxiaoAccountPageList($list_condition, $page, $page_size);
  265. return $list;
  266. }
  267. $this->assign('fenxiao_id', $fenxiao_id);
  268. $this->forthMenu([ 'fenxiao_id' => $fenxiao_id ]);
  269. return $this->fetch('fenxiao/fenxiao_account');
  270. }
  271. /**
  272. * 分销商团队
  273. */
  274. public function team()
  275. {
  276. $fenxiao_id = input('fenxiao_id', 0);
  277. $fenxiao_model = new FenxiaoModel();
  278. if (request()->isAjax()) {
  279. $level = input('level', 1);
  280. $page = input('page', 1);
  281. $page_size = input('page_size', PAGE_LIST_ROWS);
  282. $list = $fenxiao_model->getFenxiaoTeam($level, $fenxiao_id, $page, $page_size);
  283. return $list;
  284. } else {
  285. $this->assign('fenxiao_id', $fenxiao_id);
  286. $this->forthMenu([ 'fenxiao_id' => $fenxiao_id ]);
  287. $config_model = new ConfigModel();
  288. $basics_config = $config_model->getFenxiaoBasicsConfig($this->site_id);
  289. $this->assign('fenxiao_level_num', $basics_config[ 'data' ][ 'value' ][ 'level' ]);
  290. return $this->fetch('fenxiao/fenxiao_team');
  291. }
  292. }
  293. /**
  294. * 订单管理
  295. */
  296. public function order()
  297. {
  298. $model = new FenxiaoOrderModel();
  299. $fenxiao_id = input('fenxiao_id', '');
  300. if (request()->isAjax()) {
  301. $page_index = input('page', 1);
  302. $page_size = input('page_size', PAGE_LIST_ROWS);
  303. $fenxiao_id = input('fenxiao_id', '');
  304. $status = input('status', 0);
  305. $condition[] = [ 'one_fenxiao_id|two_fenxiao_id|three_fenxiao_id', '=', $fenxiao_id ];
  306. $search_text_type = input('search_text_type', "goods_name");//订单编号/商品名称
  307. $search_text = input('search_text', "");
  308. if (!empty($search_text)) {
  309. $condition[] = [ 'fo.' . $search_text_type, 'like', '%' . $search_text . '%' ];
  310. }
  311. if (in_array($status, [ 1, 2 ])) {
  312. $condition[] = [ 'fo.is_settlement', '=', $status - 1 ];
  313. }
  314. //下单时间
  315. $start_time = input('start_time', '');
  316. $end_time = input('end_time', '');
  317. if (!empty($start_time) && empty($end_time)) {
  318. $condition[] = [ 'fo.create_time', '>=', date_to_time($start_time) ];
  319. } elseif (empty($start_time) && !empty($end_time)) {
  320. $condition[] = [ 'fo.create_time', '<=', date_to_time($end_time) ];
  321. } elseif (!empty($start_time) && !empty(date_to_time($end_time))) {
  322. $condition[] = [ 'fo.create_time', 'between', [ date_to_time($start_time), date_to_time($end_time) ] ];
  323. }
  324. $list = $model->getFenxiaoOrderPage($condition, $page_index, $page_size);
  325. return $list;
  326. } else {
  327. //订单状态
  328. $this->assign('fenxiao_id', $fenxiao_id);
  329. $this->forthMenu([ 'fenxiao_id' => $fenxiao_id ]);
  330. return $this->fetch('fenxiao/order_lists', [], $this->replace);
  331. }
  332. }
  333. /**
  334. * 订单详情
  335. */
  336. public function orderDetail()
  337. {
  338. $fenxiao_order_model = new FenxiaoOrderModel();
  339. $fenxiao_order_id = input('fenxiao_order_id', '');
  340. $order_info = $fenxiao_order_model->getFenxiaoOrderDetail([ [ 'fenxiao_order_id', '=', $fenxiao_order_id ] ]);
  341. $this->assign('order_info', $order_info[ 'data' ]);
  342. return $this->fetch('fenxiao/order_detail');
  343. }
  344. /**
  345. * 冻结
  346. */
  347. public function frozen()
  348. {
  349. $fenxiao_id = input('fenxiao_id', '');
  350. $model = new FenxiaoModel();
  351. return $model->frozen($fenxiao_id);
  352. }
  353. /**
  354. * 恢复正常
  355. */
  356. public function unfrozen()
  357. {
  358. $fenxiao_id = input('fenxiao_id', '');
  359. $model = new FenxiaoModel();
  360. return $model->unfrozen($fenxiao_id);
  361. }
  362. /**
  363. * 分销商申请列表
  364. */
  365. public function apply()
  366. {
  367. $model = new FenxiaoApply();
  368. if (request()->isAjax()) {
  369. $condition[] = [ 'fa.site_id', '=', $this->site_id ];
  370. $condition[] = [ 'fa.status', '=', 1 ];
  371. $condition[] = [ 'm.is_delete', '=', 0 ];
  372. $fenxiao_name = input('fenxiao_name', '');
  373. if ($fenxiao_name) {
  374. $condition[] = [ 'fenxiao_name', 'like', '%' . $fenxiao_name . '%' ];
  375. }
  376. $nickname = input('nickname', '');
  377. if ($nickname) {
  378. $condition[] = [ 'm.nickname', 'like', '%' . $nickname . '%' ];
  379. }
  380. $mobile = input('mobile', '');
  381. if ($mobile) {
  382. $condition[] = [ 'm.mobile', 'like', '%' . $mobile . '%' ];
  383. }
  384. $level_id = input('level_id', '');
  385. if ($level_id) {
  386. $condition[] = [ 'fa.level_id', '=', $level_id ];
  387. }
  388. $create_start_time = input('create_start_time', '');
  389. $create_end_time = input('create_end_time', '');
  390. if ($create_start_time && $create_end_time) {
  391. $condition[] = [ 'fa.create_time', 'between', [ strtotime($create_start_time), strtotime($create_end_time) ] ];
  392. } elseif (!$create_start_time && $create_end_time) {
  393. $condition[] = [ 'fa.create_time', '<=', strtotime($create_end_time) ];
  394. } elseif ($create_start_time && !$create_end_time) {
  395. $condition[] = [ 'fa.create_time', '>=', strtotime($create_start_time) ];
  396. }
  397. $rg_start_time = input('rg_start_time', '');
  398. $rg_end_time = input('rg_end_time', '');
  399. if ($rg_start_time && $rg_end_time) {
  400. $condition[] = [ 'fa.reg_time', 'between', [ strtotime($rg_start_time), strtotime($rg_end_time) ] ];
  401. } elseif (!$rg_start_time && $rg_end_time) {
  402. $condition[] = [ 'fa.reg_time', '<=', strtotime($rg_end_time) ];
  403. } elseif ($rg_start_time && !$rg_end_time) {
  404. $condition[] = [ 'fa.reg_time', '>=', strtotime($rg_start_time) ];
  405. }
  406. $join = [
  407. [ 'member m', 'fa.member_id = m.member_id', 'inner' ]
  408. ];
  409. $field = 'fa.apply_id,fa.fenxiao_name,fa.parent,fa.member_id,fa.level_id,fa.level_name,fa.order_complete_money,fa.order_complete_num,fa.reg_time,fa.create_time,fa.status,m.mobile,m.nickname,m.headimg';
  410. $page = input('page', 1);
  411. $page_size = input('page_size', PAGE_LIST_ROWS);
  412. $list = $model->getFenxiaoApplyPageList($condition, $page, $page_size, 'fa.create_time desc', $field, 'fa', $join);
  413. return $list;
  414. } else {
  415. $level_model = new FenxiaoLevelModel();
  416. $level_list = $level_model->getLevelList([ [ 'status', '=', 1 ] ], 'level_id,level_name');
  417. $this->assign('level_list', $level_list[ 'data' ]);
  418. $this->forthMenu();
  419. return $this->fetch('fenxiao/apply');
  420. }
  421. }
  422. /**
  423. * 分销商申请通过
  424. */
  425. public function applyPass()
  426. {
  427. $apply_id = input('apply_id');
  428. $model = new FenxiaoApply();
  429. $res = $model->pass($apply_id, $this->site_id);
  430. return $res;
  431. }
  432. /**
  433. * 分销商申请通过
  434. */
  435. public function applyRefuse()
  436. {
  437. $apply_id = input('apply_id');
  438. $model = new FenxiaoApply();
  439. $res = $model->refuse($apply_id);
  440. return $res;
  441. }
  442. /**
  443. * 变更上下级
  444. */
  445. public function change()
  446. {
  447. $member_id = input('member_id');
  448. $model = new FenxiaoModel();
  449. $member_model = new MemberModel();
  450. $member_info_result = $member_model->getMemberInfo([ [ 'member_id', '=', $member_id ] ], 'fenxiao_id,is_fenxiao');
  451. $member_info = $member_info_result[ 'data' ];
  452. if (request()->isAjax()) {
  453. if ($member_info[ 'is_fenxiao' ] == 1) {
  454. $condition[] = [ 'f.fenxiao_id', '<>', $member_info[ 'fenxiao_id' ] ];
  455. $condition[] = [ 'f.parent', '<>', $member_info[ 'fenxiao_id' ] ];
  456. }
  457. $condition[] = [ 'f.site_id', '=', $this->site_id ];
  458. $status = input('status', 1);
  459. if ($status) {
  460. $condition[] = [ 'f.status', '=', $status ];
  461. }
  462. $fenxiao_name = input('fenxiao_name', '');
  463. if ($fenxiao_name) {
  464. $condition[] = [ 'f.fenxiao_name', 'like', '%' . $fenxiao_name . '%' ];
  465. }
  466. $parent_name = input('parent_name', '');
  467. if ($parent_name) {
  468. $condition[] = [ 'pf.fenxiao_name', 'like', '%' . $parent_name . '%' ];
  469. }
  470. $level_id = input('level_id', '');
  471. if ($level_id) {
  472. $condition[] = [ 'f.level_id', '=', $level_id ];
  473. }
  474. $start_time = input('start_time', '');
  475. $end_time = input('end_time', '');
  476. if ($start_time && $end_time) {
  477. $condition[] = [ 'f.create_time', 'between', [ date_to_time($start_time), date_to_time($end_time) ] ];
  478. } elseif (!$start_time && $end_time) {
  479. $condition[] = [ 'f.create_time', '<=', date_to_time($end_time) ];
  480. } elseif ($start_time && !$end_time) {
  481. $condition[] = [ 'f.create_time', '>=', date_to_time($start_time) ];
  482. }
  483. $page = input('page', 1);
  484. $page_size = input('page_size', PAGE_LIST_ROWS);
  485. $list = $model->getFenxiaoPageList($condition, $page, $page_size, 'f.create_time desc');
  486. return $list;
  487. } else {
  488. $level_model = new FenxiaoLevelModel();
  489. $level_list = $level_model->getLevelList([ [ 'status', '=', 1 ], [ 'site_id', '=', $this->site_id ] ], 'level_id,level_name');
  490. $this->assign('level_list', $level_list[ 'data' ]);
  491. $config_model = new ConfigModel();
  492. $basics = $config_model->getFenxiaoBasicsConfig($this->site_id);
  493. $this->assign("basics_info", $basics[ 'data' ][ 'value' ]);
  494. //获取分销信息
  495. $fenxiao_info = $model->getFenxiaoInfo([ [ 'fenxiao_id', '=', $member_info[ 'fenxiao_id' ] ] ], 'parent');
  496. //获取上级分销商信息
  497. $parent_info[ 'data' ] = [];
  498. if (!empty($fenxiao_info[ 'data' ])) {
  499. $parent_info = $model->getFenxiaoInfo([ [ 'fenxiao_id', '=', $fenxiao_info[ 'data' ][ 'parent' ] ] ], 'fenxiao_id,fenxiao_name');
  500. }
  501. $this->assign('member_id', $member_id);
  502. $this->assign('parent_info', $parent_info[ 'data' ]);
  503. return $this->fetch('fenxiao/change');
  504. }
  505. }
  506. /**
  507. * 确认变更
  508. */
  509. public function confirmChange()
  510. {
  511. if (request()->isAjax()) {
  512. $member_id = input('member_id', '');
  513. $parent = input('parent', '');
  514. $type = input('type', '');
  515. $model = new FenxiaoModel();
  516. if ($type == 1) {
  517. $res = $model->changeParentFenxiao($member_id, $parent);
  518. } else {
  519. $res = $model->cancelParentFenxiao($member_id);
  520. }
  521. return $res;
  522. }
  523. }
  524. /**
  525. * 会员详情
  526. */
  527. public function memberInfo()
  528. {
  529. if (request()->isAjax()) {
  530. $member_id = input('member_id', '');
  531. $condition[] = [ 'site_id', '=', $this->site_id ];
  532. $condition[] = [ 'member_id', '=', $member_id ];
  533. $member_model = new MemberModel();
  534. $member_info_result = $member_model->getMemberInfo($condition);
  535. $member_info = $member_info_result[ "data" ];
  536. if (empty($member_info)) return $member_model->error([], "账号不存在!");
  537. return $member_info_result;
  538. }
  539. }
  540. /**
  541. * 修改分销商等级
  542. */
  543. public function change_level()
  544. {
  545. $member_id = input('member_id', '');
  546. $fenxiao_id = input('fenxiao_id', '');
  547. if (request()->isAjax()) {
  548. $level_model = new FenxiaoLevelModel();
  549. $fenxiao_model = new FenxiaoModel();
  550. $fenxiao_info = $fenxiao_model->getFenxiaoInfo([ [ 'fenxiao_id', '=', $fenxiao_id ] ], 'member_id,level_id,level_name');
  551. $fenxiao_info = $fenxiao_info[ 'data' ];
  552. $condition[] = [ 'site_id', '=', $this->site_id ];
  553. if (!empty($fenxiao_info)) {
  554. $condition[] = [ 'level_id', '<>', $fenxiao_info[ 'level_id' ] ];
  555. }
  556. $lists = $level_model->getLevelPageList($condition, '1', PAGE_LIST_ROWS, 'level_num asc');
  557. return $lists;
  558. } else {
  559. $config_model = new ConfigModel();
  560. $basics = $config_model->getFenxiaoBasicsConfig($this->site_id);
  561. $this->assign("basics_info", $basics[ 'data' ][ 'value' ]);
  562. $this->assign('member_id', $member_id);
  563. $this->assign('fenxiao_id', $fenxiao_id);
  564. return $this->fetch('fenxiao/change_level');
  565. }
  566. }
  567. /**
  568. * 确认变更
  569. */
  570. public function confirmChangeLevel()
  571. {
  572. if (request()->isAjax()) {
  573. $member_id = input('member_id', '');
  574. $level_id = input('level_id', '');
  575. $level_model = new FenxiaoLevelModel();
  576. $level_data = $level_model->getLevelInfo([ [ 'level_id', '=', $level_id ] ], 'level_id,level_name');
  577. $level_data = $level_data[ 'data' ];
  578. $fenxiao_model = new FenxiaoModel();
  579. $data = [
  580. 'level_id' => $level_data[ 'level_id' ],
  581. 'level_name' => $level_data[ 'level_name' ]
  582. ];
  583. $res = $fenxiao_model->changeFenxiaoLevel($data, [ [ 'member_id', '=', $member_id ] ]);
  584. return $res;
  585. }
  586. }
  587. }