| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391 |
- <?php
- /**
- * 重庆赤晓店信息科技有限公司
- * https://www.chixiaodian.com
- * Copyright (c) 2023 赤店商城 All rights reserved.
- */
- namespace app\modules\admin\models\alipay;
- use app\modules\admin\models\AlipayThirdForm;
- use app\models\ActivityOrdervoucher;
- use app\models\AlipayVoucherCodeTask;
- use app\models\AlipayVoucherCode;
- use app\models\Coupon;
- use app\models\CouponAutoSend;
- use app\models\User;
- use app\models\Store;
- use app\models\SaasUser;
- use app\models\AlipayCardTemp;
- use app\models\AlipayCard;
- use yii\base\Model;
- use yii\data\Pagination;
- use yii\db\Query;
- class Card extends Model
- {
- public $activity_ordervoucher_id;
- public $mini_id;
- public $alipay_activity_id;
- public $store_id;
- public $pageSize = 5;
- public $page = 1;
- public $publish_start_time;
- public $publish_end_time;
- public $status;
- /**
- * {@inheritdoc}
- */
- public function rules()
- {
- return [
- [['store_id', 'mini_id', 'page', 'pageSize'], 'integer'],
- [['publish_start_time', 'publish_end_time', 'status'], 'safe'],
- ];
- }
- //详情
- public function tempInfo() {
- $model = AlipayCardTemp::findOne(['mini_id' => $this->mini_id, 'is_delete' => 0]);
- if($model && $model->template_id){
- $form = new AlipayThirdForm();
- $form->mini_id = $this->mini_id;
- $apires = $form->AlipayMarketingCardTemplateQuery($model->template_id);
- if($apires['code'] !== 0){
- \Yii::error([__METHOD__, $apires]);
- return $apires;
- }
- }
- if($model){
- $model->card_action_list = json_decode($model->card_action_list, true);
- $model->column_info_list = json_decode($model->column_info_list, true);
- $model->template_benefit_info = json_decode($model->template_benefit_info, true);
- $model->open_card_conf_card_rights = json_decode($model->open_card_conf_card_rights, true);
- }
- return [
- 'code' => 0,
- 'msg' => 'ok',
- 'apires' => $apires,
- 'data' => $model,
- ];
- }
- //创建
- public function tempCreate($params = [], $id = 0, $update = 1) {
- $t = \Yii::$app->db->beginTransaction();
- $model = $id ? AlipayCardTemp::findOne($id) : new AlipayCardTemp();
- if($update || $params['card_show_name']){
- $model->mini_id = $this->mini_id;
- $model->store_id = $this->store_id;
- $model->card_show_name = $params['card_show_name'];
- $model->logo_id = $params['logo_id'];
- $model->background_id = $params['background_id'];
- $model->column_info_list_point = $params['column_info_list_point'];
- $model->column_info_list_balance = $params['column_info_list_balance'];
- $model->card_action_list = json_encode($params['card_action_list']);
- $model->column_info_list = json_encode($params['column_info_list']);
- $model->template_benefit_info = json_encode($params['template_benefit_info']);
- $model->open_card_conf_card_rights = json_encode($params['open_card_conf_card_rights']);
- $model->join_benefit_id = $params['join_benefit_id'];
- if(!$model->save()){
- $t->rollBack();
- return [
- 'code' => 1,
- 'msg' => array_shift($model->getFirstErrors()),
- ];
- }
- }
-
- $form = new AlipayThirdForm();
- $form->mini_id = $this->mini_id;
- $biz_content = $this->tempModelToBiz($model);
- $res = $form->AlipayMarketingCardTemplateCreate($biz_content, $model->template_id);
- if($res['code'] !== 0){
- \Yii::error([__METHOD__, $res]);
- $t->rollBack();
- return $res;
- }
- $template_id = $res['data']->template_id;
- $model->template_id = $template_id;
- $model->save();
- $t->commit();
- //开卡表单
- $res2 = $form->AlipayMarketingCardFormtemplateSet($model->template_id);
- if($res2['code'] !== 0){
- \Yii::error([__METHOD__, $res2]);
- $t->rollBack();
- return $res2;
- }
- return $res;
- }
- public function tempModelToBiz($model) {
- $biz_content = [
- 'spi_app_id' => '2018xxxxxxx',
- 'request_id' => md5(microtime()),
- 'card_type' => 'OUT_MEMBER_CARD',
- 'biz_no_suffix_len' => '8',
- 'write_off_type' => 'qrcode',
- 'template_style_info' => [
- 'card_show_name' => $model->card_show_name,
- 'logo_id' => $model->logo_id,
- 'background_id' => $model->background_id,
- 'bg_color' => 'rgb(0,159,252)',
- // 'front_text_list_enable' => 'true',
- // 'feature_descriptions' => [
- // '特色信息,用于领卡预览',
- // '使用花呗卡可享受免费分期',
- // ],
- // 'slogan' => '标语权益享不停',
- // 'brand_name' => '品牌商名称',
- 'column_info_layout' => 'list', //list/grid
- ],
- ];
- if($model->column_info_list_point){
- $biz_content['column_info_list'][] = [
- 'code' => 'POINT',
- 'title' => '积分',
- ];
- $biz_content['field_rule_list'][] = [
- 'field_name' => 'Point',
- 'rule_name' => 'ASSIGN_FROM_REQUEST',
- 'rule_value' => 'Point',
- ];
- }
- if($model->column_info_list_balance){
- $biz_content['column_info_list'][] = [
- 'code' => 'BALANCE',
- 'title' => '余额',
- ];
- $biz_content['field_rule_list'][] = [
- 'field_name' => 'Balance',
- 'rule_name' => 'ASSIGN_FROM_REQUEST',
- 'rule_value' => 'Balance',
- ];
- }
- foreach(json_decode($model->column_info_list, true) as $i => $item){
- $biz_content['column_info_list'][] = [
- 'code' => 'column_info_list_code_' . $i,
- 'title' => $item['title'],
- 'value' => $item['value'],
- 'operate_type' => 'openWeb',
- 'more_info' => [
- 'title' => $item['title'],
- 'url' => $item['url']['link'],
- ],
- 'icon_id' => $model->logo_id,
- ];
- }
- foreach(json_decode($model->card_action_list, true) as $i => $item){
- $display_on_list = $i < 2 ? 'true' : 'false';
- $biz_content['card_action_list'][] = [
- 'code' => 'card_action_list_code_' . $i,
- 'text' => $item['title'],
- 'url_type' => 'miniAppUrl',
- 'mini_app_url' => [
- 'mini_app_id' => '2018xxxxxxx',
- 'mini_page_param' => $item['url']['link'],
- 'display_on_list' => $display_on_list,
- ]
- ];
- }
- foreach(json_decode($model->template_benefit_info, true) as $i => $item){
- $biz_content['template_benefit_info'][] = [
- 'title' => $item['title'],
- 'benefit_desc' => [$item['benefit_desc']],
- 'start_date' => '2016-07-18 15:17:23',
- 'end_date' => '2116-07-18 15:17:23',
- ];
- }
- $biz_content['open_card_conf'] = [
- 'open_card_source_type' => 'ISV',
- 'source_app_id' => '2018xxxxxxx',
- 'open_card_url' => 'https://www.alipay.com',
- ];
- foreach(json_decode($model->open_card_conf_card_rights, true) as $i => $item){
- $biz_content['open_card_conf']['card_rights'][] = [
- 'title' => $item['title'],
- 'detail' => $item['detail'],
- 'logo_id' => $item['logo_id'],
- ];
- }
- return $biz_content;
- }
- public function spi_alipay_user_opencard_get($params) {
- /**
- $_POST = [
- 'user_id' => '2088902351536970'
- 'user_info' => '[{\'OPEN_FORM_FIELD_GENDER\':\'男\'},{\'OPEN_FORM_FIELD_MOBILE\':\'13888888888\'},{\'OPEN_FORM_FIELD_NAME\':\'李四\'}]'
- 'out_serial_no' => '1621923366000'
- 'biz_card_no' => '000001'
- 'template_id' => '20200312000000000414103000300846'
- 'out_string' => 'test'
- ]
- *
- */
- $temp = AlipayCardTemp::findOne(['template_id' => $params['template_id']]);
- $user = User::findOne(['alipay_open_id' => $params['user_id'], 'store_id' => $temp->store_id]);
- $card = AlipayCard::findOne(['template_id' => $temp->template_id, 'alipay_open_id' => $params['user_id']]);
- \Yii::error([__METHOD__, $card, ['template_id' => $temp->template_id, 'alipay_open_id' => $params['user_id']]]);
- if(!$card){
- $card = new AlipayCard();
- $card->mini_id = $temp->mini_id;
- $card->store_id = $temp->store_id;
- $card->template_id = $temp->template_id;
- $card->alipay_open_id = $params['user_id'] ?: '';
- $card->biz_card_no = $params['biz_card_no'];
- $card->external_card_no = $params['biz_card_no'];
- $card->out_string = $params['out_string'] ?: '';
- $card->open_date = date('Y-m-d H:i:s');
- $card->valid_date = '2100-12-12 00:00:00';
- }
- $card->is_delete = 0;
- \Yii::error([__METHOD__, $params['user_info'], json_decode($params['user_info'], true)]);
- $user_info = json_decode($params['user_info'], true);
- if(json_last_error()){
- $params['user_info'] = str_replace("'", '"', $params['user_info']);
- $user_info = json_decode($params['user_info'], true);
- }
- \Yii::error([__METHOD__, $user_info]);
- if($user_info){
- foreach($user_info as $item){
- if(isset($item['OPEN_FORM_FIELD_MOBILE'])){
- $card->mobile = $item['OPEN_FORM_FIELD_MOBILE'];
- }
- if(isset($item['OPEN_FORM_FIELD_NAME'])){
- $card->name = $item['OPEN_FORM_FIELD_NAME'];
- }
- }
- }
- if(!$card->save()){
- \Yii::error([__METHOD__, $card]);
- return [
- 'code' => 1,
- 'msg' => array_shift($card->getFirstErrors()),
- ];
- }
- $res = [
- "response" => [
- "code" => "10000",
- "msg" => "Success",
- "card_info" => [
- "biz_card_no" => $card['biz_card_no'],
- "external_card_no" => $card['external_card_no'],
- "open_date" => $card['open_date'],
- "valid_date" => $card['valid_date'],
- "point" => $user->integral,
- "balance" => $user->money,
- "template_id" => $card['template_id'],
- "front_text_list" => [
- [
- "label" => "专业",
- "value" => "金融贸易"
- ]
- ],
- ],
- // "open_card_ext_info" => [
- // "is_new_member" => true,
- // "activity_id" => "12345"
- // ]
- ],
- "sign" => "ERITJKEIJKJHKKKKKKKHJEREEEEEEEEEEE",
- ];
- return $res;
- }
- public function apiCardQuery($card) {
- $form = new AlipayThirdForm();
- $form->mini_id = $this->mini_id;
- $res = $form->AlipayMarketingCardQuery($card->biz_card_no);
- if($res['code'] !== 0){
- \Yii::error([__METHOD__, $res]);
- }
- return $res;
- }
- public function cardInfoByUser($user) {
- $card = AlipayCard::findOne(['alipay_open_id' => $user['alipay_open_id'], 'store_id' => $this->store_id, 'mini_id' => $this->mini_id]);
- $apires = $this->apiCardQuery($card);
- return [
- 'code' => 0,
- 'msg' => 'ok',
- 'card' => $card,
- 'apires' => $apires,
- ];
- }
- public function cardList($params = []) {
- $query = AlipayCard::find()->where(['is_delete' => 0, 'store_id' => $this->store_id]);
- $this->mini_id && $query->andWhere(['mini_id' => $this->mini_id]);
- $params['name'] && $query->andWhere(['name' => $params['name']]);
- $params['mobile'] && $query->andWhere(['mobile' => $params['mobile']]);
- if($params['nickname']){
- $userQuery = (new Query())->select('alipay_open_id')->from(User::tableName())->where(['store_id' => $this->store_id])->andWhere(['like', 'nickname', $params['nickname']]);
- $query->andWhere(['alipay_open_id' => $userQuery]);
- }
- $list = pagination_make($query);
- foreach ($list['list'] as &$item) {
- $user = User::findOne(['alipay_open_id' => $item['alipay_open_id'], 'store_id' => $this->store_id]);
- $item['user'] = $user;
- $item['point'] = $user->integral;
- $item['balance'] = $user->money;
- }
- return [
- 'code' => 0,
- 'msg' => 'ok',
- 'data' => $list,
- // 'sql' => $query->createCommand()->getRawSql(),
- ];
- }
- //更新积分、余额
- public function cardUpdate($id) {
- $card = AlipayCard::findOne($id);
- $user = User::findOne(['alipay_open_id' => $card['alipay_open_id'], 'store_id' => $card['store_id']]);
- if(!$user){
- return [
- 'code' => 0,
- 'msg' => '无需同步,没有查到系统会员信息',
- ];
- }
- $form = new AlipayThirdForm();
- $form->mini_id = $this->mini_id;
- $card_info = [
- 'biz_card_no' => $card->biz_card_no,
- 'external_card_no' => $card->external_card_no,
- 'open_date' => $card->open_date,
- 'valid_date' => $card->valid_date,
- 'point' => $user->integral,
- 'balance' => $user->money,
- 'template_id' => $card->template_id,
- ];
- $res = $form->AlipayMarketingCardUpdate($card->biz_card_no, $card_info);
- if($res['code'] !== 0){
- \Yii::error([__METHOD__, $res]);
- }
- return $res;
- }
- public function cardUpdateByOpenid($openid) {
- try{
- $card = AlipayCard::findOne(['alipay_open_id' => $openid, 'store_id' => $this->store_id]);
- if(!$card){
- return;
- }
- $this->mini_id = $card->mini_id;
- return $this->cardUpdate($card->id);
- } catch (\Exception $e) {
- \Yii::error([__METHOD__, $e]);
- }
-
- }
- public function cardDel($id) {
- $card = AlipayCard::findOne($id);
- $card->is_delete = 1;
- if(!$card->save()){
- \Yii::error([__METHOD__, $card]);
- return [
- 'code' => 1,
- 'msg' => array_shift($card->getFirstErrors()),
- ];
- }
- $form = new AlipayThirdForm();
- $form->mini_id = $this->mini_id;
- $res = $form->AlipayMarketingCardDelete($card->biz_card_no);
- if($res['code'] !== 0){
- \Yii::error([__METHOD__, $res]);
- }
- return $res;
- }
- }
|