Cron.php 34 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868
  1. <?php
  2. namespace Bill\Lib;
  3. use Dever;
  4. class Cron
  5. {
  6. # 校正金额和业绩
  7. public function jz_api()
  8. {
  9. $where['state'] = 1;
  10. $id = Dever::input('id');
  11. if ($id) {
  12. $where['id'] = $id;
  13. }
  14. $member = Dever::db('agent/member')->select($where);
  15. if ($member) {
  16. foreach ($member as $v) {
  17. $where['mid'] = $v['id'];
  18. /*
  19. $data = Dever::db('bill/cash')->getCash($where);
  20. if ($data && $data['total']) {
  21. Dever::db('agent/member')->update(array('where_id' => $v['id'], 'cash' => $data['total']));
  22. }
  23. */
  24. $update = array();
  25. $where['type'] = 1;
  26. $sell = Dever::db('bill/sell')->getTotal($where);
  27. if ($sell && $sell['total']) {
  28. $update['sell'] = $sell['total'];
  29. }
  30. $where['type'] = 2;
  31. $group_sell = Dever::db('bill/sell')->getTotal($where);
  32. if ($group_sell && $group_sell['total']) {
  33. $update['group_sell'] = $group_sell['total'];
  34. }
  35. if ($update) {
  36. $update['where_id'] = $v['id'];
  37. Dever::db('agent/member')->update($update);
  38. }
  39. }
  40. }
  41. return 'ok';
  42. }
  43. public function sell_api()
  44. {
  45. # 按月份统计团队业绩和直推业绩
  46. $month = Dever::input('month', date('Y-m'));
  47. $start_time = $month .'-01 00:00:00';
  48. $end_time = date('Y-m-d', strtotime($start_time. ' +1 month -1 day')).' 23:59:59';
  49. // $where['type'] = '2';
  50. $where['start'] = Dever::maketime($start_time);
  51. $where['end'] = Dever::maketime($end_time);
  52. $data = Dever::db('bill/sell')->getNumByTime($where);
  53. if ($data) {
  54. foreach ($data as $k => $v) {
  55. if ($v['num'] > 0) {
  56. $w = array();
  57. $w['mid'] = $v['mid'];
  58. $w['month'] = $where['start'];
  59. $w['clear'] = true;
  60. $info = Dever::db('bill/sell_stat')->find($w);
  61. $where['mid'] = $v['mid'];
  62. $where['type'] = $v['type'];
  63. $total = Dever::db('bill/sell')->getNumByTimeOne($where);
  64. if ($v['type'] == 1) {
  65. $w['new_ztnum'] = $v['num'];
  66. if ($total) {
  67. $w['zt_num'] = $total['num'];
  68. }
  69. } else {
  70. $w['new_num'] = $v['num'];
  71. if ($total) {
  72. $w['num'] = $total['num'];
  73. }
  74. }
  75. if ($info) {
  76. $w['where_id'] = $info['id'];
  77. Dever::db('bill/sell_stat')->update($w);
  78. } else {
  79. Dever::db('bill/sell_stat')->insert($w);
  80. }
  81. }
  82. }
  83. }
  84. return 'ok';
  85. }
  86. # 权益使用情况统计:类型、商品名、总发放数量、总使用数量
  87. public function goods_api()
  88. {
  89. $num = Dever::input('num', 5);
  90. $start = Dever::input('start', date('Y-m-d', strtotime('-'.$num.' day')));
  91. $end = Dever::input('end', date('Y-m-d'));
  92. $start = Dever::maketime($start . ' 00:00:00');
  93. $end = Dever::maketime($end . ' 23:59:59');
  94. $day = intval(($end - $start)/86400);
  95. for($i=0; $i<=$day; $i++) {
  96. $where['start'] = $start + 86400*$i;
  97. $where['end'] = $start + 86400*$i + 86399;
  98. $goods = Dever::db('agent/member_goods')->findAll($where);
  99. $dh_order = Dever::db('agent/dh_order')->getDhNum(array('status'=>3,'start'=>$where['start'],'end'=>$where['end'],'state'=>1));
  100. // print_R($dh_order);die;
  101. if ($goods) {
  102. foreach ($goods as $k => $v) {
  103. $data = array();
  104. $data['day'] = $where['start'];
  105. $data['type'] = $v['type'];
  106. $data['type_id'] = $v['type_id'];
  107. $data['sku_id'] = $v['sku_id'];
  108. $info = Dever::db('bill/goods_stat')->find($data);
  109. $data['total_num'] = $v['total_num'];
  110. $data['sell_num'] = $v['sell_num'];
  111. $data['cash'] = $v['cash'];
  112. $data['y_cash'] = $v['y_cash'];
  113. $data['w_cash'] = $v['cash'] - $v['y_cash'];
  114. $data['name'] = $v['name'];
  115. $data['sell_nonum'] = $dh_order;
  116. if ($info) {
  117. $data['where_id'] = $info['id'];
  118. Dever::db('bill/goods_stat')->update($data);
  119. } else {
  120. Dever::db('bill/goods_stat')->insert($data);
  121. }
  122. }
  123. }
  124. }
  125. return 'ok';
  126. }
  127. # 区域分润
  128. /*
  129. 区域毛利 = 区域内所有门店的采购商品的零售价总额 x 30%
  130. 城市分润 = 区域毛利 x 1%
  131. 区县分润 = 区域毛利 x 3%
  132. 街道分润 = 区域毛利 x 5%
  133. */
  134. public function area_api()
  135. {
  136. # 获取所有代理商
  137. $where['status'] = 2;
  138. $member = Dever::db('agent/member')->select($where);
  139. if ($member) {
  140. foreach ($member as $k => $v) {
  141. # 获取区域内门店的利润
  142. $role = Dever::db('setting/role')->find($v['role']);
  143. $profit = $role['profit'];
  144. if (!$profit) {
  145. continue;
  146. }
  147. $temp = explode(',', $v['area']);
  148. if ($role['type'] == 2) {
  149. $area = '';
  150. if ($role['area'] == 1 && isset($temp[1])) {
  151. # 城市
  152. $area = $temp[0] . ',' . $temp[1];
  153. } elseif ($role['area'] == 2 && isset($temp[2])) {
  154. # 区县
  155. $area = $temp[0] . ',' . $temp[1] . ',' . $temp[2];
  156. } elseif ($role['area'] == 3 && isset($temp[3])) {
  157. # 街道
  158. $area = $temp[0] . ',' . $temp[1] . ',' . $temp[2] . ',' . $temp[3];
  159. }
  160. if ($area) {
  161. }
  162. }
  163. }
  164. }
  165. }
  166. # 营业额报表:日期,订单数,确认订单数,确认订单额度,新增代理商数量
  167. public function order_api()
  168. {
  169. $num = Dever::input('num', 5);
  170. $start = Dever::input('start', date('Y-m-d', strtotime('-'.$num.' day')));
  171. $end = Dever::input('end', date('Y-m-d'));
  172. $start = Dever::maketime($start . ' 00:00:00');
  173. $end = Dever::maketime($end . ' 23:59:59');
  174. $day = intval(($end - $start)/86400);
  175. for($i=0; $i<=$day; $i++) {
  176. $where = array();
  177. $where['fstart'] = $start + 86400*$i;
  178. $where['fend'] = $start + 86400*$i + 86399;
  179. $data = array();
  180. $data['day'] = $where['fstart'];
  181. $info = Dever::db('bill/order_stat')->find($data);
  182. $data['num'] = Dever::db('agent/order')->getNum($where);
  183. $where['status'] = 4;
  184. $data['yes_num'] = Dever::db('agent/order')->getNum($where);
  185. $cash = Dever::db('agent/order')->getCash($where);
  186. if ($cash) {
  187. $data['cash'] = $cash['total'];
  188. } else {
  189. $data['cash'] = 0;
  190. }
  191. $agent_cash = Dever::db('agent/order')->getDailiCash($where);
  192. if ($agent_cash) {
  193. $data['agent_cash'] = $agent_cash['total'];
  194. } else {
  195. $data['agent_cash'] = 0;
  196. }
  197. $where['status'] = 2;
  198. $data['daili_num'] = Dever::db('agent/member')->getNum($where);
  199. $where['status'] = '-2,1,2,3,6';//驳回不加入
  200. $where['start'] = $where['fstart'];
  201. $where['end'] = $where['fend'];
  202. unset($where['fstart']);
  203. unset($where['fend']);
  204. $data['no_num'] = Dever::db('agent/order')->getNum($where);
  205. $no_cash = Dever::db('agent/order')->getCash($where);
  206. if ($no_cash) {
  207. $data['no_cash'] = $no_cash['total'];
  208. } else {
  209. $data['no_cash'] = 0;
  210. }
  211. if (!$info) {
  212. Dever::db('bill/order_stat')->insert($data);
  213. } else {
  214. $data['where_id'] = $info['id'];
  215. Dever::db('bill/order_stat')->update($data);
  216. }
  217. }
  218. }
  219. # 代理商统计:日期,新增代理商,城市代理商,区县代理商,街道代理商,创客,消客
  220. public function member_api()
  221. {
  222. $num = Dever::input('num', 5);
  223. $start = Dever::input('start', date('Y-m-d', strtotime('-'.$num.' day')));
  224. $end = Dever::input('end', date('Y-m-d'));
  225. $start = Dever::maketime($start . ' 00:00:00');
  226. $end = Dever::maketime($end . ' 23:59:59');
  227. $day = intval(($end - $start)/86400);
  228. for($i=0; $i<=$day; $i++) {
  229. $where = array();
  230. $where['status'] = 2;
  231. $where['fstart'] = $start + 86400*$i;
  232. $where['fend'] = $start + 86400*$i + 86399;
  233. $data = array();
  234. $data['day'] = $where['fstart'];
  235. $info = Dever::db('bill/member_stat')->find($data);
  236. $data['num'] = Dever::db('agent/member')->getNum($where);
  237. $where['role'] = 2;
  238. $data['city_num'] = Dever::db('agent/member')->getNum($where);
  239. $where['role'] = 3;
  240. $data['county_num'] = Dever::db('agent/member')->getNum($where);
  241. $where['role'] = 4;
  242. $data['town_num'] = Dever::db('agent/member')->getNum($where);
  243. $where['role'] = 5;
  244. $data['cf_num'] = Dever::db('agent/member')->getNum($where);
  245. $where['role'] = 6;
  246. $data['ck_num'] = Dever::db('agent/member')->getNum($where);
  247. $where['role'] = 8;
  248. $data['cv_num'] = Dever::db('agent/member')->getNum($where);
  249. if (!$info) {
  250. Dever::db('bill/member_stat')->insert($data);
  251. } else {
  252. $data['where_id'] = $info['id'];
  253. Dever::db('bill/member_stat')->update($data);
  254. }
  255. }
  256. }
  257. # 资金账户统计:日期,总收入,代理费,软件服务费,赠送商品价值,直推佣金,市场培训费
  258. # 总收入金额 = 代理费金额 + 软件服务费 - 赠送商品价值 - 直推分佣 - 市场培训费 - 活动分佣 - 手动发放
  259. public function cash_in_api()
  260. {
  261. $num = Dever::input('num', 5);
  262. $start = Dever::input('start', date('Y-m-d', strtotime('-'.$num.' day')));
  263. $end = Dever::input('end', date('Y-m-d'));
  264. $start = Dever::maketime($start . ' 00:00:00');
  265. $end = Dever::maketime($end . ' 23:59:59');
  266. $day = intval(($end - $start)/86400);
  267. for($i=0; $i<=$day; $i++) {
  268. $where = array();
  269. $where['fstart'] = $start + 86400*$i;
  270. $where['fend'] = $start + 86400*$i + 86399;
  271. $data = array();
  272. $data['day'] = $where['fstart'];
  273. $info = Dever::db('bill/cash_in_stat')->find($data);
  274. $where['status'] = 4;
  275. $data['daili_cash'] = 0;
  276. $cash = Dever::db('agent/order')->getDailiCash($where);
  277. if ($cash) {
  278. $data['daili_cash'] = $cash['total'];
  279. }
  280. $data['soft_cash'] = 0;
  281. $cash = Dever::db('agent/order')->getSoftCash($where);
  282. if ($cash) {
  283. $data['soft_cash'] = $cash['total'];
  284. }
  285. $data['goods_cash'] = 0;
  286. $cash = Dever::db('agent/order')->getGoodsCash($where);
  287. if ($cash) {
  288. $data['goods_cash'] = $cash['total'];
  289. }
  290. unset($where['status']);
  291. $where['start'] = $where['fstart'];
  292. $where['end'] = $where['fend'];
  293. $where['type'] = 1;
  294. $data['zt_cash'] = 0;
  295. $cash = Dever::db('bill/cash')->getCash($where);
  296. if ($cash) {
  297. $data['zt_cash'] = $cash['total'];
  298. }
  299. $where['type'] = 2;
  300. $data['sc_cash'] = 0;
  301. $cash = Dever::db('bill/cash')->getCash($where);
  302. if ($cash) {
  303. $data['sc_cash'] = $cash['total'];
  304. }
  305. $where['type'] = 4;
  306. $data['hd_cash'] = 0;
  307. $cash = Dever::db('bill/cash')->getCash($where);
  308. if ($cash) {
  309. $data['hd_cash'] = $cash['total'];
  310. }
  311. $where['type'] = 10;
  312. $data['sd_cash'] = 0;
  313. $cash = Dever::db('bill/cash')->getCash($where);
  314. if ($cash) {
  315. $data['sd_cash'] = $cash['total'];
  316. }
  317. #间推
  318. $where['type'] =3;
  319. $data['jt_cash'] =0;
  320. $cash = Dever::db('bill/cash')->getCash($where);
  321. if ($cash) {
  322. $data['jt_cash'] = $cash['total'];
  323. }
  324. $data['cash'] = $data['daili_cash'] + $data['soft_cash'] - $data['goods_cash'] - $data['sc_cash'] - $data['zt_cash'] - $data['hd_cash'] - $data['sd_cash'] - $data['jt_cash'];
  325. if (!$info) {
  326. Dever::db('bill/cash_in_stat')->insert($data);
  327. } else {
  328. $data['where_id'] = $info['id'];
  329. Dever::db('bill/cash_in_stat')->update($data);
  330. }
  331. }
  332. return 'ok';
  333. }
  334. # 应付金额 = 现存余额 + 未审核提现 + 已审核待发放提现。
  335. /*public function cash_out_api()
  336. {
  337. $num = Dever::input('num', 1);
  338. $start = Dever::input('start', date('Y-m-d', strtotime('-'.$num.' day')));
  339. $end = Dever::input('end', date('Y-m-d'));
  340. $start = Dever::maketime($start . ' 00:00:00');
  341. $end = Dever::maketime($end . ' 23:59:59');
  342. $day = intval(($end - $start)/86400);
  343. for($i=0; $i<=$day; $i++) {
  344. $where = array();
  345. $where['start'] = $start + 86400*$i;
  346. $where['end'] = $start + 86400*$i + 86399;
  347. $data = array();
  348. $data['day'] = $where['start'];
  349. $info = Dever::db('bill/cash_in_stat')->find($data);
  350. $where['status'] = 4;
  351. $data['daili_cash'] = 0;
  352. $cash = Dever::db('agent/order')->getDailiCash($where);
  353. if ($cash) {
  354. $data['daili_cash'] = $cash['total'];
  355. }
  356. $data['soft_cash'] = 0;
  357. $cash = Dever::db('agent/order')->getSoftCash($where);
  358. if ($cash) {
  359. $data['soft_cash'] = $cash['total'];
  360. }
  361. $data['goods_cash'] = 0;
  362. $cash = Dever::db('agent/order')->getGoodsCash($where);
  363. if ($cash) {
  364. $data['goods_cash'] = $cash['total'];
  365. }
  366. unset($where['status']);
  367. $where['type'] = 1;
  368. $data['zt_cash'] = 0;
  369. $cash = Dever::db('bill/cash')->getCash($where);
  370. if ($cash) {
  371. $data['zt_cash'] = $cash['total'];
  372. }
  373. $where['type'] = 2;
  374. $data['sc_cash'] = 0;
  375. $cash = Dever::db('bill/cash')->getCash($where);
  376. if ($cash) {
  377. $data['sc_cash'] = $cash['total'];
  378. }
  379. $data['cash'] = $data['daili_cash'] + $data['soft_cash'] - $data['goods_cash'] - $data['sc_cash'] - $data['zt_cash'];
  380. if (!$info) {
  381. Dever::db('bill/cash_in_stat')->insert($data);
  382. } else {
  383. $data['where_id'] = $info['id'];
  384. Dever::db('bill/cash_in_stat')->update($data);
  385. }
  386. }
  387. }
  388. */
  389. #财务应付报表:
  390. #应付金额 = 现存余额 + 未审核提现 + 已审核待发放提现
  391. public function cash_up_api()
  392. {
  393. $num = Dever::input('num', 5);
  394. $start = Dever::input('start', date('Y-m-d', strtotime('-'.$num.' day')));
  395. $end = Dever::input('end', date('Y-m-d'));
  396. $start = Dever::maketime($start . ' 00:00:00');
  397. $end = Dever::maketime($end . ' 23:59:59');
  398. $day = intval(($end - $start)/86400);
  399. for($i=0; $i<=$day; $i++) {
  400. $where = array();
  401. $where['start'] = $start + 86400*$i;
  402. $where['end'] = $start + 86400*$i + 86399;
  403. $data = array();
  404. $data['day'] = $where['start'];
  405. $info = Dever::db('bill/cash_up_stat')->find($data);
  406. /*
  407. 现存余额=tixian.php下的cash
  408. 未审核提现=cash下的status=1,type=11
  409. 已审核待发放提现=tixian.php下的status=1,cash
  410. */
  411. #现存余额
  412. $data['xc_cash']=0;
  413. $where['status'] = 2;
  414. $cash=Dever::db('bill/tixian')->gettxCash($where);
  415. if($cash){
  416. $data['xc_cash']=$cash['total']*(-1);
  417. }
  418. #未审核提现
  419. $where['status']=-1;
  420. $data['ws_cash']=0;
  421. // print_R($where);die;
  422. $tixian=Dever::db('bill/tixian')->getwsCash($where);
  423. if($tixian){
  424. // $where['status']=1;
  425. // $where['type']=11;
  426. // $where['mid']=$tixian['mid'];
  427. // $cash=Dever::db('bill/cash')->getwsCash($where);
  428. $data['ws_cash']=$tixian['total']*(-1);
  429. }
  430. #已审核待发放提现
  431. $data['df_cash']=0;
  432. $where['status']=1;
  433. $where['state'] = 1;
  434. $cash=Dever::db('bill/tixian')->getdfCash($where);
  435. if($cash){
  436. $data['df_cash'] = $cash['total'] *(-1);
  437. }
  438. $data['cash'] = $data['xc_cash'] + $data['ws_cash'] + $data['df_cash'];
  439. if (!$info) {
  440. Dever::db('bill/cash_up_stat')->insert($data);
  441. } else {
  442. $data['where_id'] = $info['id'];
  443. Dever::db('bill/cash_up_stat')->update($data);
  444. }
  445. }
  446. }
  447. #归店统计
  448. public function shop_stat_api(){
  449. $month = Dever::input('month');
  450. $y = date('Y');
  451. if($month){
  452. $month = $month;
  453. }else{
  454. $m = date('m')-1;
  455. if ($m == 0) {
  456. $y = $y - 1;
  457. $m = 12;
  458. }
  459. $month = $y.'-'.$m;
  460. }
  461. $start_time = $month .'-01 00:00:00';
  462. $end_time = date('Y-m-d', strtotime($start_time. ' +1 month -1 day')).' 23:59:59';
  463. $start = Dever::maketime($start_time);
  464. $end = Dever::maketime($end_time);
  465. $shops = Dever::db('shop/info')->getguiAll(array('type'=>2));
  466. foreach ($shops as $k => $v) {
  467. $w = array('end' => $end,'new_shop_id'=> $v['id']);
  468. $member = Dever::db('agent/member_shop_log')->getAllByShop($w);
  469. if ($member) {
  470. $member_mid = implode(',', array_keys($member));
  471. $w['start'] = $start;
  472. $cmember = Dever::db('agent/member_shop_log')->getAllByShop($w);
  473. $insert = array();
  474. $insert['shop_id'] = $v['id'];
  475. $insert['month'] = $start;
  476. $insert['c_money'] = 0;
  477. $insert['mids'] = $member_mid;
  478. $insert['month_mids'] = array();
  479. $insert['num'] = 0;
  480. $insert['dl_num'] = 0;
  481. $insert['v_num'] = 0;
  482. $insert['ck_num'] = 0;
  483. $insert['out_num'] = 0;
  484. $insert['out_money'] = 0;
  485. $insert['nei_money'] = 0;
  486. $out_member = array();
  487. $nei_member = array();
  488. if ($cmember) {
  489. foreach ($cmember as $k1 => $v1) {
  490. $vinfo = Dever::db('agent/member')->find($v1['mid']);
  491. if ($vinfo) {
  492. $insert['month_mids'][] = $v1['mid'];
  493. $insert['num'] += 1;
  494. if ($vinfo['role'] == 8) {
  495. $insert['v_num'] += 1;
  496. if ($vinfo['prize_type'] == 1) {
  497. $insert['out_num'] += 1;
  498. }
  499. } else {
  500. $insert['dl_num'] += 1;
  501. }
  502. if ($vinfo['role'] == 6) {
  503. $insert['ck_num'] += 1;
  504. }
  505. }
  506. }
  507. $insert['month_mids'] = implode(',', $insert['month_mids']);
  508. }
  509. foreach ($member as $k1 => $v1) {
  510. $vinfo = Dever::db('agent/member')->select(array('parent_mid' => $v1['mid'], 'role' => 8));
  511. if ($vinfo) {
  512. foreach ($vinfo as $v2) {
  513. if ($v2['prize_type'] == 1) {
  514. $out_member[] = $v2['id'];
  515. } else {
  516. $nei_member[] = $v2['id'];
  517. }
  518. }
  519. }
  520. }
  521. $c_money = Dever::db('shop/buy_order')->getCashNum(array('type'=>1,'type_id'=>$v['id'],'start' => $start, 'end' => $end, 'status' => '3,4,5,6'));
  522. if ($c_money) {
  523. $insert['c_money'] = $c_money['total'];
  524. }
  525. $where = array
  526. (
  527. 'parent_mid' => $member_mid,
  528. 'start' => $start,
  529. 'end' => $end
  530. );
  531. $money = Dever::db('agent/order')->getCount($where);
  532. if ($money) {
  533. $insert['money'] = $money['total'];
  534. }
  535. $where['role'] = '1,2,3,4,5,6,7';
  536. $dl_money = Dever::db('agent/order')->getCount($where);
  537. if ($dl_money) {
  538. $insert['dl_money'] = $dl_money['total'];
  539. }
  540. $where['role'] = 8;
  541. unset($where['parent_mid']);
  542. if ($out_member) {
  543. $where['mid'] = $out_member;
  544. $out_money = Dever::db('agent/order')->getCount($where);
  545. if ($out_money) {
  546. $insert['out_money'] = $out_money['total'];
  547. }
  548. }
  549. if ($nei_member) {
  550. $where['mid'] = $nei_member;
  551. $nei_money = Dever::db('agent/order')->getCount($where);
  552. if ($nei_money) {
  553. $insert['nei_money'] = $nei_money['total'];
  554. }
  555. }
  556. $res = Dever::db('bill/shop_stat')->find(array('month'=>$insert['month'],'shop_id'=>$v['id']));
  557. if ($res) {
  558. $insert['where_id'] = $res['id'];
  559. Dever::db('bill/shop_stat')->update($insert);
  560. } else {
  561. Dever::db('bill/shop_stat')->insert($insert);
  562. }
  563. } else {
  564. $insert = array();
  565. $insert['shop_id'] = $v['id'];
  566. $insert['month'] = $start;
  567. $insert['c_money'] = 0;
  568. $insert['mids'] = '';
  569. $insert['month_mids'] = array();
  570. $insert['num'] = 0;
  571. $insert['dl_num'] = 0;
  572. $insert['v_num'] = 0;
  573. $insert['ck_num'] = 0;
  574. $insert['out_num'] = 0;
  575. $insert['out_money'] = 0;
  576. $insert['nei_money'] = 0;
  577. $res = Dever::db('bill/shop_stat')->find(array('month'=>$insert['month'],'shop_id'=>$v['id']));
  578. if ($res) {
  579. $insert['where_id'] = $res['id'];
  580. Dever::db('bill/shop_stat')->update($insert);
  581. } else {
  582. Dever::db('bill/shop_stat')->insert($insert);
  583. }
  584. }
  585. }
  586. /*
  587. $logs = Dever::db('agent/member_shop_log')->getGui(array('start'=>$start,'end'=>$end,'state'=>1));
  588. foreach($logs as $a => $b){
  589. $log[$b['mid']]=$b;
  590. }
  591. $logs=array_values($log);
  592. foreach($shops as $s=>$sv){
  593. foreach($logs as $l => $lv){
  594. if($lv['new_shop_id'] == $sv['id']){
  595. $sv['mid'][] = $lv['mid'];
  596. $sv['cdate'][] = Dever::maketime(date('Y-m-01', $lv['cdate']) . ' 00:00:00');
  597. // $lv['cdate'];
  598. $shops[] = $sv;
  599. }else{
  600. unset($shops[$s]);
  601. }
  602. }
  603. }
  604. $data=array_unique($shops, SORT_REGULAR);
  605. $rest=array();
  606. foreach($data as $a=>$va){
  607. $rest[$va['id']]=$va;
  608. }
  609. $shop=array_values($rest);
  610. foreach($shop as $k => $v){
  611. // $end = strtotime(date('Y-m-d 23:59:59',strtotime(date('Y-m-01',$v['cdate'][$k1])."+1 month - 1 day")));
  612. #采购金额
  613. $shop[$k]['c_money'] = Dever::db('shop/buy_order')->getCashNum(array('type'=>1,'type_id'=>$v['id'],'state'=>1));
  614. #代理商的总数量
  615. $shop[$k]['num'] = Dever::db('agent/member_shop_log')->getAll(array('start'=>$start,'end'=>$end,'new_shop_id'=>$v['id'],'state'=>1));
  616. foreach($v['mid'] as $k1 => $v1){
  617. $shop[$k]['mids'] = implode(',',$v['mid']);
  618. #除去创V的代理数量
  619. $shop[$k]['dl_num'][] = Dever::db('agent/member')->getCount(array('id'=>$v1,'role'=>'1,2,3,4,5,6,7','state'=>1));
  620. $shop[$k]['ck_num'][] = Dever::db('agent/member')->getCount(array('id'=>$v1,'role'=>'6','state'=>1));
  621. #创V数量
  622. $shop[$k]['v_num'][] = Dever::db('agent/member')->getCount(array('id'=>$v1,'role'=>8,'state'=>1));
  623. #创V名额外数量
  624. $shop[$k]['out_num'][] = Dever::db('agent/member')->getCount(array('id'=>$v1,'role'=>8,'prize_type'=>1,'state'=>1));
  625. // foreach($v['cdate'][$k1] as $v2){
  626. #代理商业绩
  627. $shop[$k]['money'][] = Dever::db('agent/order')->getCount(array('parent_mid'=>$v1,'start'=>$v['cdate'][$k1],'end'=>$end,'state'=>1));
  628. #除去创V的代理商业绩
  629. $end = strtotime(date('Y-m-d 23:59:59',strtotime(date('Y-m-01',$v['cdate'][$k1])."+1 month - 1 day")));
  630. $shop[$k]['dl_money'][] = Dever::db('agent/order')->getVCount(array('parent_mid'=>$v1,'start'=>$v['cdate'][$k1],'end'=>$end,'role'=>'1,2,3,4,5,6,7'));
  631. #创V名额外业绩
  632. $out = Dever::db('agent/member')->guidian(array('parent_mid'=>$v1,'role'=>8,'prize_type'=>1));
  633. if(isset($out) && $out){
  634. foreach($out as $v3){
  635. $shop[$k]['out_money'][] = Dever::db('agent/order')->getVCount(array('mid'=>$v3['id'],'start'=>$v['cdate'][$k1],'end'=>$end,'role'=>8,'state'=>1));
  636. }
  637. }
  638. #创V名额内业绩
  639. $nei = Dever::db('agent/member')->guidian(array('parent_mid'=>$v1,'role'=>8,'prize_type'=>2));
  640. if(isset($nei) && $nei){
  641. foreach($nei as $v3){
  642. $shop[$k]['nei_money'][] = Dever::db('agent/order')->getVCount(array('mid'=>$v3['id'],'start'=>$v['cdate'][$k1],'end'=>$end,'role'=>8,'state'=>1));
  643. }
  644. }
  645. // }
  646. }
  647. #除创V的代理商数量
  648. if(isset($shop[$k]['dl_num']) && $shop[$k]['dl_num']){
  649. $shop[$k]['dl_num'] = array_sum($shop[$k]['dl_num']);
  650. }else{
  651. $shop[$k]['dl_num'] = 0;
  652. }
  653. #创客代理商数量
  654. if(isset($shop[$k]['ck_num']) && $shop[$k]['ck_num']){
  655. $shop[$k]['ck_num'] = array_sum($shop[$k]['ck_num']);
  656. }else{
  657. $shop[$k]['ck_num'] = 0;
  658. }
  659. #创V总数量
  660. if(isset($shop[$k]['v_num']) && $shop[$k]['v_num']){
  661. $shop[$k]['v_num'] = array_sum($shop[$k]['v_num']);
  662. }else{
  663. $shop[$k]['v_num'] = 0;
  664. }
  665. #创V名额外的数量
  666. if(isset($shop[$k]['out_num']) && $shop[$k]['out_num']){
  667. $shop[$k]['out_num'] = array_sum($shop[$k]['out_num']);
  668. }else{
  669. $shop[$k]['out_num'] = 0;
  670. }
  671. }
  672. // print_R($shop);die;
  673. foreach($shop as $key => $val){
  674. #代理商的总业绩
  675. if(isset($val['money']) && $val['money']){
  676. $shop[$key]['money'] = array_sum(array_map(function($val){return $val['total'];}, $val['money']));
  677. }else{
  678. $shop[$key]['money'] = 0;
  679. }
  680. #除创V的代理商业绩
  681. if(isset($val['dl_money']) && $val['dl_money']){
  682. $shop[$key]['dl_money'] = array_sum(array_map(function($val){return $val['total'];}, $val['dl_money']));
  683. }else{
  684. $shop[$key]['dl_money'] = 0;
  685. }
  686. #创V名额外业绩
  687. if(isset($val['out_money']) && $val['out_money']){
  688. $shop[$key]['out_money'] = array_sum(array_map(function($val){return $val['total'];}, $val['out_money']));
  689. }else{
  690. $shop[$key]['out_money'] = 0;
  691. }
  692. #创V名额内业绩
  693. if(isset($val['nei_money']) && $val['nei_money']){
  694. $shop[$key]['nei_money'] = array_sum(array_map(function($val){return $val['total'];}, $val['nei_money']));
  695. }else{
  696. $shop[$key]['nei_money'] = 0;
  697. }
  698. $insert['shop_id'] = $val['id'];
  699. $insert['mids'] = $val['mids'];
  700. $insert['num'] = $val['num'];
  701. $insert['c_money'] = $val['c_money']['total'];
  702. $insert['dl_num'] = $val['dl_num'];
  703. $insert['v_num'] = $val['v_num'];
  704. $insert['ck_num'] = $val['ck_num'];
  705. $insert['money'] = $shop[$key]['money'];
  706. $insert['dl_money'] = $shop[$key]['dl_money'];
  707. $insert['month'] = $start;
  708. $insert['out_num'] = $val['out_num'];
  709. $insert['out_money'] = $shop[$key]['out_money'];
  710. $insert['nei_money'] = $shop[$key]['nei_money'];
  711. if($insert){
  712. $res = Dever::db('bill/shop_stat')->getState(array('start'=>$start,'end'=>$end,'shop_id'=>$insert['shop_id'],'state'=>1));
  713. if($res){
  714. foreach($res as $k2 => $v2){
  715. $insert['where_id'] = $v2['id'];
  716. Dever::db('bill/shop_stat')->update($insert);
  717. }
  718. }else{
  719. Dever::db('bill/shop_stat')->insert($insert);
  720. }
  721. }
  722. }
  723. */
  724. return 'ok';
  725. }
  726. # 角色统计
  727. public function role_api()
  728. {
  729. $num = Dever::input('num', 5);
  730. $start = Dever::input('start', date('Y-m-d', strtotime('-'.$num.' day')));
  731. $end = Dever::input('end', date('Y-m-d'));
  732. $start = Dever::maketime($start . ' 00:00:00');
  733. $end = Dever::maketime($end . ' 23:59:59');
  734. $day = intval(($end - $start)/86400);
  735. $status = 4;
  736. $role = Dever::load('setting/role-state');
  737. for($i=0; $i<=$day; $i++) {
  738. $where = array();
  739. $where['fstart'] = $start + 86400*$i;
  740. $where['fend'] = $start + 86400*$i + 86399;
  741. $where['status'] = 4;
  742. foreach ($role as $k => $v) {
  743. $data = array();
  744. $data['day'] = $where['fstart'];
  745. $data['role'] = $v['id'];
  746. $data['clear'] = true;
  747. $where['role'] = $v['id'];
  748. $info = Dever::db('bill/role_stat')->find($data);
  749. $data['num'] = Dever::db('agent/order')->getNum($where);
  750. if ($data['num'] && $data['num'] > 0) {
  751. $cash = Dever::db('agent/order')->getCash($where);
  752. if ($cash) {
  753. $data['cash'] = $cash['total'];
  754. } else {
  755. $data['cash'] = 0;
  756. }
  757. $data['touru'] = $data['cash'];
  758. $cash = Dever::db('agent/member')->getCash($where);
  759. if ($cash) {
  760. $data['shouru'] = $cash['total'];
  761. } else {
  762. $data['shouru'] = 0;
  763. }
  764. if (!$info) {
  765. Dever::db('bill/role_stat')->insert($data);
  766. } else {
  767. $data['where_id'] = $info['id'];
  768. Dever::db('bill/role_stat')->update($data);
  769. }
  770. }
  771. }
  772. }
  773. return 'ok';
  774. }
  775. }