dggjimai/application/common/model/ConsignmentOrder.php

242 lines
6.6 KiB
PHP
Executable File

<?php
/**
* 寄卖订单模型
*/
namespace app\common\model;
use think\model\concern\SoftDelete;
use think\db;
class ConsignmentOrder extends Model
{
use SoftDelete;
public $softDelete = true;
protected $name = 'consignment_order';
protected $autoWriteTimestamp = true;
//可搜索字段
protected $searchField = ['mobile',];
//订单状态
public function getOrderStatusTextAttr($value, $data)
{
return self::JMORDER_TEXT[$data['order_status']];
}
//是否退回获取器
public function getIsReturnTextAttr($value, $data)
{
return self::BOOLEAN_TEXT[$data['is_return']];
}//订单取消时间获取器
public function getCancelTimeAttr($value)
{
return date('Y-m-d H:i:s',$value);
}
//订单取消时间修改器
public function setCancelTimeAttr($value)
{
return strtotime($value);
}
//订单关联商品
public function consignmentOrderGoods()
{
return $this->hasMany('consignment_order_goods', 'order_id', 'id');
}
//订单用户
public function user()
{
return $this->hasOne('user', 'id', 'user_id')
->field('id,sn,nickname,avatar,mobile,create_time');
}
//订单流程
public function logs()
{
return $this->hasMany('consignment_order_log', 'order_id', 'id')->order('id desc');
}
/**
* Notes: 结算详情
* @param $json_value
* @param $user_id
* @return array
*/
public static function info($json_value, $user_id)
{
try{
$goods_lists = array();
$total_num = 0;//商品总数量
foreach ($json_value as $good) {
$goods_lists[] = $good;
//订单汇总信息
$total_num ++;
}
if (empty($goods_lists)) {
$data=[
'code' =>0,
'msg' =>'无商品',
'data' =>'',
];
return $data;
}
//寄卖数量限制
$jmnum =ShopConfig::get('website', 'jmnum');
if($jmnum>$total_num){
$data=[
'code' =>0,
'msg' =>'寄卖满'.$jmnum.'件才可下单',
'data' =>'',
];
return $data;
}
$result = [
'goods_lists' => array_values($goods_lists),
];
$data=[
'code' =>1,
'msg' =>'',
'data' =>$result,
];
return $data;
} catch (Exception $e) {
$data=[
'code' =>0,
'msg' =>$e->getMessage(),
'data' =>'',
];
return $data;
}
}
/**
* Notes: 添加订单
* @param $user_id
* @param $data
* @param $post
*/
public static function add($user_id, $data)
{
Db::startTrans();
try {
$goods_lists = $data['goods_lists'];
if (empty($data['goods_lists'])) {
$data=[
'code' =>0,
'msg' =>'无商品',
'data' =>'',
];
return $data;
}
$order = self::addOrder($user_id, $data);
$order_id = $order['order_id'];
$addOrderGoods=self::addOrderGoods($order_id, $goods_lists);
if($addOrderGoods['code']==0){
return $addOrderGoods;
}
self::addOrderAfter($order_id, $user_id, $data);
Db::commit();
$data=[
'code' =>1,
'msg' =>'',
'data' =>$order,
];
return $data;
} catch (Exception $e) {
Db::rollback();
$data=[
'code' =>0,
'msg' =>$e->getMessage(),
'data' =>'',
];
return $data;
}
}
/**
* Notes: 添加订单记录
* @param $user_id
* @param $data
* @param $user_address
* @param array $extra
*/
public static function addOrder($user_id, $data)
{
$order_data = [
'order_sn' => createSn('order', 'order_sn', '', 4),
'user_id' => $user_id,
'order_status' =>0,
'create_time' => time(),
];
$order_id = Db::name('consignment_order')->insertGetId($order_data);
return [
'order_id' => $order_id,
'order_sn' => $order_data['order_sn'],
];
}
/**
* Notes: 添加订单商品记录
* @param $order_id
* @param $goods_lists
*/
public static function addOrderGoods($order_id, $goods_lists)
{
foreach ($goods_lists as $k1 => $good) {
$goods_data = [
'order_id' => $order_id,
'item_value' => $good['item_value'],
'goods_name' => $good['goods_name'],
'item_value' => $good['item_value'],
'goods_price' => $good['goods_price'],
'goods_img' => $good['img'][0],
'brand_name' => $good['brand_name'],
'phase_name' => $good['phase_name'],
'class_name' => $good['class_name'],
'channel_name' => $good['channel_name'],
'create_time' => time(),
];
$goods_id = Db::name('consignment_order_goods')->insertGetId($goods_data);
foreach ($good['img'] as $key => $value) {
$goods_img[] = [
'type' =>2,
'union_id' => $goods_id,
'thumb_image' => $value,
'ori_image' => $value,
'create_time' => time(),
];
}
}
Db::name('mall_image')->insertAll($goods_img);
$data=[
'code' =>1,
'msg' =>'',
'data' =>'',
];
return $data;
}
/**
* Notes: 下单后操作
* @param $order_id
* @param $user_id
* @param $type
* @param $data
*/
public static function addOrderAfter($order_id, $user_id, $data)
{
//记录日志
ConsignmentOrderLog::record(
$order_id,
'寄卖下单成功',
'24小时内平台估价'
);
}
}