findOrEmpty(); // // if(!$userService->isEmpty()){ // Db::rollback(); // self::setError('当前用户存在'.$type_name.'服务信息,无需添加'); // return ['code'=>0,'data'=>[]]; // } $result = UserService::create([ 'user_id' => $params['user_id'], 'type' => $params['type'] ?? 1, 'name' => $params['name'], 'mobile' => $params['mobile'], 'agricultural_machinery_model' =>$params['agricultural_machinery_model'], 'images' => $params['images'], 'agricultural_image'=>$params['agricultural_image'], 'driver_image'=>$params['driver_image'], 'driving_image'=>$params['driving_image'], 'cate_id' => ','.$params['cate_id'].',', 'area_id' => ','.$params['area_id'].',', 'mechanical_cate_id' => ','.$params['mechanical_cate_id'].',', 'money' => $params['money'], 'content'=>$params['content']?? '', 'order_id'=>0, ]); if($result){ $service_fee = ServiceCharge::find(1); $order_money = 0; switch ($params['type']){ case 1 : $order_money =$service_fee['agricultural_machinery_service_fee']; break; case 2 : $order_money =$service_fee['bake_service_fee']; break; case 3 : $order_money =$service_fee['air_control_service_fee']; break; } $data = [ 'sn' => generate_sn(RechargeOrder::class, 'sn'), 'user_id' => $params['user_id'], 'pay_way'=> 4, 'pay_time'=>time(), 'service_id'=>$result['id'], 'pay_status' => PayEnum::ISPAID, 'order_amount' => $order_money, ]; $order = RechargeOrder::create($data); $user_service_info = UserService::find($result['id']); $user_service_info->order_id = $order['id']; $user_service_info->status = 1; $user_service_info->expiration_time = time()+365*24*60*60; $user_service_info->save(); $updateWhereDate['id'] = $result['id']; $updateDate['audit_status'] = 1; $updateDate['audit_time'] = time(); $ret = UserService::where($updateWhereDate)->update($updateDate); $order_info = [ 'order_id' => (int)$order['id'], 'order_sn' => $order['sn'], 'from' => 'service', 'result'=>$result ]; } Db::commit(); return ['code'=>1,'data'=>$order_info]; } catch (\Exception $e) { Db::rollback(); self::setError($e->getMessage()); return ['code'=>0,'data'=>[]]; } } /** * @notes 删除农耕分类 * @param array $params * @author heshihu * @date 2022/2/21 17:52 */ public static function delete(array $params) { UserService::destroy($params['id']); } /** * @notes 查看服务商详情 * @param $params * @return array * @author heshihu * @date 2022/2/21 17:54 */ public static function detail($params) : array { return UserService::findOrEmpty($params['id'])->append(['status_desc','type_desc','cate_desc','area_desc','user','mechanical_cate_desc'])->toArray(); } /** * @notes 更改服务商状态 * @param array $params * @return bool * @author heshihu * @date 2022/2/21 18:04 */ public static function updateStatus(array $params) { UserService::update([ 'id' => $params['id'], 'status' => $params['status'] ]); return true; } /** * @notes 服务商审核状态 * @param array $params * @return bool * @author heshihu * @date 2022/2/21 18:04 */ public static function auditUserService(array $params) { Db::startTrans(); try { $user_service_info = UserService::find( $params['id']); if(empty($user_service_info)){ Db::rollback(); self::setError('传入的服务信息错误!'); return false; } if($user_service_info['status']<>1){ Db::rollback(); self::setError('当前服务已过期或者未支付,无法审核!'); return false; } $updateDate['id'] = $params['id']; $updateDate['audit_status'] = $params['audit_status']; $updateDate['audit_time'] = time(); if ($params['audit_status'] == 2) { $updateDate['remark'] = $params['remark']; } $ret = UserService::update($updateDate); if(!$ret){ Db::rollback(); self::setError('审核信息更新失败'); return false; } switch ($params['audit_status']){ case 1: $audit_status = 4; break; case 2: $audit_status = 5; break; } $order_id = $user_service_info['order_id']; switch ($user_service_info['type']){ case 1: $useWhere['agricultural_id'] = $order_id; $useData['agricultural_status'] = $audit_status; break; case 2: $useWhere['bake_id'] = $order_id; $useData['bake_status'] = $audit_status; break; case 3: $useWhere['air_id'] = $order_id; $useData['air_status'] = $audit_status; break; } $updateRet = User::where($useWhere)->findOrEmpty(); if(!$updateRet->isEmpty()){ $ret = User::where($useWhere)->update($useData); if(!$ret){ Db::rollback(); self::setError('更新用户信息失败'); return false; } } if ($params['audit_status'] == 2) { //退款 $refund_data['recharge_id'] = $order_id; RechargeLogic::refund($refund_data, $params['user_id']); } Db::commit(); return true; } catch (\Exception $e) { Db::rollback(); self::setError($e->getMessage()); return false; } } /** * @notes 有效用户数据 * @return array * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\DbException * @throws \think\db\exception\ModelNotFoundException * @author 段誉 * @date 2022/10/13 10:53 */ public static function getValidUserData() { $list = User::where(['is_disable' => YesNoEnum::NO]) ->field('id,sn,nickname,account') ->order([ 'id' => 'desc']) ->select() ->toArray(); return $list; } public static function getServiceContent(){ $info = ServiceCharge::field('agricultural_service,bake_service,air_service')->find(1)->toArray(); return $info; } public static function saveServiceContent($post){ if(isset($post['agricultural_service']) && !empty($post['agricultural_service'])){ $saveData['agricultural_service'] = $post['agricultural_service']; } if(isset($post['bake_service']) && !empty($post['bake_service'])){ $saveData['bake_service'] = $post['bake_service']; } if(isset($post['air_service']) && !empty($post['air_service'])){ $saveData['air_service'] = $post['air_service']; } $saveData['id'] = 1; ServiceCharge::update($saveData); return true; } public static function getServiceDisclaimer(){ $data['disclaimer'] = ConfigService::get('website', 'disclaimer'); return $data; } public static function saveServiceDisclaimer($post){ ConfigService::set('website','disclaimer', $post['disclaimer'] ?? ''); return true; } public static function getServiceList(){ // //农资供应 $sdswhere = []; $sdswhere[]=['sdi.status','=',2]; $sdswhere[]=['sdi.type','=',1]; $SupplyInfo = SupplyDemandInfo::alias('sdi') ->leftJoin('supply_demand_cate sdc','sdi.cate_id = sdc.id')->field('sdi.cate_id,sdc.name,sum(number) total_num')->where($sdswhere)->group('cate_id')->select()->toArray(); $cate_name_arr = array_column($SupplyInfo,'name'); $value_arr = array_column($SupplyInfo,'total_num'); $middle['cate_name'] = $cate_name_arr; $middle['cate_value'] = $value_arr; $uswhere = []; $uswhere[]=['status','=',1]; $UserServiceInfo = UserService::field('type,count(id) total_num')->where($uswhere)->group('type')->order('type asc')->select()->toArray(); $type_arr =[1,2,3]; $utype_arr = array_column($UserServiceInfo,'type'); $user_service_value = []; foreach($type_arr as $tv){ $data=[]; if(in_array($tv,$utype_arr)){ foreach($UserServiceInfo as $usv){ if($tv == $usv['type']){ $data['value'] = $usv['total_num']; } } }else{ $data['value'] = 0; } switch ($tv){ case 1: $type_name = '农机服务'; break; case 2: $type_name = '烘干服务'; break; case 3: $type_name = '飞防服务'; break; } $data['name'] = $type_name; $user_service_value[]=$data; } $middle['user_service_value'] = $user_service_value; // $sdswhere = []; $sdswhere[]=['sdi.status','=',2]; $sdswhere[]=['sdi.type','=',1]; $nowYear = date('Y'); $nowMonth = date('n'); $date_arr = getMonthFirstAndLastDay($nowYear,$nowMonth); $lastDate = $date_arr['lastDay']; $firstDate = $date_arr['firstDay']; $sdswhere[]=['sdi.create_time','between',[strtotime($firstDate),strtotime($lastDate.' 23:59:59')]]; $SupplyInfo = SupplyDemandInfo::alias('sdi') ->leftJoin('supply_demand_cate sdc','sdi.cate_id = sdc.id')->field('sdi.cate_id,sdc.name,sum(number) total_num') ->where($sdswhere)->group('cate_id')->order('total_num desc')->limit(6)->select()->toArray(); $cate_name_arr = array_column($SupplyInfo,'name'); $value_arr = array_column($SupplyInfo,'total_num'); $cate_id_arr = array_column($SupplyInfo,'cate_id'); foreach($SupplyInfo as &$siv){ unset($siv['cate_id']); $siv['value'] = $siv['total_num']; unset($siv['total_num']); } $cwhere=[]; $cwhere[]=['id','in',$cate_id_arr]; $cateList = SupplyDemandCate::where($cwhere)->field('id,pid')->select()->toArray(); $pcate_arr = array_column($cateList,'pid'); $pcate_arr = array_unique($pcate_arr); $pwhere=[]; $pwhere[]=['id','in',$pcate_arr]; $pcateList = SupplyDemandCate::where($pwhere)->field('id,name')->select()->toArray(); // $first_cate_name = []; // if($pcateList){ // $first_cate_name =array_column($pcateList,'name'); // } $middle['SupplyDemandInfo'] = $SupplyInfo; $middle['supply_cate_name'] = $cate_name_arr; $middle['supply_cate_value'] = $value_arr; $middle['supply_first_cate_name'] = $pcateList; $monthData = []; $monthArr = []; for ($i = 1; $i <= $nowMonth; $i++) { array_push($monthArr, $i); } $middle['monthData'] = $monthArr; $agricultural_data=[]; $bake_data=[]; $air_data=[]; foreach($monthArr as $mtv){ $date_arrs = getMonthFirstAndLastDay($nowYear,$mtv); $lastDate = $date_arrs['lastDay']; $firstDate = $date_arrs['firstDay']; $logwhere=[]; $logwhere[]=['create_time','between',[strtotime($firstDate),strtotime($lastDate.' 23:59:59')]]; $ser_scan_log=[]; $ser_scan_log = ServiceScanLog::where($logwhere)->field('type,count(id) total_num')->group('type')->select()->toArray(); if(!empty($ser_scan_log)){ foreach($ser_scan_log as $sslv){ switch ($sslv['type']){ case 1: array_push($agricultural_data, $sslv['total_num']); break; case 2: array_push($bake_data, $sslv['total_num']); break; case 3: array_push($air_data, $sslv['total_num']); break; } } }else{ array_push($agricultural_data, 0); array_push($bake_data, 0); array_push($air_data, 0); } } $middle['agricultural_data'] = $agricultural_data; $middle['bake_data'] = $bake_data; $middle['air_data'] = $air_data; return $middle; } public static function addMechanicalCate(array $params) { MechanicalCate::create([ 'type' => $params['type'], 'name' => $params['name'], 'sort' => $params['sort'] ?? 0 ]); } public static function cate_detail($params) : array { return MechanicalCate::findOrEmpty($params['id'])->toArray(); } public static function editCate(array $params) : bool { try { MechanicalCate::update([ 'id' => $params['id'], 'name' => $params['name'], 'sort' => $params['sort'] ?? 0 ]); return true; } catch (\Exception $e) { self::setError($e->getMessage()); return false; } } public static function deleteCate(array $params) { MechanicalCate::destroy($params['id']); } }