| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 |
- <?php
- namespace app\common\logic;
- use app\common\model\external\ExternalPlatform;
- use app\common\model\recharge\RechargeOrder;
- use app\common\model\works\ServiceWork;
- use think\facade\Log;
- class ExternalPlatformLogic extends BaseLogic
- {
- /**
- * @notes 根据场景执行任务
- */
- public static function handleByScene($params)
- {
- try {
- switch ($params['scene']){
- case 'cancel_order':
- //self::cancelOrder($params['params']);
- break;
- case 'confirm_price':
- self::confirmPrice($params['params']);
- break;
- case 'service_finish':
- self::serviceFinish($params['params']);
- break;
- default:
- throw new \Exception('场景不存在');
- }
- return true;
- } catch (\Exception $e) {
- Log::info('ExternalPlatform-error:'.$e->getMessage());
- self::setError($e->getMessage());
- return false;
- }
- }
- // 工程师报价通知
- private static function confirmPrice($params)
- {
- try {
- $work = ServiceWork::where(['id'=>$params['work_id']])->findOrEmpty();
- if($work->isEmpty()){
- throw new \Exception('工单不存在');
- }
- if($work->external_platform_id > 0){
- $externalPlatform = ExternalPlatform::find($work->external_platform_id);
- $order_amount = RechargeOrder::where([
- 'user_id'=>$work->user_id,
- 'work_id'=>$params['work_id'],
- 'pay_status'=>0,
- 'payment_type'=>2
- ])->value('order_amount');
- $data = [
- 'timestamp'=>time(),
- 'scene'=>'confirm_price',
- 'version'=>'1',
- 'notice_data'=>json_encode([
- 'work_sn'=>$work->work_sn,
- 'order_amount'=>$order_amount * 100, // 单位分
- ],JSON_UNESCAPED_UNICODE)
- ];
- $data['sign'] = ExternalPlatform::getSign($externalPlatform['appkey'],$data);
- if($externalPlatform['send_url']){
- $res = http_request($externalPlatform['send_url'],http_build_query($data));
- }else{
- $res = '未配置接口地址';
- }
- Log::info('ExternalPlatform-confirmPrice:'
- .'url:'.$externalPlatform['send_url']
- .'|data:'.json_encode($data,JSON_UNESCAPED_UNICODE)
- .'|res:'.json_encode([$res],JSON_UNESCAPED_UNICODE)
- );
- }
- return true;
- } catch (\Exception $e) {
- throw new \Exception($e->getMessage());
- }
- }
- // 工程师服务完成通知
- private static function serviceFinish($params)
- {
- try {
- $work = ServiceWork::where(['id'=>$params['work_id']])->findOrEmpty();
- if($work->isEmpty()){
- throw new \Exception('工单不存在');
- }
- if($work->external_platform_id > 0){
- $externalPlatform = ExternalPlatform::find($work->external_platform_id);
- $data = [
- 'timestamp'=>time(),
- 'scene'=>'service_finish',
- 'version'=>'1',
- 'notice_data'=>json_encode([
- 'work_sn'=>$work->work_sn
- ],JSON_UNESCAPED_UNICODE)
- ];
- $data['sign'] = ExternalPlatform::getSign($externalPlatform['appkey'],$data);
- if($externalPlatform['send_url']){
- $res = http_request($externalPlatform['send_url'],http_build_query($data));
- }else{
- $res = '未配置接口地址';
- }
- Log::info('ExternalPlatform-serviceFinish:'
- .'url:'.$externalPlatform['send_url']
- .'|data:'.json_encode($data,JSON_UNESCAPED_UNICODE)
- .'|res:'.json_encode([$res],JSON_UNESCAPED_UNICODE)
- );
- }
- return true;
- } catch (\Exception $e) {
- throw new \Exception($e->getMessage());
- }
- }
- }
|