Browse Source

Merge branch 'jiedan_start-dev'

liugc 1 năm trước cách đây
mục cha
commit
f9ef492fc4

+ 2 - 2
app/adminapi/lists/master_worker/MasterWorkerLists.php

@@ -43,7 +43,7 @@ class MasterWorkerLists extends BaseAdminDataLists implements ListsSearchInterfa
     public function setSearch(): array
     public function setSearch(): array
     {
     {
         return [
         return [
-            '=' => ['mw.sn', 'mw.real_name', 'mw.account', 'mw.password', 'mw.mobile', 'mw.sex', 'mw.channel', 'mw.is_disable', 'mw.is_new_user', 'mw.create_time', 'mw.update_time'],
+            '=' => ['mw.sn', 'mw.real_name', 'mw.account', 'mw.password', 'mw.mobile', 'mw.sex', 'mw.channel', 'mw.is_disable', 'mw.is_new_user', 'mw.create_time', 'mw.update_time', 'mw.accept_order_status'],
 
 
         ];
         ];
     }
     }
@@ -102,7 +102,7 @@ class MasterWorkerLists extends BaseAdminDataLists implements ListsSearchInterfa
             ->order(['mw.id' => 'desc'])
             ->order(['mw.id' => 'desc'])
             ->select()
             ->select()
             ->toArray();
             ->toArray();
-        $distances = DistributeLeafletsService::locationIds($this->lon, $this->lat,0,array_keys(array_column($list, 'distance','id')));
+        $list && $distances = DistributeLeafletsService::locationIds($this->lon, $this->lat,0,array_keys(array_column($list, 'distance','id')));
         foreach ($list as &$item){
         foreach ($list as &$item){
             $item['user_distance'] = $distances[$item['id']]??0;
             $item['user_distance'] = $distances[$item['id']]??0;
         }
         }

+ 2 - 2
app/adminapi/lists/master_worker/MasterWorkerRuleLists.php

@@ -38,7 +38,7 @@ class MasterWorkerRuleLists extends BaseAdminDataLists implements ListsSearchInt
     public function setSearch(): array
     public function setSearch(): array
     {
     {
         return [
         return [
-            '=' => ['rule_name', 'description', 'sort'],
+            '=' => ['rule_name', 'description', 'sort','scene_id'],
 
 
         ];
         ];
     }
     }
@@ -56,7 +56,7 @@ class MasterWorkerRuleLists extends BaseAdminDataLists implements ListsSearchInt
     public function lists(): array
     public function lists(): array
     {
     {
         return MasterWorkerRule::where($this->searchWhere)
         return MasterWorkerRule::where($this->searchWhere)
-            ->field(['id', 'rule_name', 'description', 'sort'])
+            ->field(['id', 'rule_name', 'description', 'sort','scene_id'])
             ->limit($this->limitOffset, $this->limitLength)
             ->limit($this->limitOffset, $this->limitLength)
             ->order(['id' => 'desc'])
             ->order(['id' => 'desc'])
             ->select()
             ->select()

+ 2 - 0
app/adminapi/logic/master_worker/MasterWorkerRuleLogic.php

@@ -44,6 +44,7 @@ class MasterWorkerRuleLogic extends BaseLogic
                 'rule_name' => $params['rule_name'],
                 'rule_name' => $params['rule_name'],
                 'description' => $params['description'],
                 'description' => $params['description'],
                 'sort' => $params['sort'],
                 'sort' => $params['sort'],
+                'scene_id' => $params['scene_id'],
             ]);
             ]);
 
 
             Db::commit();
             Db::commit();
@@ -71,6 +72,7 @@ class MasterWorkerRuleLogic extends BaseLogic
                 'rule_name' => $params['rule_name'],
                 'rule_name' => $params['rule_name'],
                 'description' => $params['description'],
                 'description' => $params['description'],
                 'sort' => $params['sort'],
                 'sort' => $params['sort'],
+                'scene_id' => $params['scene_id'],
             ]);
             ]);
 
 
             Db::commit();
             Db::commit();

+ 3 - 3
app/adminapi/logic/notice/NoticeLogic.php

@@ -67,7 +67,7 @@ class NoticeLogic extends BaseLogic
                 'status' => 0,
                 'status' => 0,
             ];
             ];
         }
         }
-        $noticeSetting['oa_notice']['tips'] = NoticeEnum::getOperationTips(NoticeEnum::MNP, $noticeSetting['scene_id']);
+        $noticeSetting['oa_notice']['tips'] = NoticeEnum::getOperationTips(NoticeEnum::OA, $noticeSetting['scene_id']);
         if (empty($noticeSetting['mnp_notice'])) {
         if (empty($noticeSetting['mnp_notice'])) {
             $noticeSetting['mnp_notice'] = [
             $noticeSetting['mnp_notice'] = [
                 'template_id' => '',
                 'template_id' => '',
@@ -99,11 +99,11 @@ class NoticeLogic extends BaseLogic
     {
     {
         try {
         try {
             // 校验参数
             // 校验参数
-            self::checkSet($params);
+            //self::checkSet($params);
             // 拼装更新数据
             // 拼装更新数据
             $updateData = [];
             $updateData = [];
             foreach ($params['template'] as $item) {
             foreach ($params['template'] as $item) {
-                $updateData[$item['type'] . '_notice'] = json_encode($item, JSON_UNESCAPED_UNICODE);
+                $item['type']??0 && $updateData[$item['type'] . '_notice'] = json_encode($item, JSON_UNESCAPED_UNICODE);
             }
             }
             // 更新通知设置
             // 更新通知设置
             NoticeSetting::where('id', $params['id'])->update($updateData);
             NoticeSetting::where('id', $params['id'])->update($updateData);

+ 2 - 2
app/adminapi/service/DistributeLeafletsService.php

@@ -75,7 +75,7 @@ class DistributeLeafletsService
         $result=array_intersect($mergeIds,$intersectIds);
         $result=array_intersect($mergeIds,$intersectIds);
         return array_values($result);
         return array_values($result);
     }
     }
-    private static function mastersDistance($masters,$customer_lon,$customer_lat,$radius = 0)
+    public static function mastersDistance($masters,$customer_lon,$customer_lat,$radius = 0)
     {
     {
         $masters = array_column($masters, null, 'id');
         $masters = array_column($masters, null, 'id');
         $nearbyMasters = [];
         $nearbyMasters = [];
@@ -90,7 +90,7 @@ class DistributeLeafletsService
         asort($nearbyMasters);
         asort($nearbyMasters);
         return $nearbyMasters;
         return $nearbyMasters;
     }
     }
-    private static function haversineDistance($lat1, $lon1, $lat2, $lon2) {
+    public static function haversineDistance($lat1, $lon1, $lat2, $lon2) {
         $lat1 = deg2rad($lat1);
         $lat1 = deg2rad($lat1);
         $lon1 = deg2rad($lon1);
         $lon1 = deg2rad($lon1);
         $lat2 = deg2rad($lat2);
         $lat2 = deg2rad($lat2);

+ 16 - 0
app/api/controller/ServiceOrderController.php

@@ -188,4 +188,20 @@ class ServiceOrderController extends BaseApiController
         }
         }
         return $this->success('保存成功', [], 1, 1);
         return $this->success('保存成功', [], 1, 1);
     }
     }
+
+    public function isServiceWithin()
+    {
+        $params = (new ServiceOrderValidate())->get()->goCheck('LonLat', [
+            'user_id' => $this->userId,
+            'user_info' => $this->userInfo
+        ]);
+        $result = ServiceOrderLogic::isService($params);
+        if (false === $result) {
+            return $this->fail(ServiceOrderLogic::getError(),['is_service'=>0]);
+        }
+        return $this->success('服务区域内', ['is_service'=>1], 1, 1);
+    }
+
+
+
 }
 }

+ 29 - 0
app/api/logic/ServiceOrderLogic.php

@@ -2,6 +2,7 @@
 
 
 namespace app\api\logic;
 namespace app\api\logic;
 
 
+use app\adminapi\service\DistributeLeafletsService;
 use app\common\enum\GoodsEnum;
 use app\common\enum\GoodsEnum;
 use app\common\enum\PayEnum;
 use app\common\enum\PayEnum;
 use app\common\enum\WorkEnum;
 use app\common\enum\WorkEnum;
@@ -11,6 +12,7 @@ use app\common\model\coupon\UserCoupon;
 use app\common\model\dict\DictData;
 use app\common\model\dict\DictData;
 use app\common\model\goods\Goods;
 use app\common\model\goods\Goods;
 use app\common\model\master_worker\MasterWorker;
 use app\common\model\master_worker\MasterWorker;
+use app\common\model\master_worker\MasterWorkerRule;
 use app\common\model\orders\RechargeOrder;
 use app\common\model\orders\RechargeOrder;
 use app\common\model\recharge\OrderGoods;
 use app\common\model\recharge\OrderGoods;
 use app\common\model\refund\RefundRecord;
 use app\common\model\refund\RefundRecord;
@@ -29,6 +31,29 @@ use think\facade\Db;
  */
  */
 class ServiceOrderLogic extends BaseLogic
 class ServiceOrderLogic extends BaseLogic
 {
 {
+
+    /**
+     * 判断是否在某服务区
+     * @param $params
+     * @return bool
+     */
+    public static function isService($params)
+    {
+        // 查询服务区所有的地点
+        $rules = MasterWorkerRule::where('scene_id',MasterWorkerRule::SCENE_SERVICE)->column('description','id');
+        //$masters = [];
+        foreach ($rules as $key=>$value){
+            $rule = explode(',',$value);
+            //$masters[] = ['id'=>$key,'lon'=>$rule[0],'lat'=>$rule[1],'radius'=>$rule[2]];
+            $distance = DistributeLeafletsService::haversineDistance($params['lat'], $params['lon'], $rule[1], $rule[0]);
+            if($distance <= $value[2]){
+                return true;
+            }
+        }
+        self::setError('已超出服务区域!');
+        return false;
+    }
+
     /**
     /**
      * 提交订单
      * 提交订单
      * @param array $params
      * @param array $params
@@ -38,6 +63,10 @@ class ServiceOrderLogic extends BaseLogic
     {
     {
         Db::startTrans();
         Db::startTrans();
         try {
         try {
+            // 订单位置是否在服务区内
+            if(!self::isService($params)){
+                throw new Exception('已超出服务区域!');
+            }
             $goods = Goods::findOrEmpty($params['goods_id']);
             $goods = Goods::findOrEmpty($params['goods_id']);
             if($goods->isEmpty()){
             if($goods->isEmpty()){
                 throw new Exception('产品不存在!');
                 throw new Exception('产品不存在!');

+ 10 - 1
app/api/validate/ServiceOrderValidate.php

@@ -21,7 +21,9 @@ class ServiceOrderValidate extends BaseValidate
         'pay_way' => 'require',
         'pay_way' => 'require',
         'goods_id' => 'require',
         'goods_id' => 'require',
         'contact_number' => 'require',
         'contact_number' => 'require',
-        'contact_people' => 'require'
+        'contact_people' => 'require',
+        'lon' => 'require',
+        'lat' => 'require',
     ];
     ];
 
 
 
 
@@ -35,6 +37,8 @@ class ServiceOrderValidate extends BaseValidate
         'goods_id.require' => '订单商品不存在',
         'goods_id.require' => '订单商品不存在',
         'contact_number.require' => '联系电话不存在',
         'contact_number.require' => '联系电话不存在',
         'contact_people.require' => '联系人不存在',
         'contact_people.require' => '联系人不存在',
+        'lon.require' => '经度不存在',
+        'lat.require' => '纬度不存在',
     ];
     ];
 
 
 
 
@@ -94,4 +98,9 @@ class ServiceOrderValidate extends BaseValidate
     {
     {
         return $this->only(['sn']);
         return $this->only(['sn']);
     }
     }
+    public function sceneLonLat()
+    {
+        return $this->only(['lon','lat']);
+    }
+
 }
 }

+ 2 - 1
app/common/enum/notice/NoticeEnum.php

@@ -39,7 +39,7 @@ class NoticeEnum
     const OTHER_CAPTCHA = 105;
     const OTHER_CAPTCHA = 105;
     const GCSSJHM_CAPTCHA =106;
     const GCSSJHM_CAPTCHA =106;
     const ACCOUNT_PASSWORD =107;
     const ACCOUNT_PASSWORD =107;
-
+    const WORKER_EXAMINE =108;
 
 
     /**
     /**
      * 验证码场景
      * 验证码场景
@@ -52,6 +52,7 @@ class NoticeEnum
         self::OTHER_CAPTCHA,
         self::OTHER_CAPTCHA,
         self::GCSSJHM_CAPTCHA,
         self::GCSSJHM_CAPTCHA,
         self::ACCOUNT_PASSWORD,
         self::ACCOUNT_PASSWORD,
+        self::WORKER_EXAMINE,
     ];
     ];
 
 
 
 

+ 5 - 1
app/common/model/master_worker/MasterWorkerRule.php

@@ -26,7 +26,11 @@ use app\common\model\BaseModel;
  */
  */
 class MasterWorkerRule extends BaseModel
 class MasterWorkerRule extends BaseModel
 {
 {
-    
+
+    const SCENE_PROTECTION = 101;//保障期
+    const SCENE_AVAILABLE_GOLD = 102;//可用金限制
+    const SCENE_SERVICE = 103;//服务区规则
+
     protected $name = 'master_worker_rule';
     protected $name = 'master_worker_rule';
     
     
 
 

+ 0 - 1
app/common/service/wechat/WeChatOaService.php

@@ -209,7 +209,6 @@ class WeChatOaService
             // 替换通知模板参数
             // 替换通知模板参数
             $content = $this->contentFormat($noticeSetting, $params);
             $content = $this->contentFormat($noticeSetting, $params);
             // 添加通知记录
             // 添加通知记录
-            $params['user_id'] = $params['worker_id'];
             $this->notice = NoticeLogic::addNotice($params, $noticeSetting, NoticeEnum::OA, $content);
             $this->notice = NoticeLogic::addNotice($params, $noticeSetting, NoticeEnum::OA, $content);
             // 发送
             // 发送
             $result = $this->app->getClient()->postJson('cgi-bin/message/template/send', [
             $result = $this->app->getClient()->postJson('cgi-bin/message/template/send', [

+ 36 - 1
app/workerapi/controller/LoginController.php

@@ -14,7 +14,10 @@
 
 
 namespace app\workerapi\controller;
 namespace app\workerapi\controller;
 
 
+use app\common\enum\notice\NoticeEnum;
 use app\common\model\master_worker\MasterWorker;
 use app\common\model\master_worker\MasterWorker;
+use app\common\model\notice\NoticeSetting;
+use app\common\service\wechat\WeChatOaService;
 use app\workerapi\logic\LoginLogic;
 use app\workerapi\logic\LoginLogic;
 use app\workerapi\validate\LoginAccountValidate;
 use app\workerapi\validate\LoginAccountValidate;
 use app\workerapi\validate\RegisterValidate;
 use app\workerapi\validate\RegisterValidate;
@@ -28,7 +31,7 @@ use app\workerapi\validate\RegisterValidate;
 class LoginController extends BaseApiController
 class LoginController extends BaseApiController
 {
 {
 
 
-    public array $notNeedLogin = ['register', 'account', 'logout'];
+    public array $notNeedLogin = ['register', 'account', 'logout','testWeChat'];
 
 
 
 
     /**
     /**
@@ -46,6 +49,17 @@ class LoginController extends BaseApiController
         }
         }
         $result = LoginLogic::register($params);
         $result = LoginLogic::register($params);
         if (true === $result) {
         if (true === $result) {
+            // 发送通知给平台配置的审核人
+            $noticeSetting = NoticeSetting::where('scene_id', NoticeEnum::WORKER_EXAMINE)->findOrEmpty()->toArray();
+            if($noticeSetting['oa_notice']['designated_user']??0 && $noticeSetting['oa_notice']['designated_user']){
+                event('Notice',  [
+                    'scene_id' => NoticeEnum::WORKER_EXAMINE,
+                    'params' => [
+                        'user_id' => 0,
+                        'openid' => $noticeSetting['oa_notice']['designated_user'],
+                    ]
+                ]);
+            }
             return $this->success('注册成功', [], 1, 1);
             return $this->success('注册成功', [], 1, 1);
         }
         }
         return $this->fail(LoginLogic::getError());
         return $this->fail(LoginLogic::getError());
@@ -91,5 +105,26 @@ class LoginController extends BaseApiController
         LoginLogic::logout($this->userInfo);
         LoginLogic::logout($this->userInfo);
         return $this->success();
         return $this->success();
     }
     }
+    public function testWeChat()
+    {
+        // 发送通知给平台配置的审核人
+        $noticeSetting = NoticeSetting::where('scene_id', NoticeEnum::WORKER_EXAMINE)->findOrEmpty()->toArray();
+        if($noticeSetting['oa_notice']['designated_user']??0 && $noticeSetting['oa_notice']['designated_user']){
 
 
+            (new WeChatOaService())->sendTemplateMessage([
+                'scene_id' => NoticeEnum::WORKER_EXAMINE,
+                'params' => [
+                    'user_id' => 0,
+                    'openid' => $noticeSetting['oa_notice']['designated_user'],
+                ]
+            ]);
+            /*event('Notice',  [
+                'scene_id' => NoticeEnum::WORKER_EXAMINE,
+                'params' => [
+                    'user_id' => 0,
+                    'openid' => $noticeSetting['oa_notice']['designated_user'],
+                ]
+            ]);*/
+        }
+    }
 }
 }