ConfigController.php 35 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: leo
  5. * Date: 2018/2/24
  6. * Time: 下午12:48
  7. */
  8. namespace backendApi\modules\v1\controllers;
  9. use backendApi\modules\v1\models\Admin;
  10. use common\helpers\Cache;
  11. use common\helpers\Date;
  12. use common\helpers\Form;
  13. use common\helpers\Log;
  14. use common\helpers\Tool;
  15. use common\models\CalcBonus;
  16. use common\models\DecRole;
  17. use common\models\forms\ClearDataForm;
  18. use common\models\forms\ConfigBonusForm;
  19. use common\models\forms\ConfigForm;
  20. use common\models\forms\ConfigPeriodForm;
  21. use common\models\forms\DecLevelForm;
  22. use common\models\forms\DecRoleForm;
  23. use common\models\forms\RegTypeForm;
  24. use common\models\forms\DeclarationLevelForm;
  25. use common\models\forms\EmployLevelForm;
  26. use common\models\FlowBonus;
  27. use common\models\forms\OcrApiForm;
  28. use common\models\forms\SmsApiForm;
  29. use common\models\forms\SmsTemplateForm;
  30. use common\models\forms\WithdrawLevelForm;
  31. use common\models\OcrApi;
  32. use common\models\PerfCompany;
  33. use common\models\PerfMonth;
  34. use common\models\Period;
  35. use common\models\ReconsumePool;
  36. use common\models\RegType;
  37. use common\models\DeclarationLevel;
  38. use common\models\EmployLevel;
  39. use common\models\SmsApi;
  40. use common\models\SmsTemplate;
  41. use common\models\UserBonus;
  42. use common\models\UserClose;
  43. use common\models\UserInfo;
  44. use common\models\UserNetwork;
  45. use common\models\UserRelation;
  46. use common\models\BaiduRegion;
  47. use common\models\Region;
  48. use common\models\WithdrawLevel;
  49. use Yii;
  50. use common\models\Config;
  51. use yii\base\Exception;
  52. use yii\helpers\Json;
  53. class ConfigController extends BaseController {
  54. public $modelClass = Config::class;
  55. public function behaviors() {
  56. $behaviors = parent::behaviors();
  57. //$behaviors['contentNegotiator']['formats']['text/html'] = Response::FORMAT_JSON;
  58. return $behaviors;
  59. }
  60. /**
  61. * 站点设置
  62. * @return mixed
  63. * @throws \yii\db\Exception
  64. * @throws \yii\web\HttpException
  65. */
  66. public function actionBase() {
  67. // 获取priod的相关配置参数
  68. $configs = Config::find()->where("TYPE='base'")->orderBy('SORT ASC')->indexBy('CONFIG_NAME')->asArray()->all();
  69. $form = new ConfigForm();
  70. if (Yii::$app->request->post() && $form->load(Yii::$app->request->post(), '')) {
  71. if ($form->updateBase()) {
  72. Config::updateToCache();
  73. return static::notice('更新站点设置成功');
  74. } else {
  75. return static::notice(Form::formatErrorsForApi($form->getErrors()), 422);
  76. }
  77. }
  78. foreach ($configs as $key => $config) {
  79. if ($config['OPTIONS']) {
  80. $configs[$key]['OPTIONS'] = Json::decode($config['OPTIONS']);
  81. }
  82. if ($config['INPUT_TYPE'] == Config::INPUT_TYPE_SWITCH) {
  83. $configs[$key]['VALUE'] = boolval($config['VALUE']);
  84. }
  85. }
  86. return static::notice($configs);
  87. }
  88. /**
  89. * 奖金相关配置
  90. * @return mixed
  91. * @throws \yii\db\Exception
  92. * @throws \yii\web\HttpException
  93. */
  94. public function actionBonusOpt() {
  95. $configs = Config::find()->where("TYPE='bonus'")->orderBy('SORT ASC')->indexBy('CONFIG_NAME')->asArray()->all();
  96. foreach ($configs as $key => $config) {
  97. if ($config['OPTIONS']) {
  98. $configs[$key]['OPTIONS'] = Json::decode($config['OPTIONS']);
  99. }
  100. if ($config['INPUT_TYPE'] == Config::INPUT_TYPE_SWITCH) {
  101. $configs[$key]['VALUE'] = boolval($config['VALUE']);
  102. }
  103. if ($config['INPUT_TYPE'] == Config::INPUT_TYPE_SELECT_MULTIPLE) {
  104. $configs[$key]['VALUE'] = explode(',', $config['VALUE']);
  105. }
  106. if($config['INPUT_TYPE'] == Config::INPUT_TYPE_TABLE) {
  107. $configs[$key]['VALUE'] = Json::decode($config['VALUE']);
  108. }
  109. }
  110. // 获取会员报单级别的相关参数
  111. $decLevel = DeclarationLevel::find()->orderBy('SORT ASC')->asArray()->all();
  112. // 获取会员聘级相关参数
  113. // $empLevel = EmployLevel::getAllDataWithNumIndex();
  114. $result = [
  115. 'config' => $configs,
  116. 'decLevel' => $decLevel,
  117. // 'empLevel' => $empLevel,
  118. ];
  119. return static::notice($result);
  120. }
  121. /**
  122. * 基本奖金设置
  123. * @return mixed
  124. * @throws \yii\db\Exception
  125. * @throws \yii\web\HttpException
  126. */
  127. public function actionBonus() {
  128. $form = new ConfigForm();
  129. if (Yii::$app->request->post() && $form->load(Yii::$app->request->post(), '')) {
  130. if ($form->updateBonus()) {
  131. Config::updateToCache();
  132. return static::notice('更新奖金配置成功');
  133. } else {
  134. return static::notice(Form::formatErrorsForApi($form->getErrors()), 422);
  135. }
  136. }
  137. }
  138. /**
  139. * 修改会员级别相关的奖金配置
  140. * @return mixed
  141. * @throws \yii\db\Exception
  142. * @throws \yii\web\HttpException
  143. */
  144. public function actionBonusDecLevel() {
  145. $form = new DeclarationLevelForm();
  146. if (Yii::$app->request->post() && $form->load(Yii::$app->request->post(), '')) {
  147. if ($form->updateBonus()) {
  148. DeclarationLevel::updateToCache();
  149. return static::notice('更新级别奖金配置成功');
  150. } else {
  151. return static::notice(Form::formatErrorsForApi($form->getErrors()), 422);
  152. }
  153. }
  154. }
  155. /**
  156. * 修改奖金聘级相关的奖金配置
  157. * @return mixed
  158. * @throws \yii\db\Exception
  159. * @throws \yii\web\HttpException
  160. */
  161. public function actionBonusEmpLevel() {
  162. $form = new EmployLevelForm();
  163. if (Yii::$app->request->post() && $form->load(Yii::$app->request->post(), '')) {
  164. if ($form->updateBonus()) {
  165. Cache::updateEmpLevelConfig();
  166. return static::notice('更新聘级奖金配置成功');
  167. } else {
  168. return static::notice(Form::formatErrorsForApi($form->getErrors()), 422);
  169. }
  170. }
  171. }
  172. /**
  173. * 更新封期参数
  174. * @return mixed
  175. * @throws \yii\db\Exception
  176. * @throws \yii\web\HttpException
  177. */
  178. public function actionPeriod() {
  179. $form = new ConfigPeriodForm();
  180. if (Yii::$app->request->post() && $form->load(Yii::$app->request->post(), '')) {
  181. if ($form->update()) {
  182. Config::updateToCache();
  183. // Log::adminHandle('更新封期参数', 1);
  184. return static::notice('期数已开始更新');
  185. } else {
  186. return static::notice(Form::formatErrorsForApi($form->getErrors()), 422);
  187. }
  188. }
  189. // 获取priod的相关配置参数
  190. $configs = Config::find()->where("TYPE='period'")->indexBy('CONFIG_NAME')->orderBy('SORT ASC')->asArray()->all();
  191. foreach ($configs as $key => $config) {
  192. if ($config['OPTIONS']) {
  193. $configs[$key]['OPTIONS'] = Json::decode($config['OPTIONS']);
  194. }
  195. if ($config['INPUT_TYPE'] == Config::INPUT_TYPE_SWITCH) {
  196. $configs[$key]['VALUE'] = boolval($config['VALUE']);
  197. }
  198. }
  199. return static::notice($configs);
  200. }
  201. /**
  202. * 接口设置
  203. * @return mixed
  204. * @throws \yii\web\HttpException
  205. */
  206. public function actionApiOpt(){
  207. return static::notice('1');
  208. }
  209. /**
  210. * 查看OcrApi接口
  211. * @return mixed
  212. * @throws \yii\web\HttpException
  213. */
  214. public function actionOcrApi() {
  215. $condition = '';
  216. $params = [];
  217. $data = OcrApi::lists($condition, $params, [
  218. 'select' => 'OA.*,ADMC.ADMIN_NAME CREATE_ADMIN_NAME,ADMU.ADMIN_NAME UPDATE_ADMIN_NAME',
  219. 'from' => OcrApi::tableName() . ' AS OA',
  220. 'join' => [
  221. ['LEFT JOIN', Admin::tableName() . ' AS ADMC', 'ADMC.ID=OA.CREATE_ADMIN'],
  222. ['LEFT JOIN', Admin::tableName() . ' AS ADMU', 'ADMU.ID=OA.UPDATE_ADMIN'],
  223. ],
  224. 'orderBy' => 'OA.CREATED_AT ASC',
  225. ]);
  226. return static::notice($data);
  227. }
  228. /**
  229. * 修改OcrApi接口
  230. * @return mixed
  231. * @throws \yii\web\HttpException
  232. */
  233. public function actionOcrApiEdit() {
  234. $id = Yii::$app->request->get('id');
  235. if (Yii::$app->request->isPost) {
  236. return static::edit(OcrApiForm::class, 'OcrApi配置成功', null, null, null, function () {
  237. OcrApi::updateToCache();
  238. // Log::adminHandle('编辑OCRAPI参数配置', 1);
  239. });
  240. }
  241. $oneData = OcrApi::find()->where('ID=:ID', [':ID' => $id])->asArray()->one();
  242. if ($oneData['CONFIG']) {
  243. $oneData['CONFIG'] = Json::decode($oneData['CONFIG']);
  244. }
  245. // 获取可供编辑的字段
  246. $oneData['apiType'] = '百度OCR';
  247. $oneData['CONFIGS'] = \common\helpers\ocr\OcrApi::apiConfigs($oneData['API_NAME']);
  248. return static::notice($oneData);
  249. }
  250. /**
  251. * 短信接口查看
  252. * @return mixed
  253. * @throws \yii\web\HttpException
  254. */
  255. public function actionSmsApi() {
  256. $condition = '';
  257. $params = [];
  258. $data = SmsApi::lists($condition, $params, [
  259. 'select' => 'OA.*,ADMC.ADMIN_NAME CREATE_ADMIN_NAME,ADMU.ADMIN_NAME UPDATE_ADMIN_NAME',
  260. 'from' => SmsApi::tableName() . ' AS OA',
  261. 'join' => [
  262. ['LEFT JOIN', Admin::tableName() . ' AS ADMC', 'ADMC.ID=OA.CREATE_ADMIN'],
  263. ['LEFT JOIN', Admin::tableName() . ' AS ADMU', 'ADMU.ID=OA.UPDATE_ADMIN'],
  264. ],
  265. 'orderBy' => 'OA.CREATED_AT ASC',
  266. ]);
  267. return static::notice($data);
  268. }
  269. /**
  270. * 短信接口编辑
  271. * @return mixed
  272. * @throws \yii\web\HttpException
  273. */
  274. public function actionSmsApiEdit() {
  275. $id = Yii::$app->request->get('id');
  276. if (Yii::$app->request->isPost) {
  277. return static::edit(SmsApiForm::class, 'SmsApi配置成功', null, null, null, function () {
  278. SmsApi::updateToCache();
  279. // Log::adminHandle('编辑SMSAPI参数配置', 1);
  280. });
  281. }
  282. $oneData = SmsApi::find()->where('ID=:ID', [':ID' => $id])->asArray()->one();
  283. if ($oneData['CONFIG']) {
  284. $oneData['CONFIG'] = Json::decode($oneData['CONFIG']);
  285. }
  286. $oneData['apiType'] = '短信接口';
  287. // 获取可供编辑的字段
  288. $oneData['CONFIGS'] = \common\libs\api\sms\SmsApi::apiConfigs($oneData['API_NAME']);
  289. return static::notice($oneData);
  290. }
  291. /**
  292. * 短信配置
  293. * @return mixed
  294. * @throws \yii\db\Exception
  295. * @throws \yii\web\HttpException
  296. */
  297. public function actionSms() {
  298. // 获取priod的相关配置参数
  299. $configs = Config::find()->where("TYPE='sms'")->orderBy('SORT ASC')->indexBy('CONFIG_NAME')->asArray()->all();
  300. $form = new ConfigForm();
  301. if (Yii::$app->request->post() && $form->load(Yii::$app->request->post(), '')) {
  302. if ($form->updateSms()) {
  303. Config::updateToCache();
  304. return static::notice('更新短信配置成功');
  305. } else {
  306. return static::notice(Form::formatErrorsForApi($form->getErrors()), 422);
  307. }
  308. }
  309. foreach ($configs as $key => $config) {
  310. if ($config['OPTIONS']) {
  311. $configs[$key]['OPTIONS'] = Json::decode($config['OPTIONS']);
  312. }
  313. if ($config['INPUT_TYPE'] == Config::INPUT_TYPE_SWITCH) {
  314. $configs[$key]['VALUE'] = boolval($config['VALUE']);
  315. }
  316. if ($config['INPUT_TYPE'] == Config::INPUT_TYPE_SELECT) {
  317. $configs[$key]['VALUE'] = explode(",",$config['VALUE']);
  318. }
  319. }
  320. return static::notice($configs);
  321. }
  322. /**
  323. * 转账配置
  324. * @return mixed
  325. * @throws \yii\db\Exception
  326. * @throws \yii\web\HttpException
  327. */
  328. public function actionTransfer() {
  329. // 获取priod的相关配置参数
  330. $configs = Config::find()->where("TYPE='transfer'")->orderBy('SORT ASC')->indexBy('CONFIG_NAME')->asArray()->all();
  331. $form = new ConfigForm();
  332. if (Yii::$app->request->post() && $form->load(Yii::$app->request->post(), '')) {
  333. if ($form->updateTransfer()) {
  334. Config::updateToCache();
  335. return static::notice('更新转账配置成功');
  336. } else {
  337. return static::notice(Form::formatErrorsForApi($form->getErrors()), 422);
  338. }
  339. }
  340. foreach ($configs as $key => $config) {
  341. if ($config['OPTIONS']) {
  342. $configs[$key]['OPTIONS'] = Json::decode($config['OPTIONS']);
  343. }
  344. if ($config['INPUT_TYPE'] == Config::INPUT_TYPE_SWITCH) {
  345. $configs[$key]['VALUE'] = boolval($config['VALUE']);
  346. }
  347. if ($config['INPUT_TYPE'] == Config::INPUT_TYPE_TABLE) {
  348. $configs[$key]['VALUE'] = Json::decode($config['VALUE']);
  349. }
  350. }
  351. return static::notice($configs);
  352. }
  353. /**
  354. * 分数配置
  355. * @return mixed
  356. * @throws \yii\db\Exception
  357. * @throws \yii\web\HttpException
  358. */
  359. public function actionScore() {
  360. // 获取priod的相关配置参数
  361. $configs = Config::find()->where("TYPE='score'")->orderBy('SORT ASC')->indexBy('CONFIG_NAME')->asArray()->all();
  362. $form = new ConfigForm();
  363. if (Yii::$app->request->post() && $form->load(Yii::$app->request->post(), '')) {
  364. if ($form->updateScore()) {
  365. Config::updateToCache();
  366. return static::notice('更新分数配置成功');
  367. } else {
  368. return static::notice(Form::formatErrorsForApi($form->getErrors()), 422);
  369. }
  370. }
  371. foreach ($configs as $key => $config) {
  372. if ($config['OPTIONS']) {
  373. $configs[$key]['OPTIONS'] = Json::decode($config['OPTIONS']);
  374. }
  375. if ($config['INPUT_TYPE'] == Config::INPUT_TYPE_SWITCH) {
  376. $configs[$key]['VALUE'] = boolval($config['VALUE']);
  377. }
  378. if ($config['INPUT_TYPE'] == Config::INPUT_TYPE_TABLE) {
  379. $configs[$key]['VALUE'] = Json::decode($config['VALUE']);
  380. }
  381. }
  382. return static::notice($configs);
  383. }
  384. /**
  385. * 其他配置
  386. * @return mixed
  387. * @throws \yii\db\Exception
  388. * @throws \yii\web\HttpException
  389. */
  390. public function actionOther() {
  391. // 获取priod的相关配置参数
  392. $configs = Config::find()->where("TYPE='other'")->orderBy('SORT ASC')->indexBy('CONFIG_NAME')->asArray()->all();
  393. $form = new ConfigForm();
  394. if (Yii::$app->request->post() && $form->load(Yii::$app->request->post(), '')) {
  395. if ($form->updateOther()) {
  396. Config::updateToCache();
  397. return static::notice('更新其他配置成功');
  398. } else {
  399. return static::notice(Form::formatErrorsForApi($form->getErrors()), 422);
  400. }
  401. }
  402. if (Yii::$app->request->post()) {
  403. $postData = Yii::$app->request->post();
  404. $transaction = Yii::$app->db->beginTransaction();
  405. try {
  406. foreach ($configs as $key => $value) {
  407. if (array_key_exists($key, $postData)) {
  408. if (!$postData[$key]) $postData[$key] = 0;
  409. Config::updateAll(['VALUE' => $postData[$key], 'UPDATED_AT' => Date::nowTime()], "CONFIG_NAME=:CONFIG_NAME", [':CONFIG_NAME' => $key]);
  410. }
  411. }
  412. Config::updateToCache();
  413. $transaction->commit();
  414. } catch (Exception $e) {
  415. $transaction->rollBack();
  416. return static::notice('配置更新失败,请重试');
  417. }
  418. // Log::adminHandle('更新其他配置参数', 1);
  419. return static::notice('配置更新成功');
  420. }
  421. foreach ($configs as $key => $config) {
  422. if ($config['OPTIONS']) {
  423. $configs[$key]['OPTIONS'] = Json::decode($config['OPTIONS']);
  424. }
  425. if ($config['INPUT_TYPE'] == Config::INPUT_TYPE_SWITCH) {
  426. $configs[$key]['VALUE'] = boolval($config['VALUE']);
  427. }
  428. }
  429. return static::notice($configs);
  430. }
  431. /**
  432. * 查看报单级别
  433. * @return mixed
  434. * @throws \yii\web\HttpException
  435. */
  436. public function actionDecLevel() {
  437. $data = DeclarationLevel::lists('', [], [
  438. 'orderBy' => 'SORT ASC, CREATED_AT ASC'
  439. ]);
  440. return static::notice($data);
  441. }
  442. public function actionMonthLimit() {
  443. if (Yii::$app->request->isPost) {
  444. $postData = Yii::$app->request->post();
  445. $month = $postData['month'];
  446. $ret = Config::updateAll(['VALUE' => $month, 'UPDATED_AT' => Date::nowTime()], "CONFIG_NAME=:CONFIG_NAME", [':CONFIG_NAME' => 'observePeriodLimit']);
  447. if ($ret) {
  448. return static::notice('更新观察期成功');
  449. } else {
  450. return static::notice('更新观察期失败,请重试');
  451. }
  452. }
  453. $data = Config::find()
  454. ->where("CONFIG_NAME='observePeriodLimit'")
  455. ->asArray()
  456. ->one();
  457. $isSwitchUpgrade = Config::find()
  458. ->where("CONFIG_NAME='isOpenUpgrade'")
  459. ->asArray()
  460. ->one();
  461. return static::notice([
  462. 'observe' => $data,
  463. 'isOpenUpgrade' => $isSwitchUpgrade
  464. ]);
  465. }
  466. // 开关会员升级单功能
  467. public function actionOpenUpgrade() {
  468. if (Yii::$app->request->isPost) {
  469. $postData = Yii::$app->request->post();
  470. $isOpen = $postData['isOpen'];
  471. $ret = Config::updateAll(['VALUE' => $isOpen, 'UPDATED_AT' => Date::nowTime()], "CONFIG_NAME=:CONFIG_NAME", [':CONFIG_NAME' => 'isOpenUpgrade']);
  472. if ($ret) {
  473. Cache::updateSystemConfig();
  474. $msg = $isOpen == 1 ? '开启' : '关闭';
  475. return static::notice("$msg,操作成功");
  476. } else {
  477. return static::notice('操作失败,请重试');
  478. }
  479. }
  480. return static::notice('非法请求');
  481. }
  482. /**
  483. * 查看报单中心级别
  484. * @return mixed
  485. * @throws \yii\web\HttpException
  486. */
  487. public function actionDecRole() {
  488. $data = DecRole::lists('', [], [
  489. 'orderBy' => 'SORT ASC'
  490. ]);
  491. return static::notice($data);
  492. }
  493. /**
  494. * 修改报单中心级别
  495. * @return mixed
  496. * @throws \yii\web\HttpException
  497. */
  498. public function actionDecRoleEdit() {
  499. $id = Yii::$app->request->get('id');
  500. if (Yii::$app->request->isPost) {
  501. return static::edit(DecRoleForm::class, '报单中心级别修改成功', null, null, null, function () {
  502. DecRole::updateToCache();
  503. });
  504. }
  505. $oneData = DecRole::find()->where('ID=:ID', [':ID' => $id])->asArray()->one();
  506. return static::notice($oneData);
  507. }
  508. /**
  509. * 添加会员级别
  510. * @return mixed
  511. * @throws \yii\web\HttpException
  512. */
  513. public function actionDecLevelAdd() {
  514. if (Yii::$app->request->isPost) {
  515. return static::edit(DecLevelForm::class, '会员级别添加成功', null, null, null, function () {
  516. DeclarationLevel::updateToCache();
  517. // Log::adminHandle('添加会员级别', 1);
  518. });
  519. }
  520. return static::notice('非发请求', 405);
  521. }
  522. /**
  523. * 修改会员级别
  524. * @return mixed
  525. * @throws \yii\web\HttpException
  526. */
  527. public function actionDecLevelEdit() {
  528. $id = Yii::$app->request->get('id');
  529. if (Yii::$app->request->isPost) {
  530. return static::edit(DecLevelForm::class, '会员级别修改成功', null, null, null, function () {
  531. DeclarationLevel::updateToCache();
  532. // Log::adminHandle('编辑报单级别参数', 1);
  533. });
  534. }
  535. $oneData = DeclarationLevel::find()->where('ID=:ID', [':ID' => $id])->asArray()->one();
  536. return static::notice($oneData);
  537. }
  538. /**
  539. * 删除会员级别
  540. * @return mixed
  541. * @throws \yii\db\Exception
  542. * @throws \yii\web\HttpException
  543. */
  544. public function actionDecLevelDelete() {
  545. return static::delete(DeclarationLevel::class, '', function ($selected) {
  546. DeclarationLevel::updateToCache();
  547. // Log::adminHandle('删除报单级别', 1);
  548. });
  549. }
  550. /**
  551. * 查看会员聘级
  552. * @return mixed
  553. * @throws \yii\web\HttpException
  554. */
  555. public function actionEmpLevel() {
  556. $data = EmployLevel::lists('', [], [
  557. 'select' => 'E.*, ME.LEVEL_NAME AS MIN_EMPLOY_LEVEL_NAME',
  558. 'from' => EmployLevel::tableName() . ' AS E',
  559. 'join' => [
  560. ['LEFT JOIN', EmployLevel::tableName() . ' AS ME', 'ME.ID=E.MIN_EMPLOY_LEVEL']
  561. ],
  562. 'orderBy' => 'E.SORT ASC, E.CREATED_AT ASC'
  563. ]);
  564. return static::notice($data);
  565. }
  566. /**
  567. * 添加会员聘级
  568. * @return mixed
  569. * @throws \yii\web\HttpException
  570. */
  571. public function actionEmpLevelAdd() {
  572. if (Yii::$app->request->isPost) {
  573. return static::edit(EmployLevelForm::class, '会员聘级添加成功', null, null, null, function () {
  574. EmployLevel::updateToCache();
  575. // Log::adminHandle('添加会员聘级', 1);
  576. });
  577. }
  578. // 获取所有聘级,以供选择
  579. $allLevel = EmployLevel::find()->where('1=1')->orderBy('SORT ASC')->asArray()->all();
  580. return static::notice($allLevel);
  581. }
  582. /**
  583. * 修改聘级
  584. * @return mixed
  585. * @throws \yii\web\HttpException
  586. */
  587. public function actionEmpLevelEdit() {
  588. $id = Yii::$app->request->get('id');
  589. if (Yii::$app->request->isPost) {
  590. return static::edit(EmployLevelForm::class, '会员聘级修改成功', null, null, null, function () {
  591. EmployLevel::updateToCache();
  592. // Log::adminHandle('编辑会员聘级', 1);
  593. });
  594. }
  595. $oneData = EmployLevel::find()->where('ID=:ID', [':ID' => $id])->asArray()->one();
  596. // 获取所有聘级,以供选择
  597. $allLevel = EmployLevel::find()->where('1=1')->orderBy('SORT ASC')->asArray()->all();
  598. $oneData['allLevel'] = $allLevel;
  599. return static::notice($oneData);
  600. }
  601. /**
  602. * 删除聘级
  603. * @return mixed
  604. * @throws \yii\db\Exception
  605. * @throws \yii\web\HttpException
  606. */
  607. public function actionEmpLevelDelete() {
  608. return static::delete(EmployLevel::class, '', function ($selected) {
  609. EmployLevel::updateToCache();
  610. // Log::adminHandle('删除会员聘级', 1);
  611. });
  612. }
  613. /**
  614. * 查看短信模板
  615. * @return mixed
  616. * @throws \yii\web\HttpException
  617. */
  618. public function actionSmsTemplate() {
  619. $data = SmsTemplate::lists('', [], ['orderBy' => 'CREATED_AT ASC']);
  620. return static::notice($data);
  621. }
  622. /**
  623. * 编辑短信模板
  624. * @return mixed
  625. * @throws \yii\web\HttpException
  626. */
  627. public function actionSmsTemplateEdit() {
  628. $id = Yii::$app->request->get('id');
  629. if (Yii::$app->request->isPost) {
  630. return parent::edit(SmsTemplateForm::class, '短信模板编辑成功', null, null, null, function () {
  631. SmsTemplate::updateDecToCache();
  632. SmsTemplate::updateEmpToCache();
  633. // Log::adminHandle('编辑短信模板', 1);
  634. });
  635. }
  636. $oneData = SmsTemplate::find()->where('ID=:ID', [':ID' => $id])->asArray()->one();
  637. return static::notice(['oneData' => $oneData]);
  638. }
  639. /**
  640. * 提现金额等级
  641. * @return mixed
  642. * @throws \yii\web\HttpException
  643. */
  644. public function actionWithdrawLevel() {
  645. $data = WithdrawLevel::lists('', [], ['orderBy' => 'MIN_AMOUNT ASC']);
  646. return static::notice($data);
  647. }
  648. /**
  649. * 添加提现金额等级
  650. * @return mixed
  651. * @throws \yii\web\HttpException
  652. */
  653. public function actionWithdrawLevelAdd() {
  654. if (Yii::$app->request->isPost) {
  655. return static::edit(WithdrawLevelForm::class, '提现金额等级添加成功', null, null, null, function () {
  656. WithdrawLevel::updateToCache();
  657. // Log::adminHandle('添加提现金额等级', 1);
  658. });
  659. }
  660. }
  661. /**
  662. * 修改提现金额等级
  663. * @return mixed
  664. * @throws \yii\web\HttpException
  665. */
  666. public function actionWithdrawLevelEdit() {
  667. $id = Yii::$app->request->get('id');
  668. if (Yii::$app->request->isPost) {
  669. return static::edit(WithdrawLevelForm::class, '提现金额等级修改成功', null, null, null, function () {
  670. WithdrawLevel::updateToCache();
  671. // Log::adminHandle('编辑提现金额等级', 1);
  672. });
  673. }
  674. $oneData = WithdrawLevel::find()->where('ID=:ID', [':ID' => $id])->asArray()->one();
  675. return static::notice($oneData);
  676. }
  677. /**
  678. * 删除提现金额等级
  679. * @return mixed
  680. * @throws \yii\db\Exception
  681. * @throws \yii\web\HttpException
  682. */
  683. public function actionWithdrawLevelDelete() {
  684. return static::delete(WithdrawLevel::class, '', function ($selected) {
  685. WithdrawLevel::updateToCache();
  686. });
  687. }
  688. /**
  689. * 注册类型
  690. * @return mixed
  691. * @throws \yii\web\HttpException
  692. */
  693. public function actionRegType() {
  694. $data = RegType::lists('', [], [
  695. 'orderBy' => 'SORT ASC, CREATED_AT ASC'
  696. ]);
  697. return static::notice($data);
  698. }
  699. /**
  700. * 获取注册类型
  701. * @return mixed
  702. * @throws \yii\web\HttpException
  703. */
  704. public function actionRegTypeGet() {
  705. $id = Yii::$app->request->get('id');
  706. $regType = RegType::findOneAsArray('ID=:ID', [':ID' => $id]);
  707. if (!$regType) {
  708. return static::notice('数据不存在', 400);
  709. }
  710. return static::notice(['id' => $regType['ID'], 'typeName' => $regType['TYPE_NAME'], 'isPact' => $regType['IS_PACT'], 'monthAmount' => $regType['MONTH_LIMIT_AMOUNT'], 'yearAmount' => $regType['YEAR_LIMIT_AMOUNT'], 'remark' => $regType['REMARK']]);
  711. }
  712. /**
  713. * 修改注册类型
  714. * @return mixed
  715. * @throws \yii\web\HttpException
  716. */
  717. public function actionRegTypeEdit() {
  718. $id = Yii::$app->request->get('id');
  719. if (Yii::$app->request->isPost) {
  720. $formModel = new RegTypeForm();
  721. $formModel->scenario = 'edit';
  722. $formModel->id = $id;
  723. if ($formModel->load(Yii::$app->request->post(), '') && $result = $formModel->edit()) {
  724. // Log::adminHandle('修改注册类型,ID为:' . $result['ID']);
  725. return static::notice('修改注册类型成功');
  726. } else {
  727. return static::notice(Form::formatErrorsForApi($formModel->getErrors()), 400);
  728. }
  729. }
  730. return static::notice('非法请求', 400);
  731. }
  732. /**
  733. * 获取服务协议
  734. * @return mixed
  735. * @throws \yii\web\HttpException
  736. */
  737. public function actionPactGet() {
  738. $path = \Yii::getAlias('@common/runtime/datas/pact.php');
  739. if (!file_exists($path)) {
  740. $oneData = '';
  741. } else {
  742. $oneData = include $path;
  743. }
  744. return static::notice($oneData);
  745. }
  746. /**
  747. * 获取服务协议
  748. * @return mixed
  749. * @throws \yii\base\InvalidConfigException
  750. * @throws \yii\web\HttpException
  751. */
  752. public function actionPactEdit() {
  753. $path = \Yii::getAlias('@common/runtime/datas/pact.php');
  754. $post = Yii::$app->request->post();
  755. if (!isset($post['CONTENT']) || empty($post['CONTENT'])) {
  756. return static::notice('请输入协议内容', 400);
  757. }
  758. $now = Date::nowTime();
  759. $data = [
  760. 'UPDATED_AT' => $now,
  761. 'CONTENT' => addslashes($post['CONTENT']),
  762. 'ADM_NAME' => \Yii::$app->user->id,
  763. ];
  764. // Log::adminHandle('更新服务协议');
  765. $date = \Yii::$app->formatter->asDatetime($now);
  766. $content = "<?php" . PHP_EOL . "/**
  767. * 配置文件
  768. * @date {$date}
  769. */" . PHP_EOL;
  770. $content .= "return ";
  771. $content .= var_export($data, true);
  772. $content .= ";";
  773. file_put_contents($path, $content, LOCK_EX);
  774. return static::notice('更新服务协议成功');
  775. }
  776. public static function actionInitRegionXls() {
  777. BaiduRegion::importXls(0,1000);
  778. return static::notice('导入成功');
  779. }
  780. public static function actionRegion() {
  781. // 开始查找bd区划,先找县级和以上
  782. // $bdProv = BaiduRegion::_getBdProv();
  783. // foreach ($bdProv as $prov) {
  784. //
  785. // }
  786. $bdCity = BaiduRegion::_getBdCity();
  787. print_r("检查新增地市".PHP_EOL);
  788. foreach ($bdCity as $city) {
  789. $p = BaiduRegion::_checkInNc($city['CITY_CODE']);
  790. if (!$p) {
  791. print_r($city['CITY_NAME'].'找不到,添加'.PHP_EOL);
  792. // print_r($city);
  793. if(BaiduRegion::addNcRegion($region_code=$city['CITY_CODE'], $region_name=$city['CITY_NAME'], $pid=$city['PROV_CODE'], $deep=3)){
  794. print_r("添加成功".PHP_EOL);
  795. }else{
  796. $regionM = Region::findOne(["REGION_CODE"=>$city['CITY_CODE']]);
  797. $regionM->STATUS = 1;
  798. $regionM->save();
  799. print_r("启用成功".PHP_EOL);
  800. }
  801. }
  802. }
  803. $bdCounty = BaiduRegion::_getBdCounty();
  804. print_r("检查新增县".PHP_EOL);
  805. foreach ($bdCounty as $county) {
  806. $p = BaiduRegion::_checkInNc($county['COUNTY_CODE']);
  807. if (!$p){
  808. print_r($county['COUNTY_NAME'].' 区县找不到,添加'.PHP_EOL);
  809. // print_r($county);
  810. if(BaiduRegion::addNcRegion($region_code=$county['COUNTY_CODE'], $region_name=$county['COUNTY_NAME'], $pid=$county['CITY_CODE'], $deep=4)){
  811. print_r("添加成功".PHP_EOL);
  812. }else{
  813. $regionM = Region::findOne(["REGION_CODE"=>$county['COUNTY_CODE']]);
  814. $regionM->STATUS = 1;
  815. $regionM->save();
  816. print_r("启用成功".PHP_EOL);
  817. }
  818. }
  819. }
  820. $bdTown = BaiduRegion::_getBdTown(); // 只取省直辖县,直筒子市的乡镇
  821. print_r("检查新增地乡镇".PHP_EOL);
  822. foreach ($bdTown as $town) {
  823. $p = BaiduRegion::_checkInNc($town['TOWN_CODE']);
  824. // print_r($p);
  825. if (!$p) {
  826. print_r($town['TOWN_CODE'].$town['TOWN_NAME'].' 镇 找不到,添加'.PHP_EOL);
  827. // print_r($town);
  828. if(BaiduRegion::addNcRegion($region_code=$town['TOWN_CODE'], $region_name=$town['TOWN_NAME'], $pid=$town['COUNTY_CODE'], $deep=5)){
  829. print_r("添加成功".PHP_EOL);
  830. }else{
  831. $regionM = Region::findOne(["REGION_CODE"=>$town['TOWN_CODE']]);
  832. $regionM->STATUS = 1;
  833. $regionM->save();
  834. print_r("启用成功".PHP_EOL);
  835. }
  836. }
  837. }
  838. $ncAllRegion = BaiduRegion::_getAllNcRegion();
  839. foreach ($ncAllRegion as $ncRegi) {
  840. if(strlen($ncRegi['REGION_CODE'])==9){
  841. $model = Region::findOne(["REGION_CODE"=>$ncRegi['REGION_CODE'], "STATUS"=>1]);
  842. $model->DEEP = 5;
  843. $model->save();
  844. $ncRegi['DEEP'] = 5;
  845. }
  846. $t = BaiduRegion::_checkInBd($ncRegi['REGION_CODE'], $ncRegi['REGION_NAME'], $ncRegi['PID'], $ncRegi['DEEP']);
  847. if(!$t){
  848. print_r($ncRegi['REGION_CODE'].$ncRegi['REGION_NAME']." 在百度没有,标记删除".$ncRegi['DEEP'].PHP_EOL);
  849. $regionM = Region::findOne(["REGION_CODE"=>$ncRegi['REGION_CODE'], "STATUS"=>1]);
  850. $regionM->STATUS = '0';
  851. $regionM->save();
  852. } else {
  853. if($t['REGION_NAME']!=$ncRegi['REGION_NAME']) {
  854. print_r($ncRegi['REGION_CODE'] . $ncRegi['REGION_NAME'] . " 更名,需修改" . PHP_EOL);
  855. $regionM = Region::findOne(["REGION_CODE"=>$ncRegi['REGION_CODE'], "STATUS"=>1]);
  856. $regionM->REGION_NAME = $t['REGION_NAME'];
  857. $regionM->save();
  858. }
  859. if($t['PID']!=$ncRegi['PID']){
  860. print_r($ncRegi['REGION_CODE'] . $ncRegi['REGION_NAME'] . " 上级".$ncRegi['PID']."需修改". $t['PID'] . PHP_EOL);
  861. $regionM = Region::findOne(["REGION_CODE"=>$ncRegi['REGION_CODE'], "STATUS"=>1]);
  862. $regionM->PID = $t['PID'];
  863. $regionM->save();
  864. }
  865. }
  866. }
  867. die;
  868. }
  869. public function actionRegionJs() {
  870. $ncProv = BaiduRegion::_getAllNcProv();
  871. // print_r($ncProv);
  872. $prov_list = [];
  873. $ar_region_array = [
  874. '86' => $prov_list
  875. ];
  876. foreach ($ncProv as $prov) {
  877. $ar_region_array['86'][$prov['REGION_CODE']] = $prov['REGION_NAME'];
  878. $ar_region_array[$prov['REGION_CODE']] = [];
  879. }
  880. // 普通地市,直筒子市
  881. $ncCity = BaiduRegion::_getAllNcCity();
  882. foreach($ncCity as $city){
  883. $ar_region_array[$city['PID']][$city['REGION_CODE']] = $city['REGION_NAME'];
  884. $ncCounty = BaiduRegion::_getAllNcCountyByCity($city['REGION_CODE']);
  885. foreach ($ncCounty as $county) {
  886. $ar_region_array[$city['REGION_CODE']][$county['REGION_CODE']] = $county['REGION_NAME'];
  887. }
  888. }
  889. // 直辖县级市
  890. $ncHighCounty = BaiduRegion::_getAllNcCounty();
  891. foreach ($ncHighCounty as $county) {
  892. $ar_region_array[$county['PID']][$county['REGION_CODE']] = $county['REGION_NAME'];
  893. $ncTown = BaiduRegion::_getAllNcTownByCity($county['REGION_CODE']);
  894. foreach ($ncTown as $town) {
  895. $ar_region_array[$county['REGION_CODE']][$town['REGION_CODE']] = $town['REGION_NAME'];
  896. }
  897. }
  898. $ar_region_data = json_encode($ar_region_array,JSON_UNESCAPED_UNICODE);
  899. $str = (string)$ar_region_data;
  900. $str = "const AR_REGION_DATA = ".$str;
  901. file_put_contents("/Volumes/HDD/workshop/old/ar.upload.ming/cdn/jsdata/ar_region_data.js", $str);
  902. return static::notice('成功');
  903. }
  904. }