MineServices.php 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: qiuzijian
  5. * Date: 2021-04-17
  6. * Time: 16:56
  7. */
  8. namespace Modules\Mine\Services;
  9. use App\Enum\ApiEnum;
  10. use Illuminate\Support\Arr;
  11. use Illuminate\Support\Facades\Cache;
  12. use Illuminate\Support\Facades\Log;
  13. use Modules\Admin\Traits\ClassifyMethod;
  14. use Modules\Mine\Entities\MineList;
  15. use Modules\Mine\Entities\MineListExt;
  16. use Modules\Mine\Enum\MineEnum;
  17. class MineServices{
  18. use ClassifyMethod;
  19. public function __construct()
  20. {
  21. }
  22. //初始化mine_list表
  23. public function initMineList()
  24. {
  25. $this->classify = new MineList();
  26. $this->cacheTitle = 'MineManageList';
  27. }
  28. //获取矿井列表
  29. public static function getMineList()
  30. {
  31. $result['status'] = true;
  32. $result['msg'] = ApiEnum::RETURN_SUCCESS;
  33. $mine_list = MineList::orderBy('sort', 'desc')->orderBy('id', 'asc')->where(
  34. [
  35. 'parent_id' => 0
  36. ]
  37. )->select(
  38. [
  39. 'id as mine_id',
  40. 'title as name',
  41. ]
  42. )->get()->toArray();
  43. $result['data'] = $mine_list;
  44. return $result;
  45. }
  46. //获取矿区列表
  47. public static function getAreaList($mine_id = '')
  48. {
  49. $result['status'] = true;
  50. $result['msg'] = ApiEnum::RETURN_SUCCESS;
  51. $mine_list = MineList::orderBy('sort', 'desc')->orderBy('id', 'asc')->select(
  52. [
  53. 'id as mine_id',
  54. 'title as name',
  55. 'parent_id',
  56. ]
  57. )->get()->toArray();
  58. if ($mine_list) {
  59. $mine_list = self::sortMineList($mine_list);
  60. }
  61. if ($mine_id) {
  62. foreach ($mine_list as $key => $val) {
  63. if ($val['mine_id'] != $mine_id) {
  64. unset($mine_list[$key]);
  65. }
  66. }
  67. }
  68. $result['data'] = $mine_list;
  69. return $result;
  70. }
  71. //递归排序矿区列表
  72. public static function sortMineList($mine_list, $pid = '0')
  73. {
  74. $arr = [];
  75. if (empty($mine_list)) {
  76. return '';
  77. }
  78. $num = 0;
  79. foreach ($mine_list as $key => $value) {
  80. if ($value['parent_id'] == $pid) {
  81. $arr[$num] = $value;
  82. $arr[$num]['children'] = self::sortMineList($mine_list, $value['mine_id']);
  83. unset($arr[$num]['parent_id']);
  84. if (count($arr[$num]['children']) == 0) {
  85. unset($arr[$num]['children']);
  86. }
  87. $num++;
  88. }
  89. }
  90. return $arr;
  91. }
  92. //矿区扩展信息表入库
  93. public static function insertMineListExt($mine_id, $params)
  94. {
  95. $result = MineListExt::insert(
  96. [
  97. 'mine_id' => $mine_id,
  98. 'ip' => $params['ip'],
  99. 'port' => $params['port'],
  100. 'key' => $params['key'],
  101. 'secret' => $params['secret'],
  102. 'is_hak' => $params['is_hak'],
  103. 'created_at' => date('Y-m-d H:i:s'),
  104. 'updated_at' => date('Y-m-d H:i:s'),
  105. ]
  106. );
  107. return $result;
  108. }
  109. //编辑矿区扩展信息表
  110. public static function editMineListExt($mine_id, $params)
  111. {
  112. $result = MineListExt::where('mine_id', $mine_id)->update(
  113. [
  114. 'ip' => $params['ip'],
  115. 'port' => $params['port'],
  116. 'key' => $params['key'],
  117. 'secret' => $params['secret'],
  118. 'is_hak' => $params['is_hak'],
  119. 'created_at' => date('Y-m-d H:i:s'),
  120. 'updated_at' => date('Y-m-d H:i:s'),
  121. ]
  122. );
  123. return $result;
  124. }
  125. //查询后台矿区列表
  126. public static function getAdminMineList()
  127. {
  128. $mine_list = MineList::orderBy('sort', 'desc')->get()->toArray();
  129. if ($mine_list) {
  130. $result = self::sortMineListExt($mine_list);
  131. foreach ($result as $key => $val) {
  132. if (isset($val['child'])) {
  133. $sort = array_column($val['child'], 'sort');
  134. array_multisort($sort, SORT_ASC, $val['child']);
  135. }
  136. }
  137. return $result;
  138. }
  139. return [];
  140. }
  141. //递归查询矿区扩展信息
  142. public static function sortMineListExt($mine_list, $pid = '0')
  143. {
  144. $arr = [];
  145. if (empty($mine_list)) {
  146. return [];
  147. }
  148. $num = 0;
  149. foreach ($mine_list as $key => $val) {
  150. if ($val['parent_id'] == $pid) {
  151. $arr[$num] = $val;
  152. $query = MineListExt::where('mine_id', $val['id'])->first();
  153. if ($query) {
  154. $arr[$num]['ip'] = $query->ip;
  155. $arr[$num]['port'] = $query->port;
  156. $arr[$num]['key'] = $query->key;
  157. $arr[$num]['secret'] = $query->secret;
  158. $arr[$num]['is_hak'] = $query->is_hak == MineEnum::IS_HAK_YES ? '是' : '否';
  159. } else {
  160. $arr[$num]['ip'] = '';
  161. $arr[$num]['port'] = '';
  162. $arr[$num]['key'] = '';
  163. $arr[$num]['secret'] = '';
  164. $arr[$num]['is_hak'] = '否';
  165. }
  166. $arr[$num]['child'] = self::sortMineListExt($mine_list, $val['id']);
  167. if (count($arr[$num]['child']) == 0) {
  168. unset($arr[$num]['child']);
  169. }
  170. $num++;
  171. }
  172. }
  173. return $arr;
  174. }
  175. //查询后台单个矿区
  176. public static function getAdminMineOne($mine_id)
  177. {
  178. $mine_list = MineList::leftJoin(
  179. 'mine_list_ext', 'mine_list.id', '=', 'mine_list_ext.mine_id'
  180. )->where('mine_list.id', $mine_id)->select(
  181. [
  182. 'mine_list.id',
  183. 'mine_list.parent_id',
  184. 'mine_list.title',
  185. 'mine_list.sort',
  186. 'mine_list_ext.ip',
  187. 'mine_list_ext.port',
  188. 'mine_list_ext.key',
  189. 'mine_list_ext.secret',
  190. 'mine_list_ext.is_hak'
  191. ]
  192. )->first();
  193. return $mine_list;
  194. }
  195. }