moonsflyer 8 місяців тому
батько
коміт
c345fd6c21

+ 54 - 6
app/adminapi/controller/agricultural_machinery/UserServiceController.php

@@ -20,6 +20,9 @@ use app\adminapi\lists\agricultural_machinery\UserServiceLists;
 use app\adminapi\logic\agricultural_machinery\AgriculturalMachineryServiceCategoryLogic;
 use app\adminapi\validate\agricultural_machinery\AgriculturalMachineryServiceCategoryValidate;
 use app\adminapi\validate\agricultural_machinery\UserServiceValidate;
+use app\adminapi\logic\agricultural_machinery\UserServiceLogic;
+use app\api\logic\ServiceLogic;
+use app\api\validate\ServiceValidate;
 
 /**
  * 社会服务管理控制器
@@ -46,16 +49,48 @@ class UserServiceController extends BaseAdminController
 
 
     /**
-     * @notes  添加资讯分类
+     * @notes  添加服务商信息
      * @return \think\response\Json
      * @author heshihu
      * @date 2022/2/21 17:31
      */
-    public function add()
+    public function addUserService()
     {
-        $params = (new AgriculturalMachineryServiceCategoryValidate())->post()->goCheck('add');
-        AgriculturalMachineryServiceCategoryLogic::add($params);
-        return $this->success('添加成功', [], 1, 1);
+        if($this->request->isPost()) {
+
+            $params = (new UserServiceValidate())->post()->goCheck('add');
+//            $userId = $this->userId;
+//            $params['user_id'] = $userId;
+            switch ($params['type']){
+                case 1 :
+                    $type_name = '农机手';
+                    break;
+                case 2 :
+                    $type_name = '烘干服务';
+                    break ;
+                case 3 :
+                    $type_name = '飞防服务';
+                    break;
+                default :
+                    $type_name = '';
+                    break;
+            }
+            $result = UserServiceLogic::add($params,$type_name);
+            if (1 === $result['code']) {
+                return $this->success($type_name.'入驻信息添加成功', $result['data'], 1, 1);
+            }else{
+                return $this->fail(UserServiceLogic::getError());
+            }
+
+
+        }else{
+            return $this->fail('请求方式错误');
+        }
+//
+//
+//        $params = (new UserServiceValidate())->post()->goCheck('add');
+//        UserServiceLogic::add($params);
+//        return $this->success('添加成功', [], 1, 1);
     }
 
 
@@ -137,7 +172,20 @@ class UserServiceController extends BaseAdminController
         return $this->data($result);
     }
 
-
+    /**
+     * @notes 获取会员列表
+     * @return \think\response\Json
+     * @throws \think\db\exception\DataNotFoundException
+     * @throws \think\db\exception\DbException
+     * @throws \think\db\exception\ModelNotFoundException
+     * @author 段誉
+     * @date 2022/10/13 10:54
+     */
+    public function getUserList()
+    {
+        $result = UserServiceLogic::getValidUserData();
+        return $this->data($result);
+    }
 
 
 }

+ 82 - 12
app/adminapi/logic/agricultural_machinery/UserServiceLogic.php

@@ -14,10 +14,16 @@
 
 namespace app\adminapi\logic\agricultural_machinery;
 
+use app\common\enum\PayEnum;
 use app\common\enum\YesNoEnum;
 use app\common\logic\BaseLogic;
+use app\common\model\agricultural_machinery\UserService;
 use app\common\model\article\ArticleCate;
+use app\common\model\user\User;
 use app\common\model\agricultural_machinery\ServiceCategory as AgriculturalMachineryServiceCategory;
+use app\common\model\recharge\RechargeOrder;
+use app\common\model\ServiceCharge;
+use think\facade\Db;
 
 /**
  * 服务管理逻辑
@@ -34,14 +40,78 @@ class UserServiceLogic extends BaseLogic
      * @author heshihu
      * @date 2022/2/18 10:17
      */
-    public static function add(array $params)
+    public static function add(array $params,$type_name)
     {
-        AgriculturalMachineryServiceCategory::create([
-            'name' => $params['name'],
-            'type' => $params['type'],
-            'status' => $params['status'] ?? 1,
-            'sort' => $params['sort'] ?? 0
-        ]);
+        Db::startTrans();
+        try {
+
+            $where['user_id'] = $params['user_id'];
+            $where['type'] = $params['type'];
+            $userService = UserService::where($where)->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'],
+                'cate_id' => ','.$params['cate_id'].',',
+                'area_id' => ','.$params['area_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();
+
+                $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'=>[]];
+        }
     }
 
 
@@ -110,7 +180,7 @@ class UserServiceLogic extends BaseLogic
 
 
     /**
-     * @notes 有效农耕分类数据
+     * @notes 有效用户数据
      * @return array
      * @throws \think\db\exception\DataNotFoundException
      * @throws \think\db\exception\DbException
@@ -118,12 +188,12 @@ class UserServiceLogic extends BaseLogic
      * @author 段誉
      * @date 2022/10/13 10:53
      */
-    public static function getValidCateData($get)
+    public static function getValidUserData()
     {
 
-        $list =  AgriculturalMachineryServiceCategory::where(['status' => YesNoEnum::YES,'type'=>$get['type']])
-            ->field('id,name')
-            ->order(['sort' => 'desc', 'id' => 'desc'])
+        $list =  User::where(['is_disable' => YesNoEnum::NO])
+            ->field('id,sn,nickname')
+            ->order([ 'id' => 'desc'])
             ->select()
             ->toArray();
         return $list;

+ 80 - 8
app/adminapi/validate/agricultural_machinery/UserServiceValidate.php

@@ -16,6 +16,9 @@ namespace app\adminapi\validate\agricultural_machinery;
 
 use app\common\validate\BaseValidate;
 use app\common\model\agricultural_machinery\ServiceCategory as AgriculturalMachineryServiceCategory;
+use app\common\model\agricultural_machinery\UserService;
+use app\common\model\user\User;
+use app\common\model\asset\AssetArea;
 
 /**
  * 服务管理验证
@@ -25,16 +28,24 @@ use app\common\model\agricultural_machinery\ServiceCategory as AgriculturalMachi
 class UserServiceValidate extends BaseValidate
 {
     protected $rule = [
-        'id' => 'require|checkMachineryCate',
+        'id' => 'require|checkUserServiceInfo',
+        'user_id' => 'require|checkUserInfo',
         'name' => 'require|length:1,60',
-        'status' => 'require|in:0,1',
+        'status' => 'requireIf:status,0|in:0,1',
         'sort' => 'egt:0',
         'type' =>'require|in:1,2,3',
         'pay_status' => 'requireIf:pay_status,true|in:1,-1',
+        'mobile' => 'require|mobile',
+        'cate_id'=>'require|checkCateCode',
+        'area_id'  => 'require|checkArea',
+        'images'=>'require',
+        'money' => 'require|float|egt:0',
+
     ];
 
     protected $message = [
-        'id.require' => ' 分类id不能为空1',
+        'id.require' => ' 分类id不能为空',
+        'user_id.require' => '请选择用户',
         'name.require' => '分类名称不能为空',
         'name.length' => '分类长度须在1-60位字符',
         'sort.egt' => '排序值不正确',
@@ -42,6 +53,14 @@ class UserServiceValidate extends BaseValidate
         'type.in' => '类型值type参数规则错误',
         'pay_status.requireIf' => '请选择支付状态',
         'pay_status.in' => '支付状态值错误',
+        'mobile.require' => '联系方式参数缺失',
+        'mobile.mobile' => '请填写正确的手机号',
+        'cate_id.require'  => '分类信息必传',
+        'images.require'                          => '请输入上传服务图片',
+        'area_id.require'  => '地区信息必传',
+        'money.require' =>'服务费用必传',
+        'money.float' =>'服务费参数错误',
+        'money.egt' =>'服务费参数规则错误',
     ];
 
     /**
@@ -64,7 +83,7 @@ class UserServiceValidate extends BaseValidate
     public function sceneAdd()
     {
         return $this->remove(['id'])
-            ->remove('id', 'require|checkMachineryCate');
+            ->remove('id', 'require|checkUserServiceInfo');
     }
 
     /**
@@ -118,22 +137,75 @@ class UserServiceValidate extends BaseValidate
         return $this->only(['id'])
             ->append('id', 'checkDeleteArticleCate');
     }
+    /**
+     * @notes 场景相关校验
+     * @param $scene
+     * @param $rule
+     * @param $data
+     * @return bool|string
+     * @author 段誉
+     * @date 2022/9/15 14:37
+     */
+    public function checkCateCode($scene, $rule, $data)
+    {
+        $cate_id_arr = explode(',',$data['cate_id']);
+        foreach($cate_id_arr as $v){
+            $info = AgriculturalMachineryServiceCategory::where(['id'=>$v,'type'=>$data['type']])->findOrEmpty();
+            if($info->isEmpty()){
+                return '传入的分类id:'.$v.'不存在!';
+            }
+        }
 
+        return true;
+    }
     /**
-     * @notes  检查指定农耕分类是否存在
+     * @notes 场景相关校验
+     * @param $scene
+     * @param $rule
+     * @param $data
+     * @return bool|string
+     * @author 段誉
+     * @date 2022/9/15 14:37
+     */
+
+
+    public function checkArea($scene, $rule, $data)
+    {
+
+        $area_id_arr = explode(',',$data['area_id']);
+        foreach($area_id_arr as $v){
+            $info = AssetArea::where(['id'=>$v,'status'=>1])->findOrEmpty();
+            if($info->isEmpty()){
+                return '传入的地区id:'.$v.'不存在!';
+            }
+        }
+        return true;
+    }
+
+    /**
+     * @notes  检查指定服务信息是否存在
      * @param $value
      * @return bool|string
      * @author heshihu
      * @date 2022/2/10 15:10
      */
-    public function checkMachineryCate($value)
+    public function checkUserServiceInfo($value)
     {
-        $category = AgriculturalMachineryServiceCategory::findOrEmpty($value);
+        $category = UserService::findOrEmpty($value);
         if ($category->isEmpty()) {
-            return '农耕分类不存在';
+            return '服务信息不存在';
         }
         return true;
     }
+    public function checkUserInfo($value,$data)
+    {
+        $category = User::findOrEmpty($value);
+        if ($category->isEmpty()) {
+            return '用户信息不存在';
+        }
+
+        return true;
+    }
 
     /**
      * @notes  删除时验证农耕分类是否已使用