model = new LandList(); $this->cate_model = new LandCate(); } /** * @author chenniang * @DataTime: 2021-12-14 17:42 * @功能说明:认养分类列表 */ public function landCateList(){ $input = $this->_param; $cate_model = new LandCate(); $dis = [ 'type' => 1, 'uniacid' => $this->_uniacid, 'status' => 1, ]; $data = $cate_model->where($dis)->order('top desc,id desc')->select()->toArray(); return $this->success($data); } // /** // * @author chenniang // * @DataTime: 2021-12-14 17:53 // * @功能说明:土地列表 // */ // public function landList(){ // // $input = $this->_param; // // $input['sort'] = !empty($input['sort'])?$input['sort']:1; // // $dis[] = ['uniacid','=',$this->_uniacid]; // // $dis[] = ['status','=',1]; // // if(!empty($input['cate_id'])){ // // $dis[] = ['cate_id','=',$input['cate_id']]; // } // // if(!empty($input['title'])){ // // $dis[] = ['title','like','%'.$input['title'].'%']; // // } // // if(!empty($input['farmer_id'])){ // // $dis[] = ['farmer_id','=',$input['farmer_id']]; // } // // $lat = !empty($input['lat'])?$input['lat']:0; // // $lng = !empty($input['lng'])?$input['lng']:0; // // $alh = '(2 * 6378.137* ASIN(SQRT(POW(SIN(PI()*('.$lng.'- `lng`)/360),2)+COS(PI()*33.07078170776367/180)* COS('.$lat.' * PI()/180)*POW(SIN(PI()*('.$lat.'- lat)/360),2))))*1000 as distance'; // // $data = $this->model->indexDataList($dis,$alh,$input['sort']); // // return $this->success($data); // // } // /** // * @author chenniang // * @DataTime: 2021-12-16 10:34 // * @功能说明:土地详情 // */ // public function landInfo(){ // // $input = $this->_param; // // $dis = [ // // 'id' => $input['id'] // ]; // // $data = $this->model->landInfo($dis); // // $farmer_model = new Farmer(); // //农场主消息 // $data['farmer_info'] = $farmer_model->dataInfo(['id'=>$data['farmer_id']],'mobile,title,cover'); // // $app_num = 0; // // if(!empty($data['spe'])){ // // $order_model = new LandOrder(); // // foreach ($data['spe'] as &$v){ // // $dis = [ // // 'land_id' => $input['id'], // // 'spe_id' => $v['id'] // ]; // // $v['is_app'] = $order_model->where($dis)->where('pay_type','>',1)->find(); // // $v['is_app'] = !empty($v['is_app'])?1:0; // // if($v['is_app']==1){ // // $app_num ++; // } // // } // // } // // $data['spe_info'] = [ // //总数量 // 'all_num' => count($data['spe']), // //已被预约数量 // 'app_num' => $app_num // // ]; // // return $this->success($data); // // } /** * @author chenniang * @DataTime: 2022-02-11 11:24 * @功能说明:土地预支付信息 */ public function landPayOrderInfo(){ $input = $this->_input; $order_model = new LandOrder(); $farmer_model = new Farmer(); $data = $order_model->payOrderInfo($input); if(!empty($data['code'])){ $this->errorMsg($data['msg']); } $data['farmer_info'] = $farmer_model->dataInfo(['id'=>$data['land']['farmer_id']],'title'); $address_model = new OrderAddress(); //地址 $data['address']= $address_model->dataInfo(['id'=>$input['address_id']]); return $this->success($data); } /** * @author chenniang * @DataTime: 2021-12-16 10:57 * @功能说明:土地下单 */ public function landPayOrder(){ $input = $this->_input; $address_model = new OrderAddress(); $order_model = new LandOrder(); $land_seed_model= new LandOrderSeed(); $pay_order = $order_model->payOrderInfo($input); if(!empty($pay_order['code'])){ $this->errorMsg($pay_order['msg']); } $order_insert = [ 'uniacid' => $this->_uniacid, 'pay_type' => 1, 'order_code' => orderCode(), 'user_id' => $this->getUserId(), 'land_id' => $input['land_id'], 'pay_price' => $pay_order['pay_price'], 'farmer_id' => $pay_order['land']['farmer_id'], 'goods_name' => $pay_order['land']['title'], 'goods_cover' => $pay_order['land']['cover'], 'massif_id' => $input['massif_id'], 'spe_id' => $input['spe_id'], 'spe_name' => $pay_order['spe']['spe_name'], 'area' => $pay_order['spe']['area'], 'land_price' => $pay_order['land_price'], 'seed_price' => $pay_order['seed_price'], 'cycle' => $input['cycle'], //到期时间 'end_time' => $input['cycle']*86400+time(), 'rent_mobile' => $input['rent_mobile'], 'rent_user_name'=> $input['rent_user_name'], 'massif_price' => $pay_order['massif']['price'], 'massif_title' => $pay_order['massif']['title'], 'total_massif_price' => $pay_order['total_massif_price'], // 'over_time' => time()+$this->_config['over_time']*60, 'send_type' => $input['send_type'], ]; Db::startTrans(); $res = $order_model->dataAdd($order_insert); if($res==0){ Db::rollback(); $this->errorMsg('下单失败'); } $order_id = $order_model->getLastInsID(); $input['uniacid'] = $this->_uniacid; $res = $address_model->orderAddressAdd($input['address_id'],$order_id,$input['send_type'],1,$input); if($res==0){ Db::rollback(); $this->errorMsg('下单失败'); } if(!empty($pay_order['seed'])){ $res = $land_seed_model->orderSeedAdd($pay_order['seed'],$order_id); if($res==0){ Db::rollback(); $this->errorMsg('下单失败'); } } Db::commit(); //如果是0元 if($order_insert['pay_price']<=0){ $order_model->orderResult($order_insert['order_code'],$order_insert['order_code']); return $this->success(true); } //余额支付 if(!empty($input['is_balance'])){ $user_model = new \app\farm\model\User(); $user_balance= $user_model->where(['id'=>$this->getUserId()])->value('balance'); if($user_balance<$order_insert['pay_price']){ $this->errorMsg('余额不足'); } $order_model->orderResult($order_insert['order_code'],$order_insert['order_code']); return $this->success(true); } //微信支付 $pay_controller = new \app\shop\controller\IndexWxPay($this->app); //支付 $jsApiParameters= $pay_controller->createWeixinPay($this->payConfig(),$this->getUserInfo()['openid'],$this->_uniacid,"土地订单",['type' => 'Land' , 'out_trade_no' => $order_insert['order_code']],$order_insert['pay_price']); $arr['pay_list']= $jsApiParameters; return $this->success($arr); } /** * @author chenniang * @DataTime: 2021-12-20 10:17 * @功能说明:土地重新下单 */ public function landRePayOrder(){ $input = $this->_input; $order_model = new LandOrder(); $order_insert = $order_model->dataInfo(['id'=>$input['id']]); if($order_insert['pay_type']!=1){ $this->errorMsg('订单状态错误'); } //余额支付 if(!empty($input['is_balance'])){ $user_model = new \app\farm\model\User(); $user_balance= $user_model->where(['id'=>$this->getUserId()])->value('balance'); if($user_balance<$order_insert['pay_price']){ $this->errorMsg('余额不足'); } $order_model->orderResult($order_insert['order_code'],$order_insert['order_code']); return $this->success(true); } //微信支付 $pay_controller = new \app\shop\controller\IndexWxPay($this->app); //支付 $jsApiParameters= $pay_controller->createWeixinPay($this->payConfig(),$this->getUserInfo()['openid'],$this->_uniacid,"认养订单",['type' => 'Claim' , 'out_trade_no' => $order_insert['order_code']],$order_insert['pay_price']); $arr['pay_list']= $jsApiParameters; return $this->success($arr); } /** * @author chenniang * @DataTime: 2022-01-06 18:03 * @功能说明:种子列表 */ public function seedList(){ $input = $this->_param; $land_text_model = new LandText(); $obj = $land_text_model->where(['land_id'=>$input['land_id'],'type'=>2])->column('obj_id'); $dis[] = ['a.status','=',1]; $dis[] = ['a.id','in',$obj]; //查询当前季节 if(!empty($input['season'])){ $month = date('m',time()); $season = ceil($month/3); $dis[] = ['b.season','=',$season]; } $seed_model = new Seed(); //种子 $data = $seed_model->indexDataList($dis,$input['sort']); return $this->success($data); } /** * @author chenniang * @DataTime: 2022-01-06 18:17 * @功能说明:种子详情 */ public function seedInfo(){ $input = $this->_param; $seed_model = new Seed(); $dis = [ 'id' => $input['id'] ]; //种子 $data = $seed_model->dataInfo($dis); return $this->success($data); } /** * @author chenniang * @DataTime: 2021-12-28 11:26 * @功能说明:用户下单列表 */ public function orderList(){ $input = $this->_param; $order_model = new LandOrder(); $farmer_model = new Farmer(); $user_model = new User(); //初始化订单 $order_model->orderInit(); $dis[] = ['a.uniacid','=',$this->_uniacid]; if(!empty($input['pay_type'])){ $dis[] = ['a.pay_type','=',$input['pay_type']]; } if(!empty($input['order_code'])){ $dis[] = ['a.order_code','like','%'.$input['order_code'].'%']; } if(!empty($input['goods_name'])){ $dis[] = ['a.goods_name','like','%'.$input['goods_name'].'%']; } if(!empty($input['mobile'])){ $dis[] = ['b.mobile','like','%'.$input['mobile'].'%']; } if(!empty($input['farmer_id'])){ $dis[] = ['a.farmer_id','=',$input['farmer_id']]; } if(!empty($input['start_time'])&&!empty($input['end_time'])){ $dis[] = ['a.create_time','between',"{$input['start_time']},{$input['end_time']}"]; } $data = $order_model->adminDataList($dis,$input['limit']); if(!empty($data['data'])){ foreach ($data['data'] as &$v){ $v['farmer_info'] = $farmer_model->dataInfo(['id'=>$v['farmer_id']],'title'); $v['user_info'] = $user_model->dataInfo(['id'=>$v['user_id']]); } } return $this->success($data); } /** * @author chenniang * @DataTime: 2021-12-28 11:52 * @功能说明:用户下单详情 */ public function orderInfo(){ $input = $this->_param; $farmer_model = new Farmer(); $dis = [ 'id' => $input['id'] ]; $order_model = new LandOrder(); $seed_model = new LandOrderSeed(); $data = $order_model->dataInfo($dis); //农场信息 $data['farmer_info'] = $farmer_model->dataInfo(['id'=>$data['farmer_id']]); //是否可以配送 $data['can_send'] = $data['pay_type']>1&&$data['end_time']orderSeed($data['id']); $address_model = new OrderAddress(); $data['address_info'] = $address_model->dataInfo(['order_id'=>$input['id'],'type'=>1]); return $this->success($data); } /** * @author chenniang * @DataTime: 2022-01-10 13:42 * @功能说明: */ public function cancelOrder(){ $input = $this->_input; $order_model = new LandOrder(); $dis = [ 'id' => $input['id'] ]; $order = $order_model->dataInfo($dis); if($order['pay_type']!=1){ $this->errorMsg('订单状态错误'); } $res = $order_model->cancelOrder($order); if(!empty($res['code'])){ $this->errorMsg($res['msg']); } return $this->success($res); } /** * @author chenniang * @DataTime: 2022-02-08 13:53 * @功能说明:申请认养订单发货 */ public function sendOrderApply(){ $input = $this->_input; $order_model = new ClaimOrder(); $farmer_model= new Farmer(); $config_model= new Config(); $address_model = new Address(); $send_order_model = new SendOrder(); $order = $order_model->dataInfo(['id'=>$input['order_id']]); $times = $send_order_model->where(['order_id'=>$input['order_id'],'type'=>2])->where('pay_time','>',0)->count(); $farmer= $farmer_model->dataInfo(['id'=>$order['farmer_id']]); if(empty($farmer)){ $this->errorMsg('农场主未找到'); } $send_price = $distance = 0; //快递 if($input['send_type']==2){ $address = $address_model->dataInfo(['id'=>$input['address_id']]); if(empty($address)){ $this->errorMsg('地址信息未找到'); } $distance = getdistance($address['lng'],$address['lat'],$farmer['lng'],$farmer['lat']); $distance = round($distance/1000,2); $send_price = $config_model->getSendPrice($distance,$this->_uniacid); }else{ $address['user_name'] = $input['user_name']; $address['mobile'] = $input['mobile']; } $order_insert = [ 'uniacid' => $this->_uniacid, 'order_id' => $input['order_id'], 'user_id' => $order['user_id'], 'farmer_id' => $order['farmer_id'], 'pay_price' => $send_price, 'order_code' => orderCode(), 'text' => $input['text'], // 'over_time' => time()+$this->_config['over_time']*60, 'type' => 2, 'start_time' => $input['start_time'], 'end_time' => $input['end_time'], 'times' => $times+1, 'send_type' => $input['send_type'], 'address' => $input['send_type']==2?$address['address'].$address['address_info']:'', 'user_name' => $address['user_name'], 'mobile' => $address['mobile'], 'lng' => $input['send_type']==2?$address['lng']:'', 'lat' => $input['send_type']==2?$address['lat']:'', 'balance' => !empty($input['is_balance'])?$send_price:0, ]; $res = $send_order_model->dataAdd($order_insert); if($res==0){ $this->errorMsg('申请配送失败'); } //如果是0元 if($order_insert['pay_price']<=0){ $send_order_model->orderResult($order_insert['order_code'],$order_insert['order_code']); return $this->success(true); } //余额支付 if(!empty($input['is_balance'])){ $user_model = new \app\farm\model\User(); $user_balance= $user_model->where(['id'=>$this->getUserId()])->value('balance'); if($user_balance<$order_insert['pay_price']){ $this->errorMsg('余额不足'); } $send_order_model->orderResult($order_insert['order_code'],$order_insert['order_code']); return $this->success(true); } //微信支付 $pay_controller = new \app\shop\controller\IndexWxPay($this->app); //支付 $jsApiParameters= $pay_controller->createWeixinPay($this->payConfig(),$this->getUserInfo()['openid'],$this->_uniacid,"认养配送订单",['type' => 'ClaimSend' , 'out_trade_no' => $order_insert['order_code']],$order_insert['pay_price']); $arr['pay_list']= $jsApiParameters; return $this->success($arr); } /** * @author chenniang * @DataTime: 2022-02-08 15:23 * @功能说明:配送订单下单详情 */ public function sendOrderPayInfo(){ $input = $this->_param; $order_model = new LandOrder(); $farmer_model= new Farmer(); $config_model= new Config(); $address_model = new Address(); $order = $order_model->dataInfo(['id'=>$input['order_id']]); $farmer= $farmer_model->dataInfo(['id'=>$order['farmer_id']]); if(empty($farmer)){ $this->errorMsg('农场主未找到'); } $address = $address_model->dataInfo(['id'=>$input['address_id']]); if(empty($address)){ $this->errorMsg('地址信息未找到'); } $distance = getdistance($address['lng'],$address['lat'],$farmer['lng'],$farmer['lat']); $distance = round($distance/1000,2); $send_price = $config_model->getSendPrice($distance,$this->_uniacid); $data['send_price'] = $send_price; return $this->success($data); } /** * @author chenniang * @DataTime: 2022-02-08 17:14 * @功能说明:配送订单列表 */ public function userSendOrderList(){ $input = $this->_param; $send_order_model = new SendOrder(); $data = $send_order_model->orderSendOrder($input['land_order_id'],2,$input['limit']); return $this->success($data); } /** * @author chenniang * @DataTime: 2022-02-09 14:00 * @功能说明:配送订单详情 */ public function sendOrderInfo() { $input = $this->_param; $send_order_model = new SendOrder(); $claim_order_model = new LandOrder(); $send_order = $send_order_model->dataInfo(['id' => $input['id']]); $send_order['create_time'] = date('Y-m-d H:i:s', $send_order['create_time']); $send_order['time_text'] = date('Y-m-d H:i', $send_order['start_time']) . '~' . date('H:i', $send_order['end_time']); $send_order['pay_time'] = $send_order['pay_time'] > 0 ? date('Y-m-d H:i:s', $send_order['pay_time']) : 0; $send_order['send_time'] = $send_order['send_time'] > 0 ? date('Y-m-d H:i:s', $send_order['send_time']) : 0; $send_order['receiving_time'] = $send_order['receiving_time'] > 0 ? date('Y-m-d H:i:s', $send_order['receiving_time']) : 0; $send_order['refund_time'] = $send_order['refund_time'] > 0 ? date('Y-m-d H:i:s', $send_order['refund_time']) : 0; $send_order['claim_order'] = $claim_order_model->dataInfo(['id' => $send_order['order_id']]); return $this->success($send_order); } /** * @author chenniang * @DataTime: 2022-02-08 17:57 * @功能说明:配送订单退款 */ public function sendOrderRefund(){ $input = $this->_input; $send_order_model = new SendOrder(); $send_order = $send_order_model->dataInfo(['id'=>$input['id']]); if(empty($send_order)){ $this->errorMsg('订单未找到'); } if($send_order['pay_type']!=2){ $this->errorMsg('订单状态错误'); } Db::startTrans(); if($send_order['send_type']==2&&$send_order['pay_price']>0&&$send_order['balance']<=0){ //微信退款 $response = orderRefundApi($this->payConfig($this->_uniacid),$send_order['pay_price'],$send_order['pay_price'],$send_order['transaction_id']); }else{ //余额或者自提或者0元 $response[ 'return_code' ] = 'SUCCESS'; $response[ 'result_code' ] = 'SUCCESS'; } //余额退款 if($send_order['balance']>0){ $water_model = new BalanceWater(); $res = $water_model->addWater($send_order,4,1); if($res==0){ Db::rollback(); $this->errorMsg('退款失败2'); } } //增加财务流水 $fin_water_model = new FinanceWater(); $res = $fin_water_model->addWater($input['id'],13,1,1); if($res==0){ Db::rollback(); $this->errorMsg('退款失败1'); } $res = $fin_water_model->dataUpdate(['order_id'=>$send_order['id'],'type'=>14],['cash_status'=>-1]); if($res==0){ Db::rollback(); $this->errorMsg('退款失败3'); } //如果退款成功修改一下状态 if ( isset( $response[ 'return_code' ] ) && isset( $response[ 'result_code' ] ) && $response[ 'return_code' ] == 'SUCCESS' && $response[ 'result_code' ] == 'SUCCESS' ) { $response['out_refund_no'] = !empty($response['out_refund_no'])?$response['out_refund_no']:$send_order['order_code']; $send_order_model->dataUpdate(['id'=>$send_order['id']],['refund_code'=>$response['out_refund_no'],'refund_time'=>time(),'pay_type'=>-1,'refund'=>1]); }else { Db::rollback(); //失败就报错 $discption = !empty($response['err_code_des'])?$response['err_code_des']:$response['return_msg']; $this->errorMsg($discption); } Db::commit(); return $this->success(true); } /** * @author chenniang * @DataTime: 2022-02-09 10:24 * @功能说明:配送订单收货 */ public function sendOrderReceiving(){ $input = $this->_input; $send_order_model = new SendOrder(); $send_order = $send_order_model->dataInfo(['id'=>$input['id']]); if(empty($send_order)){ $this->errorMsg('订单未找到'); } if($send_order['pay_type']!=3){ $this->errorMsg('订单状态错误'); } $res = $send_order_model->sendOrderReceiving($send_order); if(!empty($res['code'])){ $this->errorMsg($res['msg']); } return $this->success(true); } /** * @author chenniang * @DataTime: 2021-12-10 17:51 * @功能说明:土地列表 */ public function landList(){ $input = $this->_param; if(!empty($input['title'])){ $dis[] = ['title','like','%'.$input['title'].'%']; } $dis[] = ['uniacid','=',$this->_uniacid]; if(isset($input['status'])){ $dis[] = ['status','=',$input['status']]; }else{ $dis[] = ['status','>',-1]; } if(!empty($input['farmer_id'])){ $dis[] = ['farmer_id','=',$input['farmer_id']]; } $data = $this->model->dataList($dis,$input['limit']); if(!empty($data['data'])){ $farmer_model = new Farmer(); foreach ($data['data'] as &$v){ $v['farmer_name'] = $farmer_model->where(['id'=>$v['farmer_id']])->value('title'); $cate_name = $this->cate_model->where('id','in',$v['cate_id'])->column('title'); $v['cate_name'] = implode(',',$cate_name); } } $arr = [ 0 => 'off_num', 1 => 'on_num', ]; foreach ($arr as $key => $value){ $dis = [ 'uniacid' => $this->_uniacid, 'status' => $key ]; $data[$value] = $this->model->where($dis)->count(); } return $this->success($data); } /** * @author chenniang * @DataTime: 2021-12-10 18:05 * @功能说明:添加土地 */ public function landAdd(){ $input = $this->_input; $input['uniacid'] = $this->_uniacid; $res = $this->model->dataAdd($input); return $this->success($res); } /** * @author chenniang * @DataTime: 2021-12-10 18:05 * @功能说明:编辑土地 */ public function landUpdate(){ $input = $this->_input; $dis = [ 'id' => $input['id'] ]; $input['uniacid'] = $this->_uniacid; $res = $this->model->dataUpdate($dis,$input); return $this->success($res); } /** * @author chenniang * @DataTime: 2021-12-10 18:05 * @功能说明:编辑土地 */ public function landStatusUpdate(){ $input = $this->_input; $dis = [ 'id' => $input['id'] ]; $res = $this->model->where($dis)->update($input); return $this->success($res); } /** * @author chenniang * @DataTime: 2021-12-10 18:05 * @功能说明:土地详情 */ public function landInfo(){ $input = $this->_param; $dis = [ 'id' => $input['id'] ]; $data = $this->model->landInfo($dis); $data['text'] = html_entity_decode($data['text']); $data['massif'] = array_values(array_column($data['massif'],'id')); $data['monitor'] = array_values(array_column($data['monitor'],'id')); $data['seed'] = array_values(array_column($data['seed'],'id')); $freightTemplate_model = new FreightTemplate(); $res['send_template_type'] = $freightTemplate_model->where(['id'=>$data['send_tmpl_id']])->value('type'); return $this->success($data); } }