LgForm.php 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230
  1. <?php
  2. /**
  3. * 重庆赤晓店信息科技有限公司
  4. * https://www.chixiaodian.com
  5. * Copyright (c) 2023 赤店商城 All rights reserved.
  6. */
  7. namespace app\modules\client\models\v1;
  8. use app\constants\OptionSetting;
  9. use app\jobs\LgApplyJob;
  10. use app\models\Address;
  11. use app\models\District;
  12. use app\models\Lg;
  13. use app\models\Option;
  14. use app\utils\LgApi;
  15. class LgForm extends \yii\base\Model
  16. {
  17. public $lg_id;
  18. public $store_id;
  19. public $user_id;
  20. public $audit_time;
  21. public $refuse_desc;
  22. public $name;
  23. public $mobile;
  24. public $bank_phone;
  25. public $cert_card;
  26. public $park_codes;
  27. public $acc_no;
  28. public $bank_code;
  29. public $id_card_front;
  30. public $id_card_back;
  31. public $alipay_acc;
  32. public $id_card_start;
  33. public $id_card_end;
  34. public $bank_pic;
  35. public function rules()
  36. {
  37. return [
  38. [['name', 'mobile'], 'trim'],
  39. [['name', 'mobile','bank_phone','cert_card','acc_no','bank_code','id_card_front','id_card_back','bank_pic'], 'required'],
  40. [['user_id', 'audit_time','lg_id'], 'integer'],
  41. [['alipay_acc', 'refuse_desc','bank_pic','mobile','bank_phone','cert_card','acc_no','bank_code','id_card_front','id_card_back','name','bank_phone','id_card_start','id_card_end'], 'string'],
  42. [['latitude','longitude'], 'safe'],
  43. ];
  44. }
  45. public function attributeLabels()
  46. {
  47. return [
  48. 'name' => '收货人',
  49. 'mobile' => '联系电话',
  50. 'bank_phone' => '预留手机号',
  51. 'cert_card' => '身份证号',
  52. 'park_codes' => '园区编码',
  53. 'acc_no' => '银行卡号',
  54. 'bank_code' => '银行编码',
  55. 'id_card_front' => '身份证正面',
  56. 'id_card_back' => '身份证徽面',
  57. 'alipay_acc' => '支付宝账号',
  58. 'refuse_desc' => '拒绝原因',
  59. 'id_card_start' => '证件开始时间',
  60. 'id_card_end' => '证件结束时间',
  61. 'bank_pic' => '银行卡照片',
  62. ];
  63. }
  64. public function save()
  65. {
  66. if (!$this->validate()) {
  67. return [
  68. 'code' => 1,
  69. 'msg' => $this->getErrorSummary(false)[0],
  70. ];
  71. }
  72. $t = \Yii::$app->db->beginTransaction();
  73. try {
  74. $lg = Lg::findOne([
  75. 'is_delete' => 0,
  76. 'user_id' => $this->user_id
  77. ]);
  78. if($lg && ($lg->status == 1 || $lg->status == 0)){
  79. return [
  80. 'code' => 1,
  81. 'msg' => '审核失败才能再次提交',
  82. ];
  83. }
  84. if (!$lg) {
  85. $lg = new Lg();
  86. $lg->store_id = $this->store_id;
  87. $lg->user_id = $this->user_id;
  88. $lg->is_delete = Address::DELETE_STATUS_FALSE;
  89. }
  90. //判断身份证号是否使用过
  91. $ic_card_exists = Lg::find()
  92. ->where(['cert_card' => $this->cert_card, 'is_delete' =>0])
  93. ->andWhere(['!=','user_id', $this->user_id])
  94. ->exists();
  95. if ($ic_card_exists){
  96. return [
  97. 'code' => 1,
  98. 'msg' => '身份证号已有人申请',
  99. ];
  100. }
  101. $lg->name = trim($this->name);
  102. $lg->mobile = $this->mobile;
  103. $lg->bank_phone = trim($this->bank_phone);
  104. $lg->cert_card = trim($this->cert_card);
  105. $lg->park_codes = trim($this->park_codes);
  106. $lg->acc_no = trim($this->acc_no);
  107. $lg->bank_code = trim($this->bank_code);
  108. $lg->id_card_front = trim($this->id_card_front);
  109. $lg->id_card_back = trim($this->id_card_back);
  110. $lg->alipay_acc = trim($this->alipay_acc);
  111. $lg->id_card_start = $this->id_card_start?strtotime($this->id_card_start):'';
  112. $lg->id_card_end = $this->id_card_end == '长期' ? $this->id_card_end : ($this->id_card_end?(string)strtotime($this->id_card_end):'');
  113. $lg->bank_pic = $this->bank_pic;
  114. if ($lg->save()) {
  115. //调用灵工收款人进件接口
  116. $lgApi = new LgApi($this->store_id);
  117. //先调用查询进件接口查询是否进件成功过,如果成功就改为修改银行卡信息接口
  118. $query_data = [];
  119. $query_data['certCard'] = $this->cert_card;
  120. $query_res = $lgApi->FlexibleQuery($query_data);
  121. //走修改银行卡信息
  122. if ($query_res[0]['status'] == 300){
  123. $post_data['certCard'] = $this->cert_card;//收款人身份证
  124. $post_data['accNo'] = $this->acc_no;//银行卡号
  125. $post_data['bankCode'] = $this->bank_code;//收款人银行编码(调用 1006 此接口)(特殊可选)
  126. $post_data['bankPhone'] = $this->bank_phone;//预留手机号
  127. $post_data['alipayAcc'] = '';//支付宝账号
  128. $res = $lgApi->FlexibleMkd($post_data);
  129. if ($res['certCard']){
  130. //更改进件信息
  131. $lg_info = Lg::findOne($lg->id);
  132. $lg_info->status = 1;
  133. $lg_info->save();
  134. $t->commit();
  135. return [
  136. 'code' => 0,
  137. 'msg' => '保存成功',
  138. 'data' => $res
  139. ];
  140. }else{
  141. $t->rollBack();
  142. return [
  143. 'code' => 1,
  144. 'msg' => $res['msg'],
  145. ];
  146. }
  147. }else{
  148. // print_r(222);die;
  149. //走进件
  150. $post_data['name'] = $this->name;//收款人姓名
  151. $post_data['certCard'] = $this->cert_card;//收款人身份证
  152. $post_data['contractType'] = '100';//签约方式 100 快捷签约
  153. $post_data['accNo'] = $this->acc_no;//银行卡号
  154. $post_data['bankCode'] = $this->bank_code;//收款人银行编码(调用 1006 此接口)(特殊可选)
  155. $post_data['bankPhone'] = $this->bank_phone;//预留手机号
  156. $post_data['idcardFront'] = $this->id_card_front;//身份证正面
  157. $post_data['idcardBack'] = $this->id_card_back;//身份证徽面
  158. $res = $lgApi->FlexibleRegister($post_data);
  159. //进件成功
  160. if ($res['status'] == 200){
  161. $t->commit();
  162. //进件接口调用后消息队列查询进件状态
  163. \queue_push(new LgApplyJob(['id'=>$lg->id,'store_id'=>$this->store_id,'retry' => 5]), 60);
  164. return [
  165. 'code' => 0,
  166. 'msg' => '保存成功',
  167. 'data' => $res
  168. ];
  169. }else{
  170. $t->rollBack();
  171. return [
  172. 'code' => 1,
  173. 'msg' => $res['msg'],
  174. ];
  175. }
  176. }
  177. } else {
  178. $t->rollBack();
  179. foreach ($lg->errors as $error) {
  180. return [
  181. 'code' => 1,
  182. 'msg' => $error[0],
  183. ];
  184. }
  185. }
  186. }catch (\Exception $e){
  187. \Yii::error($e);
  188. $t->rollBack();
  189. return [
  190. 'code' => 1,
  191. 'msg' => $e->getMessage(),
  192. ];
  193. }
  194. }
  195. }