MineServices.php 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238
  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. $query = MineListExt::where('mine_id', $mine_id)->first();
  113. if ($query) {
  114. $result = MineListExt::where('mine_id', $mine_id)->update(
  115. [
  116. 'ip' => $params['ip'],
  117. 'port' => $params['port'],
  118. 'key' => $params['key'],
  119. 'secret' => $params['secret'],
  120. 'is_hak' => $params['is_hak'],
  121. 'updated_at' => date('Y-m-d H:i:s'),
  122. ]
  123. );
  124. } else {
  125. $result = MineListExt::insert(
  126. [
  127. 'mine_id' => $mine_id,
  128. 'ip' => $params['ip'],
  129. 'port' => $params['port'],
  130. 'key' => $params['key'],
  131. 'secret' => $params['secret'],
  132. 'is_hak' => $params['is_hak'],
  133. 'created_at' => date('Y-m-d H:i:s'),
  134. 'updated_at' => date('Y-m-d H:i:s'),
  135. ]
  136. );
  137. }
  138. return $result;
  139. }
  140. //查询后台矿区列表
  141. public static function getAdminMineList()
  142. {
  143. $mine_list = MineList::orderBy('sort', 'desc')->get()->toArray();
  144. if ($mine_list) {
  145. $result = self::sortMineListExt($mine_list);
  146. foreach ($result as $key => $val) {
  147. if (isset($val['child'])) {
  148. $sort = array_column($val['child'], 'sort');
  149. array_multisort($sort, SORT_ASC, $val['child']);
  150. }
  151. }
  152. return $result;
  153. }
  154. return [];
  155. }
  156. //递归查询矿区扩展信息
  157. public static function sortMineListExt($mine_list, $pid = '0')
  158. {
  159. $arr = [];
  160. if (empty($mine_list)) {
  161. return [];
  162. }
  163. $num = 0;
  164. foreach ($mine_list as $key => $val) {
  165. if ($val['parent_id'] == $pid) {
  166. $arr[$num] = $val;
  167. $query = MineListExt::where('mine_id', $val['id'])->first();
  168. if ($query) {
  169. $arr[$num]['ip'] = $query->ip;
  170. $arr[$num]['port'] = $query->port;
  171. $arr[$num]['key'] = $query->key;
  172. $arr[$num]['secret'] = $query->secret;
  173. $arr[$num]['is_hak'] = $query->is_hak == MineEnum::IS_HAK_YES ? '是' : '否';
  174. } else {
  175. $arr[$num]['ip'] = '';
  176. $arr[$num]['port'] = '';
  177. $arr[$num]['key'] = '';
  178. $arr[$num]['secret'] = '';
  179. $arr[$num]['is_hak'] = '否';
  180. }
  181. $arr[$num]['child'] = self::sortMineListExt($mine_list, $val['id']);
  182. if (count($arr[$num]['child']) == 0) {
  183. unset($arr[$num]['child']);
  184. }
  185. $num++;
  186. }
  187. }
  188. return $arr;
  189. }
  190. //查询后台单个矿区
  191. public static function getAdminMineOne($mine_id)
  192. {
  193. $mine_list = MineList::find($mine_id);
  194. $mine_list->ip = '';
  195. $mine_list->port = '';
  196. $mine_list->key = '';
  197. $mine_list->secret = '';
  198. $mine_list->is_hak = MineEnum::IS_HAK_NO;
  199. $mine_list_ext = MineListExt::where('mine_id', $mine_id)->first();
  200. if ($mine_list_ext) {
  201. $mine_list->ip = $mine_list_ext->ip;
  202. $mine_list->port = $mine_list_ext->port;
  203. $mine_list->key = $mine_list_ext->key;
  204. $mine_list->secret = $mine_list_ext->secret;
  205. $mine_list->is_hak = $mine_list_ext->is_hak;
  206. }
  207. return $mine_list;
  208. }
  209. }