stat.model.php 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517
  1. <?php
  2. /**
  3. * 统计管理
  4. *
  5. */
  6. defined('InShopNC') or exit('Access Invalid!');
  7. class statModel extends Model
  8. {
  9. /**
  10. * 查询新增会员统计
  11. *
  12. * @param array $condition 条件
  13. * @param string $field 字段
  14. * @param string $group 分组
  15. * @param string $order 排序
  16. * @param int $limit 限制
  17. * @param int $page 分页
  18. * @param boolean $lock 是否锁定
  19. * @return array
  20. */
  21. public function statByMember($where, $field = '*', $page = 0, $order = '', $group = '') {
  22. if (is_array($page)){
  23. if ($page[1] > 0){
  24. return $this->table('member')->field($field)->where($where)->page($page[0],$page[1])->order($order)->group($group)->select();
  25. } else {
  26. return $this->table('member')->field($field)->where($where)->page($page[0])->order($order)->group($group)->select();
  27. }
  28. } else {
  29. return $this->table('member')->field($field)->where($where)->page($page)->order($order)->group($group)->select();
  30. }
  31. }
  32. /**
  33. * 查询单条会员统计
  34. *
  35. * @param array $condition 条件
  36. * @param string $field 字段
  37. * @param string $group 分组
  38. * @param string $order 排序
  39. * @return array
  40. */
  41. public function getoneByMember($where, $field = '*', $order = '', $group = '') {
  42. return $this->table('member')->field($field)->where($where)->order($order)->group($group)->find();
  43. }
  44. /**
  45. * 查询单条店铺统计
  46. *
  47. * @param array $condition 条件
  48. * @param string $field 字段
  49. * @param string $group 分组
  50. * @param string $order 排序
  51. * @return array
  52. */
  53. public function getoneByStore($where, $field = '*', $order = '', $group = '') {
  54. return $this->table('store')->field($field)->where($where)->order($order)->group($group)->find();
  55. }
  56. /**
  57. * 查询店铺统计
  58. */
  59. public function statByStore($where, $field = '*', $page = 0, $limit = 0, $order = '', $group = '') {
  60. if (is_array($page)){
  61. if ($page[1] > 0){
  62. return $this->table('store')->field($field)->where($where)->page($page[0],$page[1])->limit($limit)->group($group)->order($order)->select();
  63. } else {
  64. return $this->table('store')->field($field)->where($where)->page($page[0])->limit($limit)->group($group)->order($order)->select();
  65. }
  66. } else {
  67. return $this->table('store')->field($field)->where($where)->page($page)->limit($limit)->group($group)->order($order)->select();
  68. }
  69. }
  70. /**
  71. * 查询新增店铺统计
  72. */
  73. public function getNewStoreStatList($condition, $field = '*', $page = 0, $order = 'store_id desc', $limit = 0, $group = '') {
  74. return $this->table('store')->field($field)->where($condition)->page($page)->limit($limit)->group($group)->order($order)->select();
  75. }
  76. /**
  77. * 查询会员列表
  78. */
  79. public function getMemberList($where, $field = '*', $page = 0, $order = 'member_id desc', $group = '') {
  80. if (is_array($page)){
  81. if ($page[1] > 0){
  82. return $this->table('member')->field($field)->where($where)->page($page[0],$page[1])->group($group)->order($order)->select();
  83. } else {
  84. return $this->table('member')->field($field)->where($where)->page($page[0])->group($group)->order($order)->select();
  85. }
  86. } else {
  87. return $this->table('member')->field($field)->where($where)->page($page)->group($group)->order($order)->select();
  88. }
  89. }
  90. /**
  91. * 调取店铺等级信息
  92. */
  93. public function getStoreDegree(){
  94. $tmp = $this->table('store_grade')->field('sg_id,sg_name')->where(true)->select();
  95. $sd_list = array();
  96. if(!empty($tmp)){
  97. foreach ($tmp as $k=>$v){
  98. $sd_list[$v['sg_id']] = $v['sg_name'];
  99. }
  100. }
  101. return $sd_list;
  102. }
  103. /**
  104. * 查询会员统计数据记录
  105. *
  106. * @param array $condition 条件
  107. * @param string $field 字段
  108. * @param string $group 分组
  109. * @param string $order 排序
  110. * @param int $limit 限制
  111. * @param int $page 分页
  112. * @return array
  113. */
  114. public function statByStatmember($where, $field = '*', $page = 0, $limit = 0,$order = '', $group = '') {
  115. if (is_array($page)){
  116. if ($page[1] > 0){
  117. return $this->table('stat_member')->field($field)->where($where)->page($page[0],$page[1])->limit($limit)->order($order)->group($group)->select();
  118. } else {
  119. return $this->table('stat_member')->field($field)->where($where)->page($page[0])->limit($limit)->order($order)->group($group)->select();
  120. }
  121. } else {
  122. return $this->table('stat_member')->field($field)->where($where)->page($page)->limit($limit)->order($order)->group($group)->select();
  123. }
  124. }
  125. /**
  126. * 查询商品数量
  127. */
  128. public function getGoodsNum($where){
  129. $rs = $this->field('count(*) as allnum')->table('goods_common')->where($where)->select();
  130. return $rs[0]['allnum'];
  131. }
  132. /**
  133. * 获取预存款数据
  134. */
  135. public function getPredepositInfo($condition, $field = '*', $page = 0, $order = 'lg_add_time desc', $limit = 0, $group = ''){
  136. return $this->table('pd_log')->field($field)->where($condition)->page($page)->limit($limit)->group($group)->order($order)->select();
  137. }
  138. /**
  139. * 获取结算数据
  140. */
  141. public function getBillList($condition,$type,$have_page=true){
  142. switch ($type){
  143. case 'os'://平台
  144. return $this->field('sum(os_order_totals) as oot,sum(os_order_return_totals) as oort,sum(os_commis_totals-os_commis_return_totals) as oct,sum(os_store_cost_totals) as osct,sum(os_result_totals) as ort')->table('order_statis')->where($condition)->select();
  145. break;
  146. case 'ob'://店铺
  147. $page = $have_page?15:'';
  148. return $this->field('order_bill.*,store.member_name')->table('order_bill,store')->join('left join')->on('order_bill.ob_store_id=store.store_id')->where($condition)->page($page)->order('ob_no desc')->select();
  149. break;
  150. }
  151. }
  152. /**
  153. * 查询订单及订单商品的统计
  154. *
  155. * @param array $condition 条件
  156. * @param string $field 字段
  157. * @param string $group 分组
  158. * @param string $order 排序
  159. * @param int $limit 限制
  160. * @param int $page 分页
  161. * @return array
  162. */
  163. public function statByOrderGoods($where, $field = '*', $page = 0, $limit = 0,$order = '', $group = '') {
  164. if (is_array($page)){
  165. if ($page[1] > 0){
  166. return $this->table('order_goods,order')->field($field)->join('left')->on('order_goods.order_id=order.order_id')->where($where)->group($group)->page($page[0],$page[1])->limit($limit)->order($order)->select();
  167. } else {
  168. return $this->table('order_goods,order')->field($field)->join('left')->on('order_goods.order_id=order.order_id')->where($where)->group($group)->page($page[0])->limit($limit)->order($order)->select();
  169. }
  170. } else {
  171. return $this->table('order_goods,order')->field($field)->join('left')->on('order_goods.order_id=order.order_id')->where($where)->group($group)->page($page)->limit($limit)->order($order)->select();
  172. }
  173. }
  174. /**
  175. * 查询订单及订单商品的统计
  176. *
  177. * @param array $condition 条件
  178. * @param string $field 字段
  179. * @param string $group 分组
  180. * @param string $order 排序
  181. * @param int $limit 限制
  182. * @param int $page 分页
  183. * @return array
  184. */
  185. public function statByOrderLog($where, $field = '*', $page = 0, $limit = 0,$order = '', $group = '') {
  186. if (is_array($page)){
  187. if ($page[1] > 0){
  188. return $this->table('order_log,order')->field($field)->join('left')->on('order_log.order_id = order.order_id')->where($where)->group($group)->page($page[0],$page[1])->limit($limit)->order($order)->select();
  189. } else {
  190. return $this->table('order_log,order')->field($field)->join('left')->on('order_log.order_id = order.order_id')->where($where)->group($group)->page($page[0])->limit($limit)->order($order)->select();
  191. }
  192. } else {
  193. return $this->table('order_log,order')->field($field)->join('left')->on('order_log.order_id = order.order_id')->where($where)->group($group)->page($page)->limit($limit)->order($order)->select();
  194. }
  195. }
  196. /**
  197. * 查询退款退货统计
  198. *
  199. * @param array $condition 条件
  200. * @param string $field 字段
  201. * @param string $group 分组
  202. * @param string $order 排序
  203. * @param int $limit 限制
  204. * @param int $page 分页
  205. * @return array
  206. */
  207. public function statByRefundreturn($where, $field = '*', $page = 0, $limit = 0,$order = '', $group = '') {
  208. if (is_array($page)){
  209. if ($page[1] > 0){
  210. return $this->table('refund_return')->field($field)->where($where)->group($group)->page($page[0],$page[1])->limit($limit)->order($order)->select();
  211. } else {
  212. return $this->table('refund_return')->field($field)->where($where)->group($group)->page($page[0])->limit($limit)->order($order)->select();
  213. }
  214. } else {
  215. return $this->table('refund_return')->field($field)->where($where)->group($group)->page($page)->limit($limit)->order($order)->select();
  216. }
  217. }
  218. /**
  219. * 查询店铺动态评分统计
  220. *
  221. * @param array $condition 条件
  222. * @param string $field 字段
  223. * @param string $group 分组
  224. * @param string $order 排序
  225. * @param int $limit 限制
  226. * @param int $page 分页
  227. * @return array
  228. */
  229. public function statByStoreAndEvaluatestore($where, $field = '*', $page = 0, $limit = 0,$order = '', $group = ''){
  230. if (is_array($page)){
  231. if ($page[1] > 0){
  232. return $this->table('evaluate_store,store')->field($field)->join('left')->on('evaluate_store.seval_storeid=store.store_id')->where($where)->group($group)->page($page[0],$page[1])->limit($limit)->order($order)->select();
  233. } else {
  234. return $this->table('evaluate_store,store')->field($field)->join('left')->on('evaluate_store.seval_storeid=store.store_id')->where($where)->group($group)->page($page[0])->limit($limit)->order($order)->select();
  235. }
  236. } else {
  237. return $this->table('evaluate_store,store')->field($field)->join('left')->on('evaluate_store.seval_storeid=store.store_id')->where($where)->group($group)->page($page)->limit($limit)->order($order)->select();
  238. }
  239. }
  240. /**
  241. * 处理搜索时间
  242. */
  243. public function dealwithSearchTime($search_arr){
  244. //初始化时间
  245. //天
  246. if(!$search_arr['search_time']){
  247. $search_arr['search_time'] = date('Y-m-d', time()- 86400);
  248. }
  249. $search_arr['day']['search_time'] = strtotime($search_arr['search_time']);//搜索的时间
  250. //周
  251. if(!$search_arr['searchweek_year']){
  252. $search_arr['searchweek_year'] = date('Y', time());
  253. }
  254. if(!$search_arr['searchweek_month']){
  255. $search_arr['searchweek_month'] = date('m', time());
  256. }
  257. if(!$search_arr['searchweek_week']){
  258. $search_arr['searchweek_week'] = implode('|', getWeek_SdateAndEdate(time()));
  259. }
  260. $weekcurrent_year = $search_arr['searchweek_year'];
  261. $weekcurrent_month = $search_arr['searchweek_month'];
  262. $weekcurrent_week = $search_arr['searchweek_week'];
  263. $search_arr['week']['current_year'] = $weekcurrent_year;
  264. $search_arr['week']['current_month'] = $weekcurrent_month;
  265. $search_arr['week']['current_week'] = $weekcurrent_week;
  266. //月
  267. if(!$search_arr['searchmonth_year']){
  268. $search_arr['searchmonth_year'] = date('Y', time());
  269. }
  270. if(!$search_arr['searchmonth_month']){
  271. $search_arr['searchmonth_month'] = date('m', time());
  272. }
  273. $monthcurrent_year = $search_arr['searchmonth_year'];
  274. $monthcurrent_month = $search_arr['searchmonth_month'];
  275. $search_arr['month']['current_year'] = $monthcurrent_year;
  276. $search_arr['month']['current_month'] = $monthcurrent_month;
  277. return $search_arr;
  278. }
  279. /**
  280. * 获得查询的开始和结束时间
  281. */
  282. public function getStarttimeAndEndtime($search_arr){
  283. if($search_arr['search_type'] == 'day'){
  284. $stime = $search_arr['day']['search_time'];//今天0点
  285. $etime = $search_arr['day']['search_time'] + 86400 - 1;//今天24点
  286. }
  287. if($search_arr['search_type'] == 'week'){
  288. $current_weekarr = explode('|', $search_arr['week']['current_week']);
  289. $stime = strtotime($current_weekarr[0]);
  290. $etime = strtotime($current_weekarr[1])+86400-1;
  291. }
  292. if($search_arr['search_type'] == 'month'){
  293. $stime = strtotime($search_arr['month']['current_year'].'-'.$search_arr['month']['current_month']."-01 0 month");
  294. $etime = getMonthLastDay($search_arr['month']['current_year'],$search_arr['month']['current_month'])+86400-1;
  295. }
  296. return array($stime,$etime);
  297. }
  298. /**
  299. * 查询会员统计数据单条记录
  300. *
  301. * @param array $condition 条件
  302. * @param string $field 字段
  303. * @param string $group 分组
  304. * @param string $order 排序
  305. * @return array
  306. */
  307. public function getOneStatmember($where, $field = '*', $order = '', $group = ''){
  308. return $this->table('stat_member')->field($field)->where($where)->group($group)->order($order)->find();
  309. }
  310. /**
  311. * 更新会员统计数据单条记录
  312. *
  313. * @param array $condition 条件
  314. * @param array $update_arr 更新数组
  315. * @return array
  316. */
  317. public function updateStatmember($where,$update_arr){
  318. return $this->table('stat_member')->where($where)->update($update_arr);
  319. }
  320. /**
  321. * 查询订单的统计
  322. *
  323. * @param array $condition 条件
  324. * @param string $field 字段
  325. * @param string $group 分组
  326. * @param string $order 排序
  327. * @param int $limit 限制
  328. * @param int $page 分页
  329. * @return array
  330. */
  331. public function statByOrder($where, $field = '*', $page = 0, $limit = 0,$order = '', $group = '') {
  332. if (is_array($page)){
  333. if ($page[1] > 0){
  334. return $this->table('order')->field($field)->where($where)->group($group)->page($page[0],$page[1])->limit($limit)->order($order)->select();
  335. } else {
  336. return $this->table('order')->field($field)->where($where)->group($group)->page($page[0])->limit($limit)->order($order)->select();
  337. }
  338. } else {
  339. return $this->table('order')->field($field)->where($where)->group($group)->page($page)->limit($limit)->order($order)->select();
  340. }
  341. }
  342. /**
  343. * 查询积分的统计
  344. *
  345. * @param array $condition 条件
  346. * @param string $field 字段
  347. * @param string $group 分组
  348. * @param string $order 排序
  349. * @param int $limit 限制
  350. * @param int $page 分页
  351. * @return array
  352. */
  353. public function statByPointslog($where, $field = '*', $page = 0, $limit = 0,$order = '', $group = '') {
  354. if (is_array($page)){
  355. if ($page[1] > 0){
  356. return $this->table('points_log')->field($field)->where($where)->group($group)->page($page[0],$page[1])->limit($limit)->order($order)->select();
  357. } else {
  358. return $this->table('points_log')->field($field)->where($where)->group($group)->page($page[0])->limit($limit)->order($order)->select();
  359. }
  360. } else {
  361. return $this->table('points_log')->field($field)->where($where)->group($group)->page($page)->limit($limit)->order($order)->select();
  362. }
  363. }
  364. /**
  365. * 删除会员统计数据记录
  366. *
  367. * @param array $condition 条件
  368. * @param string $field 字段
  369. * @param string $group 分组
  370. * @param string $order 排序
  371. * @param int $limit 限制
  372. * @param int $page 分页
  373. * @return array
  374. */
  375. public function delByStatmember($where = array()) {
  376. $this->table('stat_member')->where($where)->delete();
  377. }
  378. /**
  379. * 查询订单商品缓存的统计
  380. *
  381. * @param array $condition 条件
  382. * @param string $field 字段
  383. * @param string $group 分组
  384. * @param string $order 排序
  385. * @return array
  386. */
  387. public function getoneByStatordergoods($where, $field = '*', $order = '', $group = '') {
  388. return $this->table('stat_ordergoods')->field($field)->where($where)->group($group)->order($order)->find();
  389. }
  390. /**
  391. * 查询订单商品缓存的统计
  392. *
  393. * @param array $condition 条件
  394. * @param string $field 字段
  395. * @param string $group 分组
  396. * @param string $order 排序
  397. * @param int $limit 限制
  398. * @param int $page 分页
  399. * @return array
  400. */
  401. public function statByStatordergoods($where, $field = '*', $page = 0, $limit = 0,$order = '', $group = '') {
  402. if (is_array($page)){
  403. if ($page[1] > 0){
  404. return $this->table('stat_ordergoods')->field($field)->where($where)->group($group)->page($page[0],$page[1])->limit($limit)->order($order)->select();
  405. } else {
  406. return $this->table('stat_ordergoods')->field($field)->where($where)->group($group)->page($page[0])->limit($limit)->order($order)->select();
  407. }
  408. } else {
  409. return $this->table('stat_ordergoods')->field($field)->where($where)->group($group)->page($page)->limit($limit)->order($order)->select();
  410. }
  411. }
  412. /**
  413. * 查询订单缓存的统计
  414. *
  415. * @param array $condition 条件
  416. * @param string $field 字段
  417. * @param string $group 分组
  418. * @param string $order 排序
  419. * @return array
  420. */
  421. public function getoneByStatorder($where, $field = '*', $order = '', $group = '') {
  422. return $this->table('stat_order')->field($field)->where($where)->group($group)->order($order)->find();
  423. }
  424. /**
  425. * 查询订单缓存的统计
  426. *
  427. * @param array $condition 条件
  428. * @param string $field 字段
  429. * @param string $group 分组
  430. * @param string $order 排序
  431. * @param int $limit 限制
  432. * @param int $page 分页
  433. * @return array
  434. */
  435. public function statByStatorder($where, $field = '*', $page = 0, $limit = 0,$order = '', $group = '') {
  436. if (is_array($page)){
  437. if ($page[1] > 0){
  438. return $this->table('stat_order')->field($field)->where($where)->group($group)->page($page[0],$page[1])->limit($limit)->order($order)->select();
  439. } else {
  440. return $this->table('stat_order')->field($field)->where($where)->group($group)->page($page[0])->limit($limit)->order($order)->select();
  441. }
  442. } else {
  443. return $this->table('stat_order')->field($field)->where($where)->group($group)->page($page)->limit($limit)->order($order)->select();
  444. }
  445. }
  446. /**
  447. * 查询商品列表
  448. *
  449. * @param array $condition 条件
  450. * @param string $field 字段
  451. * @param string $group 分组
  452. * @param string $order 排序
  453. * @param int $limit 限制
  454. * @param int $page 分页
  455. * @return array
  456. */
  457. public function statByGoods($where, $field = '*', $page = 0, $limit = 0,$order = '', $group = '') {
  458. if (is_array($page)){
  459. if ($page[1] > 0){
  460. return $this->table('goods')->field($field)->where($where)->group($group)->page($page[0],$page[1])->limit($limit)->order($order)->select();
  461. } else {
  462. return $this->table('goods')->field($field)->where($where)->group($group)->page($page[0])->limit($limit)->order($order)->select();
  463. }
  464. } else {
  465. return $this->table('goods')->field($field)->where($where)->group($group)->page($page)->limit($limit)->order($order)->select();
  466. }
  467. }
  468. /**
  469. * 查询流量统计单条记录
  470. *
  471. * @param array $condition 条件
  472. * @param string $field 字段
  473. * @param string $group 分组
  474. * @param string $order 排序
  475. * @return array
  476. */
  477. public function getoneByFlowstat($tablename = 'flowstat', $where, $field = '*', $order = '', $group = '') {
  478. return $this->table($tablename)->field($field)->where($where)->group($group)->order($order)->find();
  479. }
  480. /**
  481. * 查询流量统计记录
  482. *
  483. * @param array $condition 条件
  484. * @param string $field 字段
  485. * @param string $group 分组
  486. * @param string $order 排序
  487. * @param int $limit 限制
  488. * @param int $page 分页
  489. * @return array
  490. */
  491. public function statByFlowstat($tablename = 'flowstat', $where, $field = '*', $page = 0, $limit = 0,$order = '', $group = '')
  492. {
  493. if (is_array($page)){
  494. if ($page[1] > 0){
  495. return $this->table($tablename)->field($field)->where($where)->group($group)->page($page[0],$page[1])->limit($limit)->order($order)->select();
  496. } else {
  497. return $this->table($tablename)->field($field)->where($where)->group($group)->page($page[0])->limit($limit)->order($order)->select();
  498. }
  499. } else {
  500. return $this->table($tablename)->field($field)->where($where)->group($group)->page($page)->limit($limit)->order($order)->select();
  501. }
  502. }
  503. public function statDailyList($where, $field = '*', $page = 0, $limit = 0,$order = 'date_id desc')
  504. {
  505. return $this->table('stat_daily')->field($field)->where($where)->page($page)->limit($limit)->order($order)->select();
  506. }
  507. }