| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161 |
- <?php
- /**
- * 重庆赤晓店信息科技有限公司
- * https://www.chixiaodian.com
- * Copyright (c) 2023 赤店商城 All rights reserved.
- */
- namespace app\modules\client\models\v1;
- use app\models\MdStaff;
- use app\models\VerifyCard;
- use app\models\VerifyCardAccount;
- use app\models\VerifyCardSale;
- use app\utils\ShareQrcode;
- use yii\base\Model;
- use app\models\VerifyCardLog;
- use app\models\Goods;
- class WriteOffCodeForm extends Model
- {
- public $sale_id;
- public function rules()
- {
- return [
- [['sale_id'],'integer']
- ];
- }
- public function getQrcode(){
- $sale_log = VerifyCardSale::findOne($this->sale_id);
- $pic_url = VerifyCard::findOne($sale_log->verify_card_id)->pic_url;
- $account = VerifyCardAccount::findOne($sale_log->account_id)->account;
- $scene = "id:{$this->sale_id}";
- $res = ShareQrcode::wxQrcode('user/write_off_card/card_write_card/card_write_card', $scene);
- $url_path = '';
- if (isset($res['code']) && $res['code'] == 0) {
- $url_path = $res['url_path'];
- }
- return [
- "code"=>0,
- "data"=>[
- "pic_url"=>$pic_url,
- "url_path"=>$url_path,
- "account"=>$account
- ]
- ];
- }
- public function clerkCard(){
- $t = \Yii::$app->db->beginTransaction();
- try {
- $user_id = get_saas_user_id();
- $store_user_id = get_user_id();
- $mdStaff = MdStaff::find()->where(['saas_user_id'=>$user_id,'is_delete'=>0])->one();
- if(empty($mdStaff)){
- throw new \Exception("非核销员与店长,不可核销");
- }
- $sale_log = VerifyCardSale::findOne($this->sale_id);
- $card = VerifyCard::findOne($sale_log->verify_card_id);
- if ($sale_log->status == 1) {
- throw new \Exception("卡已兑换或核销");
- }
- if ($card->begin_time > time() && intval($card->date_type) === 2) {
- throw new \Exception("卡未到使用时间 不可使用");
- }
- if ($card->expire_day > 0 && $sale_log->end_time <= time()) {
- throw new \Exception("卡已过期,不能使用");
- }
- if ($card->type == 1) {
- if($sale_log->left_num > 0) {
- $sale_log->use_num = $sale_log->use_num + 1;
- $sale_log->left_num = $sale_log->left_num - 1;
- $sale_log->left_num == 0 && $sale_log->status = 1;
- $sale_log->save();
- } elseif($card->is_unlimited == 1) {
- /* begin 2025/07/28 09:21:50 id1267 判断是否为无限次核销卡 WPing丶 */
- $sale_log->use_num = $sale_log->use_num + 1;
- $sale_log->save();
- /* end */
- }else{
- throw new \Exception("核销卡次数已用完");
- }
- } else if ($card->type == 2) {
- $sale_log->use_num = $sale_log->use_num + 1;
- $sale_log->left_num = $sale_log->left_num - 1;
- $sale_log->status = 1;
- $sale_log->save();
- } else {
- throw new \Exception("未知类型,卡不可用");
- }
- // 增加核销记录
- $log = new VerifyCardLog();
- $log->store_id = get_store_id();
- $log->sale_id = $this->sale_id;
- $log->shop_id = $mdStaff->md_id;
- $log->verify_person = $store_user_id;
- $log->user_id = $sale_log->user_id;
- $log->use_time = time();
- $log->type = VerifyCardLog::WRITE_TYPE_WRITE_OFF;
- $log->describe = $card->type == 1 ? '核销卡核销' : '礼品卡核销';
- $log->save();
- $t->commit();
- return [
- 'code' => 0,
- 'msg' => '核销完成',
- ];
- } catch (\Exception $e) {
- $t->rollBack();
- return [
- 'code'=>1,
- 'msg'=>$e->getMessage()
- ];
- }
- }
- public function getCard(){
- try {
- $user_id = get_saas_user_id();
- $mdStaff = MdStaff::find()->where(['saas_user_id'=>$user_id,'is_delete'=>0])->one();
- if(empty($mdStaff)){
- throw new \Exception("非核销员与店长,不可核销");
- }
- $sale_log = VerifyCardSale::findOne($this->sale_id);
- if(intval($sale_log->status) !== 0){
- throw new \Exception("卡已失效");
- }
- $verifyCard = VerifyCard::findOne($sale_log->verify_card_id);
- $account = VerifyCardAccount::findOne($sale_log->account_id)->account;
- $goods_list = [];
- if ($verifyCard->type == 2) {
- $goods_list = Goods::find()
- ->where(['store_id' => get_store_id()])
- ->andWhere(['in', 'id', json_decode($verifyCard->goods_ids, true)])
- ->asArray()
- ->all();
- foreach ($goods_list as $k => $val) {
- $val['attr'] = json_decode($val['attr'], true);
- $goods_info = Goods::findOne($val['id']);
- $goods_list[$k]['attr_group_list'] = $goods_info->getAttrGroupList();
- }
- }
- return [
- "code"=>0,
- "data"=>[
- 'goods_list' => $goods_list,
- 'card_type' => $verifyCard->type,
- "pic_url"=>$verifyCard->pic_url,
- "bg_url"=>$verifyCard->bg_pic_url,
- "name"=>$verifyCard->name,
- "account"=>$account,
- "use_num"=>$sale_log->use_num,
- "left_num"=>$verifyCard->is_unlimited == 1 ? '无限次' : $sale_log->left_num,
- 'is_unlimited' => $verifyCard->is_unlimited,//2025年7月26日17:34:04 id1267开发内容:根据核销次数来判断是否是无限次卡(在规定时间内可无限次核销)
- ],
- "msg"=>"成功",
- ];
- }catch (\Exception $e){
- return [
- "code"=>1,
- "msg"=>$e->getMessage()
- ];
- }
- }
- }
|