'modify_user'], // [['height'], 'required', 'on' => 'modify_user'], // [['weight'], 'required', 'on' => 'modify_user'], // [['age'], 'required', 'on' => 'modify_user'], [['store_id'], 'required', 'on' => 'modify_user'], // [['territory'], 'required', 'on' => 'modify_user'], [['territory'], 'string', 'max' => 100, 'on' => 'modify_user'], [['college'], 'required', 'on' => 'modify_user_buy'], [['ball_age'], 'required', 'on' => 'modify_user_buy'], [['address'], 'required', 'on' => 'modify_user_buy'], [['arm_length'], 'required', 'on' => 'modify_user_buy'], [['glove'], 'required', 'on' => 'modify_user_buy'], [['palm_size'], 'required', 'on' => 'modify_user_buy'], [['shoes_size'], 'required', 'on' => 'modify_user_buy'], [['mobile_phone'], 'filter', 'filter' => 'trim', 'on' => 'user_personal'], [['mobile_phone'], 'match', 'pattern' => '/^[1][34578][0-9]{9}$/', 'on' => 'user_personal'], [['height'], 'required', 'on' => 'user_personal'], [['weight'], 'required', 'on' => 'user_personal'], [['age'], 'required', 'on' => 'user_personal'], [['store_id'], 'required', 'on' => 'user_personal'], [['territory'], 'required', 'on' => 'user_personal'], [['territory'], 'string', 'max' => 100, 'on' => 'user_personal'], [['college'], 'required', 'on' => 'user_personal'], [['ball_age'], 'required', 'on' => 'user_personal'], [['address'], 'required', 'on' => 'user_personal'], [['arm_length'], 'required', 'on' => 'user_personal'], [['glove'], 'required', 'on' => 'user_personal'], [['palm_size'], 'required', 'on' => 'user_personal'], [['shoes_size'], 'required', 'on' => 'user_personal'], ]; } public function scenarios() { return [ 'modify_user' => ['real_name', 'mobile_phone', 'height', 'weight', 'age', 'store_id', 'territory', 'price', 'member_status'], 'modify_user_buy' => ['college', 'ball_age', 'address', 'arm_length', 'glove', 'palm_size', 'shoes_size'], 'user_personal' => ['real_name', 'mobile_phone', 'height', 'weight', 'age', 'store_id', 'territory' , 'college', 'ball_age', 'address', 'arm_length', 'glove', 'palm_size', 'shoes_size'], ]; } /** * 会员注册 */ public function modify_user() { $userInformationModel = new UserInformation(); $userInformationData = UserInformation::findOne(['user_id' => $this->user_id, 'member_status' => 1]); //有会员信息 该会员已注册 if ($userInformationData) { return $this->apiReturnSuccess('会员已注册', $userInformationData); } if (!$this->validate()) { return $this->getModelError(); } //查user表用户信息 user $user = $this->verifyUserData(); $t = \Yii::$app->db->beginTransaction(); try { //user表添加真实姓名跟手机号 if ($this->real_name) { $user->real_name = $this->real_name; } if (!$user->save()) { $t->rollBack(); return $this->getModelError($user); } // 年龄 体重 身高 门店 所属地 学院 球龄 地址 臂长 手掌大小 手套尺寸 鞋码 $data['user_id'] = $this->user_id; //user_information表添加其他信息 //体重 if ($this->weight) { $data['weight'] = $this->weight; } //身高 if ($this->height) { $data['height'] = $this->height; } //年龄 if ($this->age) { $data['age'] = $this->age; } //门店 if ($this->store_id) { $data['store_id'] = $this->store_id; } //所属地 if ($this->territory) { $data['territory'] = $this->territory; } // todo 测试使用,未接通支付,直接变更为已支付,并且日期添加上 $data['member_status'] = 1; $data['end_time'] = time() + 60 * 60 * 24 * 300; $data['begin_time'] = time(); $data['created_at'] = time(); $data['member_status'] = $this->member_status; $userInformationModel->attributes = $data; if (!$userInformationModel->save()) { return $this->getModelError($userInformationModel); } $t->commit(); return [ 'code' => 0, 'msg' => '注册成功', ]; } catch (\Exception $e) { $t->rollBack(); return [ 'code' => 1, 'msg' => '注册失败', ]; } } /** * 会员注册 填充 * @return array */ public function modify_user_buy() { if (!$this->validate()) { return $this->getModelError(); } $this->verifyUserData(); $userInformationModel = new UserInformation(); $userInformationData = UserInformation::findOne(['user_id' => $this->user_id]); if (empty($userInformationData['user_id'])) { return $this->apiReturnError('请先注册会员'); } //有会员信息 该会员已注册 if ($userInformationData['ball_age']) { return $this->apiReturnSuccess('会员已注册', $userInformationData, 1); } $userInformationData->college = $this->college; $userInformationData->ball_age = $this->ball_age; $userInformationData->address = $this->address; $userInformationData->arm_length = $this->arm_length; $userInformationData->glove = $this->glove; $userInformationData->palm_size = $this->palm_size; $userInformationData->shoes_size = $this->shoes_size; $userInformationData->updated_at = time(); if (!$userInformationData->save()) { return $this->getModelError($userInformationData); } return [ 'code' => 0, 'msg' => '注册成功' ]; } /** ` * 验证用户 * @return ApiHelper|array|null */ public function verifyUserData() { $user = ApiHelper::findOneUser($this->user_id, $this->cx_mch_id); if ($user == null) { return $this->apiReturnError('用户不存在', [], 1); } return $user; } /** * 会员注册用户信息判断 * @return array */ public function verifyUserInfo() { $user = UserInformation::find()->alias('user_info') ->innerJoin(['user' => User::tableName()], 'user_info.user_id=user.id') ->where(['user_info.user_id' => $this->user_id]) ->select('user_info.*,user.real_name,user.mobile_phone') ->asArray()->one(); if ($user['mobile_phone']) { $user['mobile_phone'] = EncryptHelper::decryptMobilePhone($user['mobile_phone']); } if ($user['end_time']) { $user['end_time'] = date('Y-m-d', $user['end_time']); } $user['member_status'] = $user['member_status'] == 0 ? 0 : 1; $user['fill_status'] = empty($user['ball_age']) ? 0 : 1; if ($user['store_id']) { $store = Store::find()->where(['id' => $user['store_id']])->asArray()->one(); $user['store_name'] = $store['name']; } return [ 'code' => 0, 'msg' => '会员信息', 'data' => $user ]; } /** * 会员信息填充 * @param $request * @return array */ public function userPersonal($request) { if ($request->isGet) { return $this->verifyUserInfo(); } if ($request->isPost) { if (!$this->validate()) { return $this->getModelError(); } $user = $this->verifyUserData(); $userInformationModel = UserInformation::findOne(['user_id' => $this->user_id]); $data['updated_at'] = time(); if ($userInformationModel == null) { $userInformationModel = new UserInformation(); $data['created_at'] = time(); } //开启事务 $t = \Yii::$app->db->beginTransaction(); try { //user表添加真实姓名跟手机号 if ($this->real_name) { $user->real_name = $this->real_name; } if ($this->mobile_phone) { // $user->mobile_phone = EncryptHelper::encryptMobilePhone($this->mobile_phone); } if (!$user->save()) return $this->getModelError($user); // 年龄 体重 身高 门店 所属地 学院 球龄 地址 臂长 手掌大小 手套尺寸 鞋码 $data['user_id'] = $this->user_id; //user_information表添加其他信息 //体重 if ($this->weight) { $data['weight'] = $this->weight; } //身高 if ($this->height) { $data['height'] = $this->height; } //年龄 if ($this->age) { $data['age'] = $this->age; } //门店 if ($this->store_id) { $data['store_id'] = $this->store_id; } //所属地 if ($this->territory) { $data['territory'] = $this->territory; } //学院 if ($this->college) { $data['college'] = $this->college; } //球龄 if ($this->ball_age) { $data['ball_age'] = $this->ball_age; } //地址 if ($this->address) { $data['address'] = $this->address; } //臂长 if ($this->arm_length) { $data['arm_length'] = $this->arm_length; } //手套尺寸 if ($this->glove) { $data['glove'] = $this->glove; } //手掌大小 if ($this->palm_size) { $data['palm_size'] = $this->palm_size; } //鞋子大小 if ($this->shoes_size) { $data['shoes_size'] = $this->shoes_size; } $userInformationModel->attributes = $data; if (!$userInformationModel->save()) return $this->getModelError($userInformationModel); $t->commit(); return [ 'code' => 0, 'msg' => '成功', 'data' => [] ]; } catch (\Exception $ex) { $t->rollBack(); return [ 'code' => 1, 'msg' => '失败', 'data' => null ]; } } return $this->apiReturnError('非法请求'); } }