|
|
@@ -2,6 +2,7 @@
|
|
|
|
|
|
namespace app\api\logic;
|
|
|
|
|
|
+use app\adminapi\service\DistributeLeafletsService;
|
|
|
use app\common\enum\GoodsEnum;
|
|
|
use app\common\enum\PayEnum;
|
|
|
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\goods\Goods;
|
|
|
use app\common\model\master_worker\MasterWorker;
|
|
|
+use app\common\model\master_worker\MasterWorkerRule;
|
|
|
use app\common\model\orders\RechargeOrder;
|
|
|
use app\common\model\recharge\OrderGoods;
|
|
|
use app\common\model\spare_part\SparePart;
|
|
|
@@ -28,6 +30,29 @@ use think\facade\Db;
|
|
|
*/
|
|
|
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
|
|
|
@@ -37,6 +62,10 @@ class ServiceOrderLogic extends BaseLogic
|
|
|
{
|
|
|
Db::startTrans();
|
|
|
try {
|
|
|
+ // 订单位置是否在服务区内
|
|
|
+ if(!self::isService($params)){
|
|
|
+ throw new Exception('已超出服务区域!');
|
|
|
+ }
|
|
|
$goods = Goods::findOrEmpty($params['goods_id']);
|
|
|
if($goods->isEmpty()){
|
|
|
throw new Exception('产品不存在!');
|