|
@@ -2,7 +2,10 @@
|
|
|
|
|
|
namespace App\Service;
|
|
namespace App\Service;
|
|
|
|
|
|
|
|
+use App\Model\BasicType;
|
|
|
|
+use App\Model\Construction;
|
|
use App\Model\Employee;
|
|
use App\Model\Employee;
|
|
|
|
+use App\Model\PurchaseOrder;
|
|
use App\Model\SeeRange;
|
|
use App\Model\SeeRange;
|
|
use App\Model\SportsBag;
|
|
use App\Model\SportsBag;
|
|
use App\Model\SportsBagProductInfo;
|
|
use App\Model\SportsBagProductInfo;
|
|
@@ -14,10 +17,14 @@ class SportsBagService extends Service
|
|
list($status,$msg) = $this->orderRule($data,$user,false);
|
|
list($status,$msg) = $this->orderRule($data,$user,false);
|
|
if(!$status) return [$status,$msg];
|
|
if(!$status) return [$status,$msg];
|
|
|
|
|
|
|
|
+ $params = $this->getDataFile($data);
|
|
|
|
+ (new OperationLogService())->setOperationList($params,$user,2);
|
|
|
|
+
|
|
try{
|
|
try{
|
|
DB::beginTransaction();
|
|
DB::beginTransaction();
|
|
$material_model = SportsBag::where('id',$data['id'])->first();
|
|
$material_model = SportsBag::where('id',$data['id'])->first();
|
|
$material_model->title = $data['title'];
|
|
$material_model->title = $data['title'];
|
|
|
|
+ $material_model->purchase_attribute = $data['purchase_attribute'];
|
|
$material_model->mark = $data['mark'] ?? "";
|
|
$material_model->mark = $data['mark'] ?? "";
|
|
$material_model->number = $data['number'];
|
|
$material_model->number = $data['number'];
|
|
$material_model->start_time = $data['start_time'] ?? 0;
|
|
$material_model->start_time = $data['start_time'] ?? 0;
|
|
@@ -55,6 +62,16 @@ class SportsBagService extends Service
|
|
return [false,$e->getMessage()];
|
|
return [false,$e->getMessage()];
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ if(! empty($data['check'])) {
|
|
|
|
+ list($status,$msg) = (new CheckService())->checkAll([
|
|
|
|
+ "id" => $material_model->id,
|
|
|
|
+ "order_number" => $data['order_number'],
|
|
|
|
+ "opt_case" => CheckService::twl,
|
|
|
|
+ "menu_id" => $data['menu_id']
|
|
|
|
+ ],$user);
|
|
|
|
+ if(! $status) return [true, '保存成功,活动包确认失败,异常信息:' . $msg];
|
|
|
|
+ }
|
|
|
|
+
|
|
return [true,''];
|
|
return [true,''];
|
|
}
|
|
}
|
|
|
|
|
|
@@ -65,6 +82,8 @@ class SportsBagService extends Service
|
|
try{
|
|
try{
|
|
DB::beginTransaction();
|
|
DB::beginTransaction();
|
|
$material_model = new SportsBag();
|
|
$material_model = new SportsBag();
|
|
|
|
+ $material_model->order_number = $data['order_number'];
|
|
|
|
+ $material_model->purchase_attribute = $data['purchase_attribute'];
|
|
$material_model->title = $data['title'];
|
|
$material_model->title = $data['title'];
|
|
$material_model->mark = $data['mark'] ?? "";
|
|
$material_model->mark = $data['mark'] ?? "";
|
|
$material_model->number = $data['number'];
|
|
$material_model->number = $data['number'];
|
|
@@ -100,9 +119,24 @@ class SportsBagService extends Service
|
|
DB::commit();
|
|
DB::commit();
|
|
}catch (\Throwable $e){
|
|
}catch (\Throwable $e){
|
|
DB::rollBack();
|
|
DB::rollBack();
|
|
|
|
+ if (str_contains($e->getMessage(), '1062') || str_contains($e->getMessage(), 'Duplicate entry')) {
|
|
|
|
+ return [false, '网络环境波动,请重新操作'];
|
|
|
|
+ }
|
|
return [false,$e->getMessage()];
|
|
return [false,$e->getMessage()];
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ (new OperationLogService())->setOperationList($data,$user);
|
|
|
|
+
|
|
|
|
+ if(! empty($data['check'])) {
|
|
|
|
+ list($status,$msg) = (new CheckService())->checkAll([
|
|
|
|
+ "id" => $material_model->id,
|
|
|
|
+ "order_number" => $data['order_number'],
|
|
|
|
+ "opt_case" => CheckService::twl,
|
|
|
|
+ "menu_id" => $data['menu_id']
|
|
|
|
+ ],$user);
|
|
|
|
+ if(! $status) return [true, '保存成功,活动包确认失败,异常信息:' . $msg];
|
|
|
|
+ }
|
|
|
|
+
|
|
return [true,''];
|
|
return [true,''];
|
|
}
|
|
}
|
|
|
|
|
|
@@ -114,6 +148,16 @@ class SportsBagService extends Service
|
|
->first();
|
|
->first();
|
|
if(empty($order)) return [false, '活动包不存在或已被删除'];
|
|
if(empty($order)) return [false, '活动包不存在或已被删除'];
|
|
$order = $order->toArray();
|
|
$order = $order->toArray();
|
|
|
|
+ $basic_type = BasicType::whereRaw("FIND_IN_SET(?, id)", [$order['purchase_attribute']])->pluck('title','id')->toArray();
|
|
|
|
+ $str = "";
|
|
|
|
+ if(! empty($basic_type)){
|
|
|
|
+ $purchase_attribute = explode(',',$order['purchase_attribute']);
|
|
|
|
+ foreach ($purchase_attribute as $value){
|
|
|
|
+ $str .= $basic_type[$value] . ',';
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ $order['purchase_attribute_title'] = $str;
|
|
|
|
+
|
|
$start_time = $order['start_time'] ? date("Y-m-d H:i",$order['start_time']) : '';
|
|
$start_time = $order['start_time'] ? date("Y-m-d H:i",$order['start_time']) : '';
|
|
$end_time = $order['end_time'] ? date("Y-m-d H:i",$order['end_time']) : '';
|
|
$end_time = $order['end_time'] ? date("Y-m-d H:i",$order['end_time']) : '';
|
|
$order['sports_bag_time'] = $start_time . '——' . $end_time;
|
|
$order['sports_bag_time'] = $start_time . '——' . $end_time;
|
|
@@ -135,6 +179,10 @@ class SportsBagService extends Service
|
|
|
|
|
|
$order['crt_name'] = Employee::where('id',$order['crt_id'])->value('emp_name');
|
|
$order['crt_name'] = Employee::where('id',$order['crt_id'])->value('emp_name');
|
|
$order['crt_time'] = $order['crt_time'] ? date("Y-m-d H:i:s",$order['crt_time']): '';
|
|
$order['crt_time'] = $order['crt_time'] ? date("Y-m-d H:i:s",$order['crt_time']): '';
|
|
|
|
+
|
|
|
|
+ $state_array = $this->getStateMake([$order]);
|
|
|
|
+ $order['state_title'] = $this->makeState($order,$state_array);
|
|
|
|
+
|
|
//可见范围
|
|
//可见范围
|
|
$return = (new RangeService())->RangeDetail($order['id'],SeeRange::type_eight);
|
|
$return = (new RangeService())->RangeDetail($order['id'],SeeRange::type_eight);
|
|
$order['depart'] = $return[0] ?? [];
|
|
$order['depart'] = $return[0] ?? [];
|
|
@@ -147,6 +195,7 @@ class SportsBagService extends Service
|
|
if($this->isEmpty($data,'id')) return [false,'请选择数据!'];
|
|
if($this->isEmpty($data,'id')) return [false,'请选择数据!'];
|
|
$order = SportsBag::where('del_time',0)->where('id',$data['id'])->first();
|
|
$order = SportsBag::where('del_time',0)->where('id',$data['id'])->first();
|
|
if(empty($order)) return [false,'活动包不存在或已被删除'];
|
|
if(empty($order)) return [false,'活动包不存在或已被删除'];
|
|
|
|
+ if($order['state'] > SportsBag::STATE_ZERO) return [false, '请确认活动包状态,删除失败!'];
|
|
|
|
|
|
try{
|
|
try{
|
|
DB::beginTransaction();
|
|
DB::beginTransaction();
|
|
@@ -170,9 +219,11 @@ class SportsBagService extends Service
|
|
public function getList($data,$user){
|
|
public function getList($data,$user){
|
|
$model = SportsBag::Clear($user,$data);
|
|
$model = SportsBag::Clear($user,$data);
|
|
$model = $model->where('del_time',0)
|
|
$model = $model->where('del_time',0)
|
|
- ->select('id','title','number','start_time','end_time','crt_time','crt_id','mark','total_amount')
|
|
|
|
|
|
+ ->select('id','title','number','start_time','end_time','crt_time','crt_id','mark','total_amount','state','order_number','purchase_attribute')
|
|
->orderby('id', 'desc');
|
|
->orderby('id', 'desc');
|
|
|
|
|
|
|
|
+ if(! empty($data['purchase_attribute'])) $model->whereRaw("FIND_IN_SET(?, purchase_attribute)", [$data['purchase_attribute']]);
|
|
|
|
+ if(isset($data['state'])) $model->where('state', $data['state']);
|
|
if(isset($data['valid'])) {
|
|
if(isset($data['valid'])) {
|
|
//获取有效时间内的活动包
|
|
//获取有效时间内的活动包
|
|
$time = time();
|
|
$time = time();
|
|
@@ -222,18 +273,53 @@ class SportsBagService extends Service
|
|
$product[$value['sports_bag_id']][] = $value;
|
|
$product[$value['sports_bag_id']][] = $value;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ //订单状态数据组织
|
|
|
|
+ $state_array = $this->getStateMake($data['data']);
|
|
|
|
+
|
|
foreach ($data['data'] as $key => $value){
|
|
foreach ($data['data'] as $key => $value){
|
|
$start_time = $value['start_time'] ? date("Y-m-d H:i",$value['start_time']) : '';
|
|
$start_time = $value['start_time'] ? date("Y-m-d H:i",$value['start_time']) : '';
|
|
$end_time = $value['end_time'] ? date("Y-m-d H:i",$value['end_time']) : '';
|
|
$end_time = $value['end_time'] ? date("Y-m-d H:i",$value['end_time']) : '';
|
|
$data['data'][$key]['sports_bag_time'] = $start_time . '——' . $end_time;
|
|
$data['data'][$key]['sports_bag_time'] = $start_time . '——' . $end_time;
|
|
$data['data'][$key]['crt_time'] = $value['crt_time'] ? date("Y-m-d H:i:s",$value['crt_time']) : '';
|
|
$data['data'][$key]['crt_time'] = $value['crt_time'] ? date("Y-m-d H:i:s",$value['crt_time']) : '';
|
|
$data['data'][$key]['crt_name'] = $emp_map[$value['crt_id']] ?? '';
|
|
$data['data'][$key]['crt_name'] = $emp_map[$value['crt_id']] ?? '';
|
|
|
|
+ $data['data'][$key]['state_title'] = $this->makeState($data['data'][$key], $state_array);
|
|
$data['data'][$key]['product'] = $product[$value['id']] ?? [];
|
|
$data['data'][$key]['product'] = $product[$value['id']] ?? [];
|
|
}
|
|
}
|
|
|
|
|
|
return $data;
|
|
return $data;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ public function makeState($value, $state_array){
|
|
|
|
+ if(! empty($state_array[$value['order_number']])){
|
|
|
|
+ $return = $state_array[$value['order_number']];
|
|
|
|
+ if($value['state'] == SportsBag::State_minus_one){
|
|
|
|
+ $state = "驳回:" . $return;
|
|
|
|
+ }else{
|
|
|
|
+ $state = "待" . $return . "审核";
|
|
|
|
+ }
|
|
|
|
+ }elseif($value['state'] == SportsBag::STATE_ZERO){
|
|
|
|
+ $state = "待" . $value['crt_name'] . "提交";
|
|
|
|
+ }else{
|
|
|
|
+ $state = SportsBag::$name[$value['state']] ?? '';
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return $state;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public function getStateMake($data){
|
|
|
|
+ if(empty($data)) return [];
|
|
|
|
+
|
|
|
|
+ $order_no = [];
|
|
|
|
+ foreach ($data as $value){
|
|
|
|
+ if(! in_array($value['state'], [SportsBag::State_minus_one,SportsBag::STATE_ONE])) continue;
|
|
|
|
+
|
|
|
|
+ $order_no[] = $value['order_number'];
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return (new OaService())->getOaTeamDetailList($order_no);
|
|
|
|
+ }
|
|
|
|
+
|
|
public function orderRule(&$data, $user, $is_check = true){
|
|
public function orderRule(&$data, $user, $is_check = true){
|
|
if(empty($data['title'])) return [false,'请填写活动名称'];
|
|
if(empty($data['title'])) return [false,'请填写活动名称'];
|
|
if(empty($data['sports_bag_time'][0]) || empty($data['sports_bag_time'][1])) return [false,'请填写活动时间范围'];
|
|
if(empty($data['sports_bag_time'][0]) || empty($data['sports_bag_time'][1])) return [false,'请填写活动时间范围'];
|
|
@@ -252,9 +338,14 @@ class SportsBagService extends Service
|
|
$data['top_depart_id'] = $user['depart_map'][$data['depart_id']] ?? 0;
|
|
$data['top_depart_id'] = $user['depart_map'][$data['depart_id']] ?? 0;
|
|
|
|
|
|
if($is_check){
|
|
if($is_check){
|
|
-
|
|
|
|
|
|
+ $order_number = (new OrderNoService())->createOrderNumber(SportsBag::prefix);
|
|
|
|
+ if(empty($order_number)) return [false,'活动包唯一单号生成失败!'];
|
|
|
|
+ $data['order_number'] = $order_number;
|
|
}else{
|
|
}else{
|
|
if($this->isEmpty($data,'id')) return [false,'活动包ID不能为空!'];
|
|
if($this->isEmpty($data,'id')) return [false,'活动包ID不能为空!'];
|
|
|
|
+ $purchase = SportsBag::where('del_time',0)->where('id',$data['id'])->first();
|
|
|
|
+ if(empty($purchase)) return [false, '活动包不存在或已被删除'];
|
|
|
|
+ if($purchase->state > SportsBag::STATE_ZERO) return [false,'请确认活动包状态,修改失败'];
|
|
}
|
|
}
|
|
|
|
|
|
return [true, ''];
|
|
return [true, ''];
|