OpenMember.php 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. <?php
  2. namespace common\models;
  3. use common\library\Pay\lib\Log;
  4. use Yii;
  5. /**
  6. * This is the model class for table "{{%user_mater}}".
  7. *
  8. * @property integer $id
  9. * @property integer $uid
  10. * @property string $out_trade_no
  11. * @property string $openid
  12. * @property integer $type
  13. * @property integer $amount
  14. * @property integer $c_time
  15. * @property integer $u_time
  16. * @property integer $status
  17. */
  18. class OpenMember extends \yii\db\ActiveRecord
  19. {
  20. /**
  21. * @inheritdoc
  22. */
  23. const STATUS_YES = 10;//已支付
  24. const STATUS_NO = 0;//未支付
  25. const TYPE_COMPANY = 1;//装修
  26. const TYPE_MATER = 2;//建材
  27. public static function tableName()
  28. {
  29. return '{{%open_member}}';
  30. }
  31. /**
  32. * @inheritdoc
  33. */
  34. public function rules()
  35. {
  36. return [
  37. [['c_time'], 'default','value'=>time()],
  38. //[['status'], 'default','value'=>self::STATUS_YES],
  39. //[['uid','company','type_id','name','tel'], 'required'],
  40. [['uid','out_trade_no','openid','amount','status'], 'required'],
  41. [['out_trade_no','openid'], 'string'],
  42. [['c_time','uid','u_time','status','type'], 'integer'],
  43. ];
  44. }
  45. /**
  46. * @inheritdoc
  47. */
  48. public function attributeLabels()
  49. {
  50. return [
  51. 'id' => 'ID',
  52. 'uid' => '用户id',
  53. 'out_trade_no' => '订单号',
  54. 'openid' => 'openid',
  55. 'type' => '类型',
  56. 'amount' => '金额',
  57. 'c_time' => '创建时间',
  58. 'u_time' => '更新时间',
  59. 'status' => '状态',
  60. ];
  61. }
  62. /**
  63. * 建材订单号
  64. * @return string
  65. */
  66. public function outTradeNo()
  67. {
  68. $out_trade_no = "openmember".date('Ymd') . str_pad(mt_rand(1, 99999), 5, '0', STR_PAD_LEFT);
  69. $count =$this::find()->where(['out_trade_no'=>$out_trade_no])->count();
  70. if($count>0)
  71. {
  72. $this->outTradeNo();
  73. }
  74. return $out_trade_no;
  75. }
  76. /**
  77. * 装修订单号
  78. * @return string
  79. */
  80. public function outTradeNo2()
  81. {
  82. $out_trade_no = "companyopenmember".date('Ymd') . str_pad(mt_rand(1, 99999), 5, '0', STR_PAD_LEFT);
  83. $count =$this::find()->where(['out_trade_no'=>$out_trade_no])->count();
  84. if($count>0)
  85. {
  86. $this->outTradeNo();
  87. }
  88. return $out_trade_no;
  89. }
  90. public function notify($order_sn)
  91. {
  92. Log::DEBUG("notify:begin");
  93. $model = OpenMember::find()->where(['out_trade_no'=>$order_sn])->one();
  94. if(empty($model))
  95. return false;
  96. if($model->status == self::STATUS_YES)
  97. return true;
  98. $model->status = self::STATUS_YES;
  99. $model->u_time = time();
  100. if($model->save())
  101. {
  102. Log::DEBUG('model:'.json_encode($model->getFirstErrors()));
  103. if($model->type == OpenMember::TYPE_COMPANY){
  104. $user = UserCompany::find()->where(['uid'=>$model->uid])->one();
  105. if(!empty($user))
  106. {
  107. $user->member = UserCompany::ISMEMBER;
  108. $user->save();
  109. Log::DEBUG('user:'.json_encode($user->getFirstErrors()));
  110. return true;
  111. }
  112. }else{
  113. $user = UserMater::find()->where(['uid'=>$model->uid])->one();
  114. if(!empty($user))
  115. {
  116. $user->member = UserMater::MEMBER_YES;
  117. $user->save();
  118. Log::DEBUG('user:'.json_encode($user->getFirstErrors()));
  119. return true;
  120. }
  121. }
  122. }else{
  123. Log::DEBUG("notify:error");
  124. return false;
  125. }
  126. Log::DEBUG("notify:error2");
  127. return false;
  128. }
  129. }