UserForm.php 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256
  1. <?php
  2. namespace common\models\forms;
  3. use common\components\Model;
  4. use common\helpers\user\Info;
  5. use common\libs\logging\operate\UserOperate;
  6. use common\models\DeclarationLevel;
  7. use common\models\User;
  8. use common\models\UserInfo;
  9. /**
  10. * Login form
  11. */
  12. class UserForm extends Model
  13. {
  14. public $userId;
  15. public $userName;
  16. public $zcPv;
  17. public $zcAmount;
  18. public $conUserName;
  19. public $recUserName;
  20. public $conUid;
  21. public $recUid;
  22. public $location;
  23. public $idCard;
  24. public $allData; // 批量报单的全部报单数据
  25. //个人资料
  26. public $nation;
  27. public $realName;
  28. public $mobile;
  29. public $openBank;
  30. public $bankAddress;
  31. public $bankNo;
  32. //修改密码
  33. public $password;
  34. public $oldPassword;
  35. public $verifyPassword;
  36. public $payPassword;
  37. private $_conUid;
  38. private $_recUid;
  39. private $_limit = 1000;
  40. private $_conTopUid;
  41. private $_conTopDeep;
  42. private $_recTopUid;
  43. private $_recTopDeep;
  44. public function init() {
  45. parent::init();
  46. $this->userOperateLogger = new UserOperate([
  47. 'fetchClass' => User::class,
  48. ]);
  49. }
  50. /**
  51. * @inheritdoc
  52. */
  53. public function rules()
  54. {
  55. return [
  56. [['userId', 'userName', 'zcPv', 'zcAmount', 'conUserName', 'recUserName','conUid', 'recUid', 'location','nation','realName', 'mobile','openBank','bankAddress','bankNo'], 'trim'],
  57. [['userId', 'userName', 'zcPv', 'zcAmount', 'conUid', 'recUid', 'location'], 'required', 'on'=>'addWithUid'],
  58. [['userId', 'userName', 'zcPv', 'zcAmount', 'conUserName', 'recUserName', 'location'], 'required', 'on'=>['addWithUserName', 'addByAdmin']],
  59. [['idCard', 'allData'], 'required', 'on'=>['addWithUserName']],
  60. [['userName'], 'required', 'on'=>['validateUser', 'noLoginModifyPassword']],
  61. [['conUid'], 'required', 'on'=>['validateCon', 'validateAddWithUid']],
  62. [['conUserName'], 'required', 'on'=>['validateConName', 'validateAddWithName']],
  63. [['recUid'], 'required', 'on'=>['validateRec', 'validateAddWithUid']],
  64. [['recUserName'], 'required', 'on'=>['validateRecName', 'validateAddWithName']],
  65. [['conUid', 'location'], 'required', 'on'=>['validateLocation', 'validateAddWithUid']],
  66. [['conUserName', 'location'], 'required', 'on'=>['validateLocationConName', 'validateAddWithName']],
  67. [['nation','realName'], 'required', 'on'=>'modifyProfile'],
  68. [['oldPassword','verifyPassword'], 'required','on' => ['modifyPassword', 'modifyPasswordPay', 'noLoginModifyPassword']],
  69. [['password'], 'required','on' => ['modifyPassword', 'noLoginModifyPassword']],
  70. [['payPassword'], 'required','on' => ['modifyPasswordPay']],
  71. ['verifyPassword', 'compare', 'compareAttribute' => 'password' ,'message'=>'两次登录密码输入不一致' ,'on' => ['modifyPassword', 'noLoginModifyPassword']],
  72. ['verifyPassword', 'compare', 'compareAttribute' => 'payPassword' ,'message'=>'两次支付密码输入不一致' ,'on' => ['modifyPasswordPay']],
  73. [['conUid'], 'isConUid', 'on' => ['addWithUserName', 'addWithUid', 'addByAdmin']],
  74. [['recUid'], 'isRecUid', 'on' => ['addWithUserName', 'addWithUid', 'addByAdmin']],
  75. [['conUserName'], 'isCon', 'on' => ['addWithUserName', 'addWithUid', 'addByAdmin']],
  76. [['recUserName'], 'isRec', 'on' => ['addWithUserName', 'addWithUid', 'addByAdmin']],
  77. [['location'], 'isLocation', 'on' => ['addWithUserName', 'addWithUid', 'addByAdmin']],
  78. //[['idCard'], 'isSameNetwork'],
  79. [['zcPv', 'zcAmount'], 'price', 'on' => ['addWithUserName', 'addWithUid', 'addByAdmin']],
  80. [['zcPv'], 'isMinDecLevel', 'on' => ['addWithUserName', 'addWithUid', 'addByAdmin']],
  81. ];
  82. }
  83. public function attributeLabels()
  84. {
  85. return [
  86. 'userId' => '会员ID',
  87. 'nation' => '民族',
  88. 'idCard' => '身份证号',
  89. 'openBank' => '银行名称',
  90. 'bankAddress' => '开户支行',
  91. 'bankNo' => '银行账号',
  92. 'verifyPassword' => '确认密码',
  93. 'oldPassword' => '原密码',
  94. 'password' => '登录密码',
  95. 'payPassword' => '支付密码',
  96. ];
  97. }
  98. /**
  99. * 修改个人资料
  100. * @return User|null
  101. */
  102. public function modifyProfile(){
  103. if(!$this->validate()){
  104. return null;
  105. }
  106. $this->userOperateLogger->beforeUpdate(\Yii::$app->user->id,'ID',['select'=>'NATION,OPEN_BANK,BANK_NO,BANK_ADDRESS']);
  107. $uid = \Yii::$app->user->id;
  108. $model = User::findOne(['ID'=>$uid]);
  109. $model->NATION = $this->nation;
  110. $model->OPEN_BANK = $this->openBank;
  111. $model->BANK_NO = $this->bankNo;
  112. $model->BANK_ADDRESS = $this->bankAddress;
  113. if(!$model->save()){
  114. $this->addErrors($model->getErrors());
  115. return null;
  116. }
  117. User::updateBaseInfoToRedis($uid);
  118. $this->userOperateLogger->afterUpdate(\Yii::$app->user->id,'ID',['select'=>'NATION,OPEN_BANK,BANK_NO,BANK_ADDRESS']);
  119. $this->userOperateLogger->clean()->save([
  120. 'optType' => '会员修改资料',
  121. 'userId' => \Yii::$app->user->id,
  122. 'userName' => Info::getUserNameByUserId(\Yii::$app->user->id),
  123. ]);
  124. return $model;
  125. }
  126. /**
  127. * 修改密码
  128. */
  129. public function modifyPassword(){
  130. if(!$this->validate()){
  131. return null;
  132. }
  133. $uid = \Yii::$app->user->id;
  134. $model = User::findOne(['ID'=>$uid]);
  135. if ( !$model->validatePassword($this->oldPassword) ) {
  136. $this->addError('modifyPassword', '原登录密码错误');
  137. return false;
  138. }
  139. $model->PASSWORD_HASH = \Yii::$app->security->generatePasswordHash($this->password);
  140. if(!$model->save()){
  141. $this->addErrors($model->getErrors());
  142. return false;
  143. }
  144. return true;
  145. }
  146. /**
  147. * 修改支付密码
  148. */
  149. public function modifyPasswordPay(){
  150. if(!$this->validate()){
  151. return null;
  152. }
  153. $uid = \Yii::$app->user->id;
  154. $model = User::findOne(['ID'=>$uid]);
  155. if ( !$model->validatePasswordPay($this->oldPassword) ) {
  156. $this->addError('modifyPasswordPay', '原支付密码错误');
  157. return false;
  158. }
  159. $model->PAY_PASSWORD = \Yii::$app->security->generatePasswordHash($this->payPassword);
  160. if(!$model->save()){
  161. $this->addErrors($model->getErrors());
  162. return false;
  163. }
  164. return true;
  165. }
  166. /**
  167. * 不登录修改密码
  168. */
  169. public function noLoginModifyPassword(){
  170. if(!$this->validate()){
  171. return null;
  172. }
  173. $model = User::findOne(["USER_NAME"=>$this->userName]);
  174. if( !$model ) {
  175. $this->addError('noLoginModifyPassword', '不存在的用户名');
  176. return false;
  177. }
  178. if ( !$model->validatePassword($this->oldPassword) ) {
  179. $this->addError('noLoginModifyPassword', '原登录密码错误');
  180. return false;
  181. }
  182. $model->PASSWORD_HASH = \Yii::$app->security->generatePasswordHash($this->password);
  183. $model->IS_MODIFY_PASSWORD = 0;
  184. if(!$model->save()){
  185. $this->addErrors($model->getErrors());
  186. return false;
  187. }
  188. return true;
  189. }
  190. /**
  191. * @param $attribute
  192. * @param $params
  193. */
  194. public function isConUid($attribute, $params){
  195. $this->_conUid = $this->conUid;
  196. }
  197. /**
  198. * @param $attribute
  199. * @param $params
  200. */
  201. public function isRecUid($attribute, $params){
  202. $this->_recUid = $this->recUid;
  203. }
  204. /**
  205. * @param $attribute
  206. * @param $params
  207. */
  208. public function isCon($attribute, $params){
  209. }
  210. /**
  211. * @param $attribute
  212. * @param $params
  213. */
  214. public function isRec($attribute, $params){
  215. $this->_recUid = $this->recUid;
  216. }
  217. /**
  218. * @param $attribute
  219. * @param $params
  220. */
  221. public function isLocation($attribute, $params){
  222. }
  223. /**
  224. * 校验注册PV必须要大于最低级别要求
  225. * @param $attribute
  226. * @param $params
  227. */
  228. public function isMinDecLevel($attribute, $params){
  229. }
  230. }