time()], //[['status'], 'default','value'=>self::STATUS_YES], //[['uid','company','type_id','name','tel'], 'required'], [['uid','out_trade_no','openid','amount','status'], 'required'], [['out_trade_no','openid'], 'string'], [['c_time','uid','u_time','status','type'], 'integer'], ]; } /** * @inheritdoc */ public function attributeLabels() { return [ 'id' => 'ID', 'uid' => '用户id', 'out_trade_no' => '订单号', 'openid' => 'openid', 'type' => '类型', 'amount' => '金额', 'c_time' => '创建时间', 'u_time' => '更新时间', 'status' => '状态', ]; } /** * 建材订单号 * @return string */ public function outTradeNo() { $out_trade_no = "openmember".date('Ymd') . str_pad(mt_rand(1, 99999), 5, '0', STR_PAD_LEFT); $count =$this::find()->where(['out_trade_no'=>$out_trade_no])->count(); if($count>0) { $this->outTradeNo(); } return $out_trade_no; } /** * 装修订单号 * @return string */ public function outTradeNo2() { $out_trade_no = "companyopenmember".date('Ymd') . str_pad(mt_rand(1, 99999), 5, '0', STR_PAD_LEFT); $count =$this::find()->where(['out_trade_no'=>$out_trade_no])->count(); if($count>0) { $this->outTradeNo(); } return $out_trade_no; } public function notify($order_sn) { Log::DEBUG("notify:begin"); $model = OpenMember::find()->where(['out_trade_no'=>$order_sn])->one(); if(empty($model)) return false; if($model->status == self::STATUS_YES) return true; $model->status = self::STATUS_YES; $model->u_time = time(); if($model->save()) { Log::DEBUG('model:'.json_encode($model->getFirstErrors())); if($model->type == OpenMember::TYPE_COMPANY){ $user = UserCompany::find()->where(['uid'=>$model->uid])->one(); if(!empty($user)) { $user->member = UserCompany::ISMEMBER; $user->save(); Log::DEBUG('user:'.json_encode($user->getFirstErrors())); return true; } }else{ $user = UserMater::find()->where(['uid'=>$model->uid])->one(); if(!empty($user)) { $user->member = UserMater::MEMBER_YES; $user->save(); Log::DEBUG('user:'.json_encode($user->getFirstErrors())); return true; } } }else{ Log::DEBUG("notify:error"); return false; } Log::DEBUG("notify:error2"); return false; } }