Info.php 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: leo
  5. * Date: 2018/11/2
  6. * Time: 上午9:16
  7. */
  8. namespace common\helpers\user;
  9. use common\components\ActiveRecord;
  10. use common\helpers\Cache;
  11. use common\helpers\Tool;
  12. use common\models\BaUser;
  13. use common\models\BaUserInfo;
  14. use common\models\Countries;
  15. use common\models\PerfMonth;
  16. use common\models\PerfPeriod;
  17. use common\models\Period;
  18. use common\models\DeclarationLevel;
  19. use common\models\EmployLevel;
  20. use common\models\OpenBank;
  21. use common\models\Region;
  22. use common\models\User;
  23. use common\models\UserBonus;
  24. use common\models\UserInfo;
  25. use common\models\UserNetwork;
  26. use common\models\UserWallet;
  27. use Yii;
  28. use yii\base\Exception;
  29. class Info {
  30. /**
  31. * 获取用户ID
  32. * @param $userName
  33. * @return mixed
  34. */
  35. public static function getUserIdByUserName($userName) {
  36. $user = UserInfo::findOneAsArray('USER_NAME=:USER_NAME AND DELETED=0', [':USER_NAME' => $userName], 'USER_ID');
  37. return $user ? $user['USER_ID'] : null;
  38. }
  39. /**
  40. * 获取会员名通过ID
  41. * @param $userId
  42. * @return mixed|null
  43. */
  44. public static function getUserNameByUserId($userId) {
  45. $user = UserInfo::findOneAsArray('USER_ID=:USER_ID AND DELETED=0', [':USER_ID' => $userId], 'USER_NAME');
  46. return $user ? $user['USER_NAME'] : null;
  47. }
  48. /**
  49. * 获取用户EMAIL
  50. * @param $userName
  51. * @return mixed
  52. */
  53. public static function getEmailByUserId($userId) {
  54. $user = UserInfo::findOneAsArray('USER_ID=:USER_ID AND DELETED=0', [':USER_ID' => $userId], 'USER_NAME');
  55. return $user ? $user['EMAIL'] : null;
  56. }
  57. /**
  58. * 获取会员姓名通过ID
  59. * @param $userId
  60. * @return null
  61. */
  62. public static function getUserRealNameByUserId($userId) {
  63. $user = User::findOneAsArray('ID=:ID AND DELETED=0', [':ID' => $userId], 'REAL_NAME');
  64. return $user ? $user['REAL_NAME'] : null;
  65. }
  66. /**
  67. * 获取会员邮箱通过ID
  68. * @param $userId
  69. * @return null
  70. */
  71. public static function getUserEmailByUserId($userId) {
  72. $user = User::findOneAsArray('ID=:ID AND DELETED=0', [':ID' => $userId], 'EMAIL');
  73. return $user ? $user['EMAIL'] : null;
  74. }
  75. /**
  76. * 获取会员国家通过ID
  77. * @param $userId
  78. * @return null
  79. */
  80. public static function getUserCountryByUserId($userId) {
  81. $user = User::findOneAsArray('ID=:ID AND DELETED=0', [':ID' => $userId], 'COUNTRY_ID');
  82. return $user ? $user['COUNTRY_ID'] : null;
  83. }
  84. /**
  85. * 获取会员语言通过ID
  86. * @param $userId
  87. * @return null
  88. */
  89. public static function getUserLanguageByUserId($userId) {
  90. $user = User::findOneAsArray('ID=:ID AND DELETED=0', [':ID' => $userId], 'LANGUAGE_ID');
  91. return $user ? $user['LANGUAGE_ID'] : null;
  92. }
  93. /**
  94. * 获取手机号通过ID
  95. * @param $userId
  96. * @return null
  97. */
  98. public static function getUserMobileByUserId($userId) {
  99. $user = User::findOneAsArray('ID=:ID AND DELETED=0', [':ID' => $userId], 'MOBILE');
  100. return $user ? $user['MOBILE'] : null;
  101. }
  102. /**
  103. * 通过用户ID获取用户的编号和名称
  104. * @param $userId
  105. * @return array|null
  106. */
  107. public static function getBaseUserById($userId) {
  108. return User::findOneAsArray('ID=:ID', [':ID' => $userId], 'ID,USER_NAME,REAL_NAME');
  109. }
  110. /**
  111. * 通过用户ID获取用户的编号和名称
  112. * @param $username
  113. * @return array|null
  114. */
  115. public static function getBaseUserByUserName($username) {
  116. return User::findOneAsArray('USER_NAME=:USER_NAME', [':USER_NAME' => $username]);
  117. }
  118. /**
  119. * 当前期数的会员信息
  120. * @param $userId
  121. * @return array|\yii\db\ActiveRecord|null
  122. * @throws Exception
  123. */
  124. public static function baseInfoNowPeriod($userId) {
  125. $data = User::find()->where('ID=:ID', [':ID' => $userId])->asArray()->one();
  126. if (!$data) throw new Exception('Member does not exist'.$userId);//会员不存在
  127. $infoData = UserInfo::find()->where('USER_ID=:USER_ID', [':USER_ID' => $userId])->select('ZC_PV,CON_UID,REC_UID,CON_NUM,REC_NUM,NETWORK_DEEP,RELATION_DEEP,SYSTEM_ID,REG_TYPE,REG_NAME,CREDIT_CODE,PREMISES,LEGAL_PERSON,CLOSE_LOGIN,IS_BIND_MAIN,HIGHEST_EMP_LV,HIGHEST_EMP_LV_PERIOD,SHOULD_REG_TYPE,IS_SYSTEM_LEADER,ALLOW_TRANSFER,TRANSFER_PROP,IS_GROUP_LEADER,GROUP_LEADER_AT,SHOW_EMP_LV')->asArray()->one();
  128. if ($infoData) {
  129. $data = array_merge($data, $infoData);
  130. }
  131. if (!$data['DEC_LV']) $data['DEC_LV'] = DeclarationLevel::getDefaultLevelId();
  132. if (!$data['LAST_DEC_LV']) $data['LAST_DEC_LV'] = DeclarationLevel::getDefaultLevelId();
  133. if (!$data['EMP_LV']) $data['EMP_LV'] = EmployLevel::getDefaultLevelId();
  134. return $data;
  135. }
  136. /**
  137. * 获取会员信息,通过用户编号
  138. * @param $userId
  139. * @return array|\yii\db\ActiveRecord|null
  140. * @throws Exception
  141. */
  142. public static function baseInfoByUserName($userName) {
  143. $data = User::find()->where('USER_NAME=:USER_NAME', [':USER_NAME' => $userName])->asArray()->one();
  144. if (!$data) throw new Exception('Member does not exist:'.$userName);//会员不存在
  145. $userId = $data['ID'];
  146. $infoData = UserInfo::find()
  147. ->where('USER_ID=:USER_ID', [':USER_ID' => $userId])
  148. ->select('ZC_PV,CON_UID,REC_UID,CON_NUM,REC_NUM,NETWORK_DEEP,RELATION_DEEP,SYSTEM_ID,REG_TYPE,REG_NAME,
  149. CREDIT_CODE,PREMISES,LEGAL_PERSON,CLOSE_LOGIN,IS_BIND_MAIN,HIGHEST_EMP_LV,HIGHEST_EMP_LV_PERIOD,
  150. SHOULD_REG_TYPE,IS_SYSTEM_LEADER,ALLOW_TRANSFER,TRANSFER_PROP,IS_GROUP_LEADER,GROUP_LEADER_AT,SHOW_EMP_LV')
  151. ->asArray()
  152. ->one();
  153. if ($infoData) {
  154. $data = array_merge($data, $infoData);
  155. }
  156. if (!$data['DEC_LV']) $data['DEC_LV'] = DeclarationLevel::getDefaultLevelId();
  157. if (!$data['LAST_DEC_LV']) $data['LAST_DEC_LV'] = DeclarationLevel::getDefaultLevelId();
  158. if (!$data['EMP_LV']) $data['EMP_LV'] = EmployLevel::getDefaultLevelId();
  159. return $data;
  160. }
  161. public static function baseInfoZhByUserName($userName) {
  162. $baseInfo = self::baseInfoByUserName($userName);
  163. // 状态处理
  164. $baseInfo['STATUS_NAME'] = Tool::paramConvert(Yii::$app->params['userStatus'])[$baseInfo['STATUS']]['label'];
  165. //登录状态
  166. $baseInfo['LOGIN_STATUS_NAME'] = $baseInfo['ALLOW_LOGIN'] == 0 ? '禁止登录' : '允许登录';
  167. // 子公司
  168. $baseInfo['SUB_COM_NAME'] = '';
  169. $baseInfo['PROVINCE_NAME'] = $baseInfo['PROVINCE'] ? Region::getCnName($baseInfo['PROVINCE']) : '';
  170. $baseInfo['CITY_NAME'] = $baseInfo['CITY'] ? Region::getCnName($baseInfo['CITY']) : '';
  171. $baseInfo['COUNTY_NAME'] = $baseInfo['COUNTY'] ? Region::getCnName($baseInfo['COUNTY']) : '';
  172. $baseInfo['BANK_PROVINCE_NAME'] = $baseInfo['BANK_PROVINCE'] ? Region::getCnName($baseInfo['BANK_PROVINCE']) : '';
  173. $baseInfo['BANK_CITY_NAME'] = $baseInfo['BANK_CITY'] ? Region::getCnName($baseInfo['BANK_CITY']) : '';
  174. $baseInfo['BANK_COUNTY_NAME'] = $baseInfo['BANK_COUNTY'] ? Region::getCnName($baseInfo['BANK_COUNTY']) : '';
  175. $baseInfo['OPEN_BANK_NAME'] = $baseInfo['OPEN_BANK'] ? OpenBank::getCnName($baseInfo['OPEN_BANK']) : '';
  176. // 获取会员体系
  177. $baseInfo['SYSTEM_NAME'] = '';
  178. // 获取会员级别名称
  179. $baseInfo['DEC_LV_NAME'] = Cache::getDecLevelConfig()[$baseInfo['DEC_LV']]['LEVEL_NAME'];
  180. $baseInfo['LAST_DEC_LV_NAME'] = Cache::getDecLevelConfig()[$baseInfo['LAST_DEC_LV']]['LEVEL_NAME'];
  181. $baseInfo['EMP_LV_NAME'] = Cache::getEmpLevelConfig()[$baseInfo['EMP_LV']]['LEVEL_NAME'];
  182. $baseInfo['HIGHEST_EMP_LV_NAME'] = '';
  183. // 获取会员报单级别
  184. $baseInfo['DEC_ROLE_NAME'] = '无';
  185. //民族
  186. $baseInfo['NATION_NAME'] = \Yii::$app->params['nation'][$baseInfo['NATION']]['name']??'';
  187. // 国家
  188. $baseInfo['COUNTRY_NAME'] = Countries::getById($baseInfo['COUNTRY_ID'])['NAME'] ?? '';
  189. return $baseInfo;
  190. }
  191. /**
  192. * 基本信息
  193. * @param $userId
  194. * @param $periodNum
  195. * @return array|\yii\db\ActiveRecord|null
  196. * @throws Exception
  197. */
  198. public static function baseInfo($userId, $periodNum = null) {
  199. if($periodNum == null){
  200. return self::baseInfoNowPeriod($userId);
  201. } else {
  202. // 获取当前期数
  203. $tableName = '{{%USER_ALL_'.$periodNum.'}}';
  204. if(ActiveRecord::isExistsTable($tableName, 'dbNetPoint')){
  205. if($data = \Yii::$app->dbNetPoint->createCommand("SELECT * FROM $tableName WHERE ID=:ID")->bindValues([':ID'=>$userId])->queryOne()) {
  206. if (!$data['DEC_LV']) $data['DEC_LV'] = DeclarationLevel::getDefaultLevelId();
  207. if (!$data['LAST_DEC_LV']) $data['LAST_DEC_LV'] = DeclarationLevel::getDefaultLevelId();
  208. if (!$data['EMP_LV']) $data['EMP_LV'] = EmployLevel::getDefaultLevelId();
  209. if (!$data['HIGHEST_EMP_LV']) $data['HIGHEST_EMP_LV'] = EmployLevel::getDefaultLevelId();
  210. return $data;
  211. }else{
  212. return self::baseInfoNowPeriod($userId);
  213. }
  214. } else {
  215. return self::baseInfoNowPeriod($userId);
  216. }
  217. }
  218. }
  219. /**
  220. * 基本信息含中文地区和中文子公司
  221. * @param $userId
  222. * @param $periodNum
  223. * @return array|\yii\db\ActiveRecord|null
  224. * @throws Exception
  225. */
  226. public static function baseInfoZh($userId, $periodNum = null) {
  227. $baseInfo = self::baseInfo($userId, $periodNum);
  228. // 状态处理
  229. $baseInfo['STATUS_NAME'] = Tool::paramConvert(Yii::$app->params['userStatus'])[$baseInfo['STATUS']]['label'];
  230. //登录状态
  231. $baseInfo['LOGIN_STATUS_NAME'] = $baseInfo['ALLOW_LOGIN'] == 0 ? '禁止登录' : '允许登录';
  232. // 子公司
  233. $baseInfo['SUB_COM_NAME'] = '';
  234. $baseInfo['PROVINCE_NAME'] = $baseInfo['PROVINCE'] ? Region::getCnName($baseInfo['PROVINCE']) : '';
  235. $baseInfo['CITY_NAME'] = $baseInfo['CITY'] ? Region::getCnName($baseInfo['CITY']) : '';
  236. $baseInfo['COUNTY_NAME'] = $baseInfo['COUNTY'] ? Region::getCnName($baseInfo['COUNTY']) : '';
  237. $baseInfo['BANK_PROVINCE_NAME'] = $baseInfo['BANK_PROVINCE'] ? Region::getCnName($baseInfo['BANK_PROVINCE']) : '';
  238. $baseInfo['BANK_CITY_NAME'] = $baseInfo['BANK_CITY'] ? Region::getCnName($baseInfo['BANK_CITY']) : '';
  239. $baseInfo['BANK_COUNTY_NAME'] = $baseInfo['BANK_COUNTY'] ? Region::getCnName($baseInfo['BANK_COUNTY']) : '';
  240. $baseInfo['OPEN_BANK_NAME'] = $baseInfo['OPEN_BANK'] ? OpenBank::getCnName($baseInfo['OPEN_BANK']) : '';
  241. // 获取会员体系
  242. $baseInfo['SYSTEM_NAME'] = '';
  243. // 获取会员级别名称
  244. $baseInfo['DEC_LV_NAME'] = Cache::getDecLevelConfig()[$baseInfo['DEC_LV']]['LEVEL_NAME'];
  245. $baseInfo['LAST_DEC_LV_NAME'] = Cache::getDecLevelConfig()[$baseInfo['LAST_DEC_LV']]['LEVEL_NAME'];
  246. $baseInfo['EMP_LV_NAME'] = Cache::getEmpLevelConfig()[$baseInfo['EMP_LV']]['LEVEL_NAME'];
  247. $baseInfo['HIGHEST_EMP_LV_NAME'] = '';
  248. // 获取会员报单级别
  249. $baseInfo['DEC_ROLE_NAME'] = '无';
  250. //民族
  251. $baseInfo['NATION_NAME'] = \Yii::$app->params['nation'][$baseInfo['NATION']]['name']??'';
  252. return $baseInfo;
  253. }
  254. /**
  255. * 基本信息及余额
  256. * @param $userId
  257. * @param $periodNum
  258. * @return array
  259. */
  260. public static function baseInfoWithBalance($userId, $periodNum = null) {
  261. $baseInfo = self::baseInfoZh($userId, $periodNum);
  262. if ($baseInfo) {
  263. $userBonus = self::BalanceInfo($userId);
  264. }
  265. return array_merge($baseInfo, $userBonus);
  266. }
  267. /**
  268. * 获取余额信息
  269. * @param $userId
  270. * @return array|int[]|null
  271. */
  272. public static function BalanceInfo($userId) {
  273. $userBonus = [
  274. 'BONUS' => 0,
  275. 'BONUS_FREEZE' => 0,
  276. 'CF' => 0,
  277. 'LX' => 0,
  278. 'QY_TOTAL' => 0,
  279. 'YC_TOTAL' => 0,
  280. 'FX_TOTAL' => 0,
  281. 'LS_TOTAL' => 0,
  282. 'CF_TOTAL' => 0,
  283. 'LX_TOTAL' => 0,
  284. 'FL_TOTAL' => 0,
  285. 'BT_TOTAL' => 0,
  286. 'FW_TOTAL' => 0,
  287. 'CASH' => 0,
  288. ];
  289. if ($userBonusResult = UserBonus::findOneAsArray(['USER_ID' => $userId])) {
  290. $userBonus = $userBonusResult;
  291. }
  292. if ($userCashResult = UserWallet::findOneAsArray(['USER_ID' => $userId])) {
  293. $userBonus['CASH'] = $userCashResult['CASH'];
  294. }
  295. return $userBonus;
  296. }
  297. /**
  298. * 基本信息带着网络和节点信息
  299. * @param $userId
  300. * @param $periodNum
  301. * @return array|null|\yii\db\ActiveRecord
  302. */
  303. public static function baseInfoWithNet($userId, $periodNum = null) {
  304. $baseInfo = self::baseInfoZh($userId, $periodNum);
  305. $baseInfo['CON_USER_NAME'] = '';
  306. $baseInfo['CON_REAL_NAME'] = '';
  307. $baseInfo['LOCATION'] = '';
  308. $baseInfo['REC_USER_NAME'] = '';
  309. $baseInfo['REC_REAL_NAME'] = '';
  310. $baseInfo['DEC_USER_NAME'] = '';
  311. $baseInfo['DEC_REAL_NAME'] = '';
  312. $baseInfo['DEC_DEC_LV'] = '';
  313. $baseInfo['DEC_DEC_LV_NAME'] = '';
  314. if ($baseInfo) {
  315. if (isset($baseInfo['CON_UID']) && $baseInfo['CON_UID']) {
  316. // 安置网上级
  317. //$netParentUserInfo = UserNetwork::getFirstParentUserInfo($userId);
  318. $netParentBaseInfo = self::baseInfo($baseInfo['CON_UID']);
  319. $networkParent = UserNetwork::findOneAsArray('USER_ID=:USER_ID', [':USER_ID' => $userId]);
  320. //$baseInfo['CON_UID'] = $baseInfo['CON_UID'];
  321. $baseInfo['CON_USER_NAME'] = $netParentBaseInfo['USER_NAME'] ?? '';
  322. $baseInfo['CON_REAL_NAME'] = $netParentBaseInfo['REAL_NAME'] ?? '';
  323. $baseInfo['LOCATION'] = $networkParent['RELATIVE_LOCATION'] ?? 1;
  324. }
  325. if (isset($baseInfo['REC_UID']) && $baseInfo['REC_UID']) {
  326. // 推荐网上级
  327. //$relationParentUserInfo = UserRelation::getFirstParentUserInfo($userId);
  328. $relationParentBaseInfo = self::baseInfo($baseInfo['REC_UID']);
  329. //$baseInfo['REC_UID'] = $relationParentUserInfo['USER_ID'];
  330. $baseInfo['REC_USER_NAME'] = $relationParentBaseInfo['USER_NAME'];
  331. $baseInfo['REC_REAL_NAME'] = $relationParentBaseInfo['REAL_NAME'];
  332. }
  333. if (isset($baseInfo['DEC_ID']) && $baseInfo['DEC_ID']) {
  334. $decBaseInfo = self::baseInfoZh($baseInfo['DEC_ID']);
  335. $baseInfo['DEC_USER_NAME'] = $decBaseInfo['USER_NAME'];
  336. $baseInfo['DEC_REAL_NAME'] = $decBaseInfo['REAL_NAME'];
  337. $baseInfo['DEC_DEC_LV'] = $decBaseInfo['DEC_LV'];
  338. $baseInfo['DEC_DEC_LV_NAME'] = $decBaseInfo['DEC_LV_NAME'];
  339. $baseInfo['DEC_DEC_ROLE_NAME'] = $decBaseInfo['DEC_ROLE_NAME'];
  340. $baseInfo['DEC_DEC_ROLE_ID'] = $decBaseInfo['DEC_ROLE_ID'];
  341. }
  342. }
  343. return $baseInfo;
  344. }
  345. /**
  346. * 基本信息含网络和余额
  347. * @param $userId
  348. * @param $periodNum
  349. * @return array
  350. */
  351. public static function baseInfoWithNetAndBalance($userId, $periodNum = null) {
  352. return array_merge(self::baseInfoWithNet($userId), self::BalanceInfo($userId));
  353. }
  354. /**
  355. * 通过用户名获取用户信息从INFO表
  356. * @param $userName
  357. * @return array|null|\yii\db\ActiveRecord
  358. */
  359. public static function getUserByUserNameFromUserInfoTable($userName) {
  360. return UserInfo::findOneAsArray(['USER_NAME' => $userName]);
  361. }
  362. /**
  363. * 获取报单级别
  364. * @param $userId
  365. * @param null $periodNum
  366. * @return mixed
  367. * @throws \yii\db\Exception
  368. */
  369. public static function getDecLv($userId, $periodNum = null) {
  370. if ($periodNum === null) {
  371. $data = User::findOneAsArray('ID=:ID', [':ID' => $userId], 'DEC_LV');
  372. $decLv = $data['DEC_LV'];
  373. } else {
  374. $period = Period::instance();
  375. $yearMonth = $period->getYearMonth($periodNum);
  376. $data = PerfPeriod::find()->yearMonth($yearMonth)->select('LAST_DEC_LV')->where('USER_ID=:USER_ID AND PERIOD_NUM=:PERIOD_NUM', [':USER_ID' => $userId, ':PERIOD_NUM' => $periodNum])->asArray()->one();
  377. $decLv = $data ? $data['LAST_DEC_LV'] : DeclarationLevel::getDefaultLevelId();
  378. }
  379. return $decLv;
  380. }
  381. /**
  382. * 获取聘级
  383. * @param $userId
  384. * @param null $periodNum
  385. * @return mixed
  386. * @throws \yii\db\Exception
  387. */
  388. public static function getEmpLv($userId, $periodNum = null) {
  389. if ($periodNum === null) {
  390. $data = User::findOneAsArray('ID=:ID', [':ID' => $userId], 'EMP_LV');
  391. $empLv = $data['EMP_LV'];
  392. } else {
  393. $period = Period::instance();
  394. $yearMonth = $period->getYearMonth($periodNum);
  395. $data = PerfMonth::find()->yearMonth($yearMonth)->select('LAST_EMP_LV')->where('USER_ID=:USER_ID AND CALC_MONTH=:CALC_MONTH', [':USER_ID' => $userId, ':CALC_MONTH' => $yearMonth])->asArray()->one();
  396. $empLv = $data ? $data['LAST_EMP_LV'] : EmployLevel::getDefaultLevelId();
  397. }
  398. return $empLv;
  399. }
  400. /**
  401. * 获取最高聘级
  402. * @param $userId
  403. * @return mixed
  404. */
  405. public static function getHighEmpLv($userId){
  406. $data = UserInfo::findOneAsArray('USER_ID=:USER_ID', [':USER_ID' => $userId], 'HIGHEST_EMP_LV');
  407. $empLv = $data ? $data['HIGHEST_EMP_LV'] : EmployLevel::getDefaultLevelId();
  408. return $empLv;
  409. }
  410. /**
  411. * 获取报单级别名称
  412. * @param $userId
  413. * @param null $periodNum
  414. * @return mixed
  415. * @throws \yii\db\Exception
  416. */
  417. public static function getDecLvName($userId, $periodNum = null) {
  418. if (!$decLv = self::getDecLv($userId, $periodNum)) {
  419. $decLv = DeclarationLevel::getDefaultLevelId();
  420. }
  421. return Cache::getDecLevelConfig()[$decLv]['LEVEL_NAME'];
  422. }
  423. /**
  424. * 获取聘级名称
  425. * @param $userId
  426. * @param null $periodNum
  427. * @return mixed
  428. * @throws \yii\db\Exception
  429. */
  430. public static function getEmpLvName($userId, $periodNum = null) {
  431. if (!$empLv = self::getEmpLv($userId, $periodNum)) {
  432. $empLv = EmployLevel::getDefaultLevelId();
  433. }
  434. return Cache::getEmpLevelConfig()[$empLv]['LEVEL_NAME'];
  435. }
  436. /**
  437. * 获取民族对应的代码
  438. * @param $str
  439. * @return int|string
  440. */
  441. public static function getNationCode($str) {
  442. $str = preg_replace('/族$/', '', $str);
  443. $allNation = \Yii::$app->params['nation'];
  444. foreach ($allNation as $key => $nation) {
  445. if ($str . '族' == $nation['name']) {
  446. return $key;
  447. }
  448. }
  449. return 0;
  450. }
  451. /**
  452. * 生成用户名
  453. * @param string $prefix
  454. * @param int $length
  455. * @return string
  456. */
  457. public static function generateUserName(string $prefix = 'HZ', int $length = 10) {
  458. $result = Tool::randomString($length, $prefix).array_rand([0,1,2,3,5,6,7,8,9],1);
  459. if (User::find()->where('USER_NAME=:USER_NAME', [':USER_NAME' => $result])->exists()) {
  460. return self::generateUserName($prefix, $length);
  461. }
  462. return $result;
  463. }
  464. /**
  465. * 新增加的 生成前端姓名里用户名
  466. * @param string $prefix
  467. * @param int $length
  468. * @return string
  469. */
  470. public static function generateWebUserName(string $prefix = 'HZ', int $length = 10) {
  471. $result = Tool::randomString($length, $prefix).array_rand([0,1,2,3,5,6,7,8,9],1);
  472. if (substr($result ,-1) == '4'){
  473. return self::generateWebUserName($prefix, $length);
  474. }
  475. if (User::find()->where('USER_NAME=:USER_NAME', [':USER_NAME' => $result])->exists()) {
  476. return self::generateWebUserName($prefix, $length);
  477. }
  478. if (BaUser::find()->where('USER_NAME=:USER_NAME', [':USER_NAME' => $result])->exists()) {
  479. return self::generateWebUserName($prefix, $length);
  480. }
  481. return $result;
  482. }
  483. public static function generateWebName(string $countryId, int $length = 9) {
  484. // 名字前缀取国家简码
  485. $country = Countries::getById($countryId);
  486. $prefix = $country['CODE'] ?: 'NG';
  487. $result = Tool::randomString($length, $prefix).array_rand([0,1,2,3,5,6,7,8,9],1);
  488. if (substr($result ,-1) == '4'){
  489. return self::generateWebUserName($prefix, $length);
  490. }
  491. if (User::find()->where('USER_NAME=:USER_NAME', [':USER_NAME' => $result])->exists()) {
  492. return self::generateWebUserName($prefix, $length);
  493. }
  494. if (BaUser::find()->where('USER_NAME=:USER_NAME', [':USER_NAME' => $result])->exists()) {
  495. return self::generateWebUserName($prefix, $length);
  496. }
  497. return $result;
  498. }
  499. /**
  500. * 定位会员的子公司
  501. * @param $userArea
  502. * @return array|bool
  503. */
  504. public static function location($userArea){
  505. if(!is_array($userArea)){
  506. $userArea = json_decode($userArea, true);
  507. }
  508. if(!$userArea || !isset($userArea[0])){
  509. return false;
  510. }
  511. //获取会员的所在省份
  512. $userProvince = $userArea[0];
  513. $list = [];
  514. if(!$list){
  515. return false;
  516. }
  517. $matched = [];
  518. $userCity = isset($userArea[1]) ? intval($userArea[1]) : 0;
  519. $userCounty = isset($userArea[2]) ? intval($userArea[2]) : 0;
  520. foreach($list as $row){
  521. $manageRange = json_decode($row['MANAGE_RANGE'], true);
  522. foreach($manageRange as $manage){
  523. // $manage = ["370000","371000","371082"] or ["210000",""];
  524. $pro = isset($manage[0]) ? intval($manage[0]) : 0;
  525. $city = isset($manage[1]) ? intval($manage[1]) : 0;
  526. $county = isset($manage[2]) ? intval($manage[2]) : 0;
  527. if($userProvince == $pro && $userCity == $city && $userCounty == $county){
  528. $matched = $row;
  529. break;
  530. }
  531. if($userProvince == $pro && $userCity == $city && $county == 0){
  532. $matched = $row;
  533. break;
  534. }
  535. if($userProvince == $pro && $city == 0 && $county == 0){
  536. $matched = $row;
  537. break;
  538. }
  539. }
  540. }
  541. unset($userCounty, $userCity, $userArea, $userProvince, $list);
  542. return $matched;
  543. }
  544. /**
  545. * 通过id获取身份证号
  546. * @param $userId
  547. * @return null
  548. */
  549. public static function getIdCardByUserId($userId) {
  550. $user = User::findOneAsArray('ID=:ID', [':ID' => $userId], 'ID_CARD');
  551. return $user ? $user['ID_CARD'] : null;
  552. }
  553. /**
  554. * 通过id获取状态
  555. * @param $userId
  556. * @return null
  557. */
  558. public static function getStatusByUserId($userId){
  559. $user = User::findOneAsArray('ID=:ID', [':ID' => $userId], 'STATUS');
  560. return $user ? $user['STATUS'] : null;
  561. }
  562. /**
  563. * 通过id获取期数
  564. * @param $userId
  565. * @return null
  566. */
  567. public static function getPeriodNumByUserId($userId) {
  568. $user = User::findOneAsArray('ID=:ID', [':ID' => $userId], 'PERIOD_AT');
  569. return $user ? $user['PERIOD_AT'] : null;
  570. }
  571. /**
  572. * 是否实名认证
  573. * @param $userId
  574. * @return bool
  575. */
  576. public static function isVerified($userId) {
  577. $user = User::findOneAsArray('ID=:ID', [':ID' => $userId], 'VERIFIED');
  578. if ($user && $user['VERIFIED'] == 1) return true;
  579. return false;
  580. }
  581. /**
  582. * 根据商城设置获取密码
  583. * @param $idCard
  584. * @param $userName
  585. * @param bool $payPwd
  586. * @return bool|string
  587. */
  588. public static function passwordGenerator($idCard,$userName,$payPwd=false) {
  589. $systemConfig = Cache::getSystemConfig();
  590. if($payPwd){
  591. $config = $systemConfig['payPasswordRule'];
  592. }else{
  593. $config = $systemConfig['passwordRule'];
  594. }
  595. $rule = $config['VALUE']; //id_s_6 , id_p_8, user_name 后台设置,分别为身份证的后6位,前8位或者用户名
  596. switch ($rule) {
  597. case 'id_s_6':
  598. $password = substr($idCard, -6);
  599. break;
  600. case 'id_p_8':
  601. $password = substr($idCard, 0, 8);
  602. break;
  603. case 'user_name':
  604. $password = $userName;
  605. break;
  606. default:
  607. $password = '111111';
  608. }
  609. return $password;
  610. }
  611. /**
  612. * 当时会员级别状态等
  613. * @param $userId
  614. * @return array|null
  615. */
  616. public static function getLastInfo($userId){
  617. $data = User::findOneAsArray('ID=:ID', [':ID' => $userId], 'LAST_DEC_LV AS DEC_LV,EMP_LV,LAST_EMP_LV,STATUS');
  618. return $data;
  619. }
  620. /**
  621. * 是否合作会员
  622. * @param $userId
  623. * @return bool
  624. */
  625. public static function isUnion($userId){
  626. $data = User::findOneAsArray('ID=:ID', [':ID' => $userId], 'IS_UNION');
  627. if ($data && $data['IS_UNION'] == 1) return true;
  628. return false;
  629. }
  630. /**
  631. * 获取Ba用户ID
  632. * @param $userName
  633. * @return mixed
  634. */
  635. public static function getBaUserIdByUserName($userName) {
  636. $user = BaUserInfo::findOneAsArray('USER_NAME=:USER_NAME AND DELETED=0', [':USER_NAME' => $userName], 'USER_ID');
  637. return $user ? $user['USER_ID'] : null;
  638. }
  639. /**
  640. * 获取会员名通过ID
  641. * @param $userId
  642. * @return mixed|null
  643. */
  644. public static function getBaUserNameByUserId($userId) {
  645. $user = BaUserInfo::findOneAsArray('USER_ID=:USER_ID AND DELETED=0', [':USER_ID' => $userId], 'USER_NAME');
  646. return $user ? $user['USER_NAME'] : null;
  647. }
  648. /**
  649. * 获取用户EMAIL
  650. * @param $userName
  651. * @return mixed
  652. */
  653. public static function getBaEmailByUserId($userId) {
  654. $user = BaUserInfo::findOneAsArray('USER_ID=:USER_ID AND DELETED=0', [':USER_ID' => $userId], 'USER_NAME');
  655. return $user ? $user['EMAIL'] : null;
  656. }
  657. /**
  658. * 获取会员姓名通过ID
  659. * @param $userId
  660. * @return null
  661. */
  662. public static function getBaUserRealNameByUserId($userId) {
  663. $user = BaUser::findOneAsArray('ID=:ID AND DELETED=0', [':ID' => $userId], 'REAL_NAME');
  664. return $user ? $user['REAL_NAME'] : null;
  665. }
  666. /**
  667. * 获取会员邮箱通过ID
  668. * @param $userId
  669. * @return null
  670. */
  671. public static function getBaUserEmailByUserId($userId) {
  672. $user = BaUser::findOneAsArray('ID=:ID AND DELETED=0', [':ID' => $userId], 'EMAIL');
  673. return $user ? $user['EMAIL'] : null;
  674. }
  675. /**
  676. * 获取手机号通过ID
  677. * @param $userId
  678. * @return null
  679. */
  680. public static function getBaUserMobileByUserId($userId) {
  681. $user = BaUser::findOneAsArray('ID=:ID AND DELETED=0', [':ID' => $userId], 'MOBILE');
  682. return $user ? $user['MOBILE'] : null;
  683. }
  684. /**
  685. * 通过用户ID获取用户的编号和名称
  686. * @param $userId
  687. * @return array|null
  688. */
  689. public static function getBaBaseUserById($userId) {
  690. return BaUser::findOneAsArray('ID=:ID', [':ID' => $userId], 'ID,USER_NAME,REAL_NAME');
  691. }
  692. /**
  693. * 通过用户ID获取用户的编号和名称
  694. * @param $username
  695. * @return array|null
  696. */
  697. public static function getBaBaseUserByUserName($username) {
  698. return BaUser::findOneAsArray('USER_NAME=:USER_NAME', [':USER_NAME' => $username]);
  699. }
  700. }