bztang-admin/app/backend/modules/goods/models/Coupon.php

131 lines
3.9 KiB
PHP

<?php
/**
* Created by PhpStorm.
* Author:
* Date: 2017/7/13
* Time: 上午16:45
*/
namespace app\backend\modules\goods\models;
use app\common\exceptions\ShopException;
use app\common\models\goods\GoodsCoupon;
use app\common\traits\MessageTrait;
class Coupon extends GoodsCoupon
{
static protected $needLog = true;
/**
* @param $goodsId
* @param $data
* @param $operate
* @return bool
*/
public function relationValidator($goodsId, $data, $operate)
{
// $couponModel = self::getModel($goodsId,$operate);
// $array = [
// 'goods_id' => $goodsId,
// 'is_give' => $data['is_give']?:0,
// 'send_type' => $data['send_type']?:0,
// 'send_num' => $data['send_num']?:0,
// 'coupon' => $couponModel->recombination($data),
// 'shopping_share'=> $data['shopping_share']?:'0',
// 'share_coupon' => $couponModel->recombination($data['share_coupon']),
// 'no_use' => $data['no_use']?1:0,
// 'is_use_num' => $data['is_use_num']?1:0,
// 'use_num' => intval($data['use_num']),
// ];
// $couponModel->fill($array);
// $validator = $couponModel->validator();
// if ($validator->fails()) {
// $this->error($validator->messages());
// return false;
// }
return true;
}
/**
* @param $goodsId
* @param $data
* @param $operate
* @return bool|null
*/
public static function relationSave($goodsId, $data, $operate)
{
if (!$goodsId) {
return false;
}
if (!$data) {
return false;
}
$couponModel = self::getModel($goodsId, $operate);
$array = [
'goods_id' => $goodsId,
'is_give' => $data['is_give'],
'send_type' => $data['send_type'],
'send_num' => $data['send_num'] ?: '0',
'coupon' => $data['coupon'],
'shopping_share'=> $data['shopping_share']?:'0',
'share_coupon' => $data['share_coupon'],
'no_use' => $data['no_use']?1:0,
'is_use_num' => $data['is_use_num']?1:0,
'use_num' => intval($data['use_num']),
];
//判断deleted
if ($operate == 'deleted') {
return $couponModel->delete();
}
$couponModel->fill($array);
return $couponModel->save();
}
/**
* @param $goodsId
* @param $operate
* @return bool|static
*/
public static function getModel($goodsId, $operate)
{
$model = false;
if ($operate != 'created') {
$model = Coupon::where(['goods_id' => $goodsId])->first();
}
!$model && $model = new Coupon;
return $model;
}
/**
* @param $data
* @return array|bool
*/
public function recombination($data)
{
$coupon = [];
$coupon_ids = is_array($data['coupon_id']) ? $data['coupon_id'] : array();
if (count($coupon_ids) != count(array_unique($coupon_ids))) {
throw new ShopException('请勿重复选择优惠券,直接追加数量即可');
}
foreach ($coupon_ids as $key => $coupon_id) {
if (!preg_match('/^\+?[1-9]\d*$/', trim($data['coupon_several'][$key]))) {
$this->error('请输入正确的优惠券赠送数量(正整数)');
return false;
break;
}
$coupon_id = trim($coupon_id);
if ($coupon_id) {
$coupon[] = array(
'coupon_id' => trim($data['coupon_id'][$key]),
'coupon_name' => trim($data['coupon_name'][$key]),
'coupon_several' => trim($data['coupon_several'][$key])
);
}
}
return $coupon;
}
}