stat.model.php 21 KB

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