CommonService.class.php 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. <?php
  2. namespace Admin\Service;
  3. /**
  4. * CommonService
  5. */
  6. abstract class CommonService {
  7. /**
  8. * 得到数据行数
  9. * @param array $where
  10. * @return int
  11. */
  12. public function getCount(array $where) {
  13. $ret = $this->getM()->where($where)->count();
  14. return $ret;
  15. }
  16. /**
  17. * 得到分页数据
  18. * @param array $where 分页条件
  19. * @param int $firstRow 起始行
  20. * @param int $listRows 行数
  21. * @return array
  22. */
  23. public function getPagination($where, $fields,$order,$firstRow,$listRows) {
  24. // 是否关联模型
  25. $M = $this->isRelation() ? $this->getD()->relation(true) : $this->getM();
  26. // 需要查找的字段
  27. if (isset($fields)) {
  28. $M = $M->field($fields);
  29. }
  30. // 条件查找
  31. if (isset($where)) {
  32. $M = $M->where($where);
  33. }
  34. // 数据排序
  35. if (isset($order)) {
  36. $M = $M->order($order);
  37. }
  38. // 查询限制
  39. if (isset($firstRow) && isset($listRows)) {
  40. $M = $M->limit($firstRow . ',' . $listRows);
  41. } else if (isset($listRows) && isset($firstRow)) {
  42. $M = $M->limit($listRows);
  43. }
  44. return $M->select();
  45. }
  46. /**
  47. * 返回结果值
  48. * @param int $status
  49. * @param fixed $data
  50. * @return array
  51. */
  52. protected function resultReturn($status, $data) {
  53. return array('status' => $status,
  54. 'data' => $data);
  55. }
  56. /**
  57. * 返回错误的结果值
  58. * @param string $error 错误信息
  59. * @return array 带'error'键值的数组
  60. */
  61. protected function errorResultReturn($error) {
  62. return $this->resultReturn(false, array('error' => $error));
  63. }
  64. /**
  65. * 得到M
  66. * @return Model
  67. */
  68. protected function getM() {
  69. $model_name = $this->getModelName();
  70. if (strpos($model_name, '.') !== false) {
  71. return M($model_name, null);
  72. } else {
  73. return M($model_name);
  74. }
  75. }
  76. /**
  77. * 得到D
  78. * @return Model
  79. */
  80. protected function getD() {
  81. return D($this->getModelName());
  82. }
  83. /**
  84. * 是否关联查询
  85. * @return boolean
  86. */
  87. protected function isRelation() {
  88. return true;
  89. }
  90. /**
  91. * 得到模型的名称
  92. * @return string
  93. */
  94. protected abstract function getModelName();
  95. protected function getCtrName() {
  96. $ctrName = CONTROLLER_NAME;
  97. if(strpos($ctrName, '.') !== false && strtoupper($ctrName[0]) === $ctrName[0]) {
  98. $ctrName[0] = strtolower($ctrName[0]);
  99. }
  100. return $ctrName;
  101. }
  102. }