签约订单

This commit is contained in:
tang 2024-01-15 16:52:34 +08:00
parent 2e6c04690e
commit 4d7fa19afb
5 changed files with 279 additions and 17 deletions

15
models/Signing.php Normal file
View File

@ -0,0 +1,15 @@
<?php
namespace app\models;
use yii\db\ActiveRecord;
class Signing extends ActiveRecord
{
public static function tableName()
{
return '{{%signing}}';
}
}

View File

@ -9,6 +9,7 @@
* _____LOG_____
*
*/
namespace app\modules\admin\models;
use app\models\Option;
@ -48,6 +49,10 @@ class ThemeCustomiseForm extends AdminModel
public $sitePostcode;
//公司介绍
public $siteCompanyIntro;
//签约须知
public $siteSigning;
//签约类型
public $siteSigningType;
public $cx_mch_id;
@ -59,8 +64,8 @@ class ThemeCustomiseForm extends AdminModel
public function rules()
{
return [
[['siteName','siteLogo','siteMiniLogo','siteIco','siteIcp','siteTel','siteAddress','siteEmail','sitePostcode','siteCompanyIntro'],'required'],
[['siteDomain','siteWapDomain','siteShortName','siteBriefIntro','siteDescription','siteKeywords','siteCompanyIntro'],'string'],
[['siteName', 'siteLogo', 'siteMiniLogo', 'siteIco', 'siteIcp', 'siteTel', 'siteAddress', 'siteEmail', 'sitePostcode', 'siteCompanyIntro','siteSigning','siteSigningType'], 'required'],
[['siteDomain', 'siteWapDomain', 'siteShortName', 'siteBriefIntro', 'siteDescription', 'siteKeywords', 'siteCompanyIntro','siteSigning','siteSigningType'], 'string'],
[['cx_mch_id'], 'integer'],
];
}
@ -88,20 +93,23 @@ class ThemeCustomiseForm extends AdminModel
'siteEmail' => '站点联系邮箱',
'sitePostcode' => '站点联系邮编',
'siteCompanyIntro' => '公司介绍',
'siteSigning' => '签约须知',
'siteSigningType' => '签约类型',
];
}
public function save()
{
if($this->validate()){
if ($this->validate()) {
$attrs = $this->attributes;
foreach ($attrs as $key => $value){
if(empty($value))
foreach ($attrs as $key => $value) {
if (empty($value))
continue;
$key = Utils::hump2underline($key);
$key = strtoupper($key);
$f = Option::setOption($key, $value, $this->cx_mch_id);
if(!$f){
if (!$f) {
return [
'code' => 1,
'msg' => $key . '保存失败'

View File

@ -137,6 +137,19 @@ $this->params['breadcrumbs'][] = $this->title;
<textarea name="siteCompanyIntro" placeholder="请输入公司介绍" class="layui-textarea"><?= SiteHelper::getCustomiseOptionByKey("siteCompanyIntro", "hump") ?></textarea>
</div>
</div>
<div class="layui-form-item layui-form-text">
<label class="layui-form-label">签约须知</label>
<div class="layui-input-block">
<textarea name="siteSigning" placeholder="请输入签约须知" class="layui-textarea"><?= SiteHelper::getCustomiseOptionByKey("siteSigning", "hump") ?></textarea>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">签约类型</label>
<div class="layui-input-inline">
<input type="text" name="siteSigningType" placeholder="请输入签约类型" autocomplete="off" class="layui-input" value="<?= SiteHelper::getCustomiseOptionByKey("siteSigningType", "hump") ?>">
</div>
<div class="layui-form-mid layui-word-aux">多个用|隔开</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<div class="" >

View File

@ -0,0 +1,123 @@
<?php
namespace app\modules\api\controllers;
use app\components\SiteHelper;
use app\modules\api\models\SigningForm;
class SigningController extends Controller
{
/**
* showdoc
* @catalog 签约订单
* @title 业务类型
* @description 本接口用于签约订单
* @method get
* @url /api/signing/signing-type
* @return {"code":0,"msg":"ok","data":[]}
* @remark
*/
public function actionSigningType()
{
$type = SiteHelper::getCustomiseOptionByKey("siteSigningType", "hump");
return $this->responseHandler(['data' => explode('|', $type)]);
}
/**
* showdoc
* @catalog 签约订单
* @title 签约协议
* @description 本接口用于签约订单
* @method get
* @url /api/signing/signing
* @return {"code":0,"msg":"ok","data":[]}
* @remark
*/
public function actionSigning()
{
$type = SiteHelper::getCustomiseOptionByKey("siteSigning", "hump");
return $this->responseHandler(['data' => $type]);
}
/**
* showdoc
* @catalog 签约订单
* @title 签约
* @description 本接口用于签约订单
* @method post
* @url /api/signing/signing-add
* @param goods_hub_id 必选 int 签约商品id
* @param company_name 必选 string 公司名称
* @param brand_name 必选 string 品牌名称
* @param product 必选 string 主营产品
* @param type 必选 int 业务类型
* @param number 必选 int 签约年限
* @param remark 必选 int 备注
* @return {"code":0,"msg":"ok","data":[]}
* @remark
*/
public function actionSigningAdd()
{
if (!\Yii::$app->request->isPost) {
$data = $this->invaildRequest();
return $this->responseHandler($data);
}
$signingForm = new SigningForm();
$signingForm->attributes = \Yii::$app->request->post();
return $signingForm->add();
}
/**
* showdoc
* @catalog 签约订单
* @title 签约
* @description 本接口用于签约订单
* @method get
* @url /api/signing/signing-detail
* @param order_no 必选 int 订单号
* @return {"code":0,"msg":"ok","data":[]}
* @remark
*/
public function actionSigningDetail()
{
$orderNo = \Yii::$app->request->get('order_no');
$signingForm = new SigningForm();
return $signingForm->orderDetail($orderNo);
}
/**
* showdoc
* @catalog 签约订单
* @title 签约列表
* @description 本接口用于签约订单
* @method get
* @url /api/signing/signing-list
* @param status 可选 int 订单状态
* @return {"code":0,"msg":"ok","data":[]}
* @remark
*/
public function actionSigningList()
{
$signingForm = new SigningForm();
$status = \Yii::$app->request->get('status');
return $signingForm->orderList($status);
}
}

View File

@ -0,0 +1,103 @@
<?php
namespace app\modules\api\models;
use app\models\GoodsHub;
use app\models\Signing;
use yii\data\Pagination;
class SigningForm extends ApiModel
{
public $goods_hub_id;
public $company_name;
public $brand_name;
public $product;
public $type;
public $number;
public $remark;
public function rules()
{
return [
[['goods_hub_id', 'company_name', 'brand_name', 'product', 'type', 'number', 'remark'], 'required'],
[['goods_hub_id', 'number'], 'integer']
];
}
public function add()
{
if (!$this->validate()) {
return $this->getModelError();
}
$goods = GoodsHub::findOne($this->goods_hub_id);
if (!$goods) {
return $this->apiReturnError('商品id异常');
}
$signing = new Signing();
$signing->order_no = $this->orderNo();
$signing->user_id = \Yii::$app->user->identity->id;
$signing->goods_hub_id = $this->goods_hub_id;
$signing->moy = $goods->original_price * $this->number;
$signing->company_name = $this->company_name;
$signing->brand_name = $this->brand_name;
$signing->product = $this->product;
$signing->type = $this->type;
$signing->number = $this->number;
$signing->remark = $this->remark;
$signing->create_time = time();
return $signing->save();
}
private function orderNo()
{
$orderNo = mt_rand(100000000000, 99999999999);
if (Signing::find()->where('order_no', $orderNo)->count()) {
return $this->orderNo();
}
return $orderNo;
}
public function orderDetail($orderNo)
{
$order = Signing::find()->where('order_no', $orderNo)
->where('user_id', \Yii::$app->user->identity->id)->one()->toArray();
if (!$order) {
return $this->apiReturnError('订单号错误');
}
$order['goods'] = GoodsHub::findOne($order['goods_hub_id']);
return $this->apiReturnSuccess('success', $order);
}
public function orderList($status)
{
$query = Signing::find()->where('user_id', \Yii::$app->user->identity->id);
if ($status) {
$query->where('status', $status);
}
$pagination = new Pagination(['totalCount' => $query->count(), 'defaultPageSize' => 2]);
$models = $query->offset($pagination->offset)->limit($pagination->limit)->all();
return $this->apiReturnSuccess('success', $models);
}
}