app = $app; $this->model = new Claim(); autoCancelOrder($this->_uniacid); $collage_model = new CollageStart(); $collage_model->initAtv($this->payConfig()); $push_data = array( 'action' => 'collageFailCancelOrder', 'event' => 'collageFailCancelOrder', 'pay_config' => $this->payConfig() ); publisher(json_encode($push_data, true)); } /** * @author chenniang * @DataTime: 2022-01-06 14:03 * @功能说明:认养轮播图 */ public function claimBanner() { $input = $this->_param; $banner_model = new Banner(); $dis = [ 'type' => $input['type'], 'status' => 1, 'uniacid' => $this->_uniacid ]; $data = $banner_model->where($dis)->order('top desc,id desc')->select()->toArray(); return $this->success($data); } /** * @author chenniang * @DataTime: 2021-12-14 17:42 * @功能说明:认养分类列表 */ public function claimCateList() { $input = $this->_param; $cate_model = new LandCate(); $dis = [ 'type' => $input['type'], '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 claimList() { $input = $this->_param; $farmer_model = new Farmer(); $claim_order = new ClaimOrder(); $user_model = new User(); $input['sort'] = !empty($input['sort']) ? $input['sort'] : 1; $dis[] = ['a.uniacid', '=', $this->_uniacid]; $dis[] = ['a.status', '=', 1]; $dis[] = ['a.end_time', '>', time()]; if (!empty($input['cate_id'])) { $dis[] = ['b.cate_id', '=', $input['cate_id']]; $dis[] = ['b.type', '=', 3]; } if (!empty($input['title'])) { $dis[] = ['a.title', 'like', '%' . $input['title'] . '%']; } if (!empty($input['farmer_id'])) { $dis[] = ['a.farmer_id', '=', $input['farmer_id']]; } else { $id = $farmer_model->farmerId($this->_uniacid); $dis[] = ['a.farmer_id', 'in', $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'; $alh = '0 as distance'; $data = $this->model->indexDataListV2($dis, $alh, $input['sort']); if (!empty($data['data'])) { foreach ($data['data'] as &$v) { $v['count']['user_count'] = $claim_order->where(['claim_id' => $v['id']])->where('pay_type', '>', 1)->group('user_id')->count(); $order_user_id = $claim_order->where(['claim_id' => $v['id']])->where('pay_type', '>', 1)->group('user_id')->order('id desc')->limit(3)->column('user_id'); $v['count']['user_list'] = $user_model->where('id', 'in', $order_user_id)->field('avatarUrl')->select()->toArray(); $v['farmer_info'] = $farmer_model->dataInfo(['id' => $v['farmer_id']], 'title,cover'); $v['start_time'] = date('Y-m-d', $v['start_time']); $v['end_time'] = date('Y-m-d', $v['end_time']); } } return $this->success($data); } /** * @author chenniang * @DataTime: 2021-12-16 10:34 * @功能说明:认养详情 */ public function claimInfo() { $input = $this->_param; $dis = [ 'id' => $input['id'] ]; $data = $this->model->dataInfo($dis); $farmer_model = new Farmer(); $data['farmer_info'] = $farmer_model->dataInfo(['id' => $data['farmer_id']]); $claim_text_model = new ClaimText(); $data['process'] = $claim_text_model->where(['claim_id' => $data['id']])->select()->toArray(); $mac_model = new Machine(); //仪器详情 $data['machine_info'] = $mac_model->getDataInfo($data['id'], 2); $collage_model = new CollageStart(); //拼团列表 $data['collage_list'] = $collage_model->claimCollageLimit($data['id'], 3, $this->getUserId()); //用户正在发起的拼团 $data['user_start_collage'] = $collage_model->userCollageIngData($this->getUserId(), $data['id']); $collage_model = new ClaimCollage(); //商品拼团活动 $data['collage_data'] = $collage_model->getAtvInfoIng($data['id'], $this->getUserId()); return $this->success($data); } /** * @author chenniang * @DataTime: 2022-08-16 17:51 * @功能说明:认养拼团列表 */ public function claimCollageList() { $input = $this->_param; $collage_model = new CollageStart(); $dis[] = ['end_time', '>', time()]; $dis[] = ['status', '=', 1]; $dis[] = ['claim_id', '=', $input['claim_id']]; //拼团 $data = $collage_model->claimCollageList($dis); return $this->success($data); } /** * @author chenniang * @DataTime: 2022-08-16 17:53 * @功能说明:认养拼团详情 */ public function claimCollageInfo() { $input = $this->_param; $collage_model = new CollageStart(); $join_model = new CollageJoin(); $order_model = new ClaimOrder(); $data = $collage_model->dataInfo(['id' => $input['id']]); if (empty($data)) { $this->errorMsg('拼团未找到'); } $data['user_list'] = $join_model->collageUserAvatar($input['id'], 5); $claim = $this->model->dataInfo(['id' => $data['claim_id']]); $data['claim_title'] = $claim['title']; $data['claim_cover'] = $claim['cover']; $data['claim_price'] = $claim['price']; $data['can_start'] = $collage_model->startAtvCheck($this->getUserId(), $data['atv_id']); //是否还能发起该活动其他的拼团 $data['can_start'] = !empty($data['can_start']['code']) ? 0 : 1; //是否能参与拼团 $data['can_join'] = $join_model->collageCanJoin($this->getUserId(), $data['id']); return $this->success($data); } /** * @author chenniang * @DataTime: 2022-01-10 10:05 * @功能说明:下单页信息 */ public function claimPayOrderInfo() { $input = $this->_param; $order_model = new ClaimOrder(); $data = $order_model->payOrderInfo($input); if (!empty($data['code'])) { $this->errorMsg($data['msg']); } $farmer_model = new Farmer(); $arr['farmer_info'] = $farmer_model->dataInfo(['id' => $data['farmer_id']]); $arr['claim_info'] = $data; $address_model = new Address(); if (!empty($input['address_id'])) { $arr['address'] = $address_model->dataInfo(['id' => $input['address_id']]); } else { $arr['address'] = $address_model->dataInfo(['user_id' => $this->getUserId(), 'status' => 1]); } $coupon_modle = new Coupon(); $coupon_record_model = new CouponRecord(); //可用优惠券数量 $canUseCoupon = $coupon_modle->canUseCoupon($this->getUserId(), $data['pay_price'], 3); $arr['canUseCoupon'] = $coupon_record_model->where('id', 'in', $canUseCoupon)->sum('num'); $arr['pay_price'] = $data['pay_price']; $arr['coupon_discount'] = $data['coupon_discount']; $arr['coupon_id'] = $data['coupon_id']; return $this->success($arr); } /** * @author chenniang * @DataTime: 2021-12-16 10:57 * @功能说明:认养下单 */ public function claimPayOrder() { $input = $this->_input; $order_model = new ClaimOrder(); $data = $order_model->payOrderInfo($input, 1); if (!empty($data['code'])) { $this->errorMsg($data['msg']); } $address_model = new OrderAddress(); $order_insert = [ 'uniacid' => $this->_uniacid, 'pay_type' => 1, 'order_code' => orderCode(), 'claim_code' => short_orderCode(), 'user_id' => $this->getUserId(), 'pay_price' => round($data['pay_price'], 2), 'get_integral' => round($data['pay_price'], 2), 'init_price' => round($data['init_price'], 2), 'balance' => $input['pay_model'] == 2 ? round($data['pay_price'], 2) : 0, 'goods_id' => $data['id'], 'goods_name' => $data['title'], 'goods_cover' => $data['cover'], 'goods_price' => $data['price'], 'breed' => $data['breed'], 'cycle' => $data['cycle'], 'start_time' => $data['start_time'], 'end_time' => $data['end_time'], 'harvest_text' => $data['harvest_text'], 'harvest_cover' => $data['harvest_cover'], 'name' => $input['claim_name'], 'send_type' => $input['send_type'], 'num' => $input['num'], 'text' => $input['text'], 'claim_id' => $data['id'], 'farmer_id' => $data['farmer_id'], 'source_id' => $data['source_id'], 'send_cycle' => $data['send_cycle'], 'send_times' => $data['send_times'], 'unit' => $data['unit'], // 'over_time' => time() + $this->_config['over_time'] * 60, 'pay_model' => $input['pay_model'], 'coupon_id' => $data['coupon_id'], 'discount_price' => $data['coupon_discount'], 'is_collage' => !empty($input['collage_start_id']) || !empty($input['collage_join_id']) ? 1 : 0, ]; Db::startTrans(); $earInfo = ClaimEarTag::where('status', 0)->find(); if ($earInfo && $data['unit'] == '头') { $order_insert['ear_tag'] = $earInfo['id']; $order_insert['ear_tag_code'] = $earInfo['code']; } $order_model = new ClaimOrder(); $res = $order_model->dataAdd($order_insert); if ($res == 0) { Db::rollback(); $this->errorMsg('下单失败1'); } $order_id = $order_model->getLastInsID(); $order_insert['id'] = $order_id; $input['uniacid'] = $this->_uniacid; $res = $address_model->orderAddressAdd($input['address_id'], $order_id, $input['send_type'], 2, $input); if ($res == 0) { Db::rollback(); $this->errorMsg('下单失败2'); } //加销量减库存 $update = [ 'stock' => $data['stock'] - $input['num'], 'sale_num' => $data['sale_num'] + $input['num'], 'lock' => $data['lock'] + 1 ]; $res = $this->model->where(['id' => $data['id'], 'lock' => $data['lock']])->update($update); $specInfo = ClaimSpec::find($input['spec_id']); $specInfo['stock'] = $specInfo['stock'] + $input['num']; $specInfo->save(); if ($res == 0) { Db::rollback(); $this->errorMsg('下单失败3'); } //使用优惠券 if (!empty($data['coupon_id'])) { $coupon_record_model = new CouponRecord(); $coupon_record_model->couponUse($data['coupon_id'], $order_id, 3); } $is_start = 0; //发起拼团 if (!empty($data['collage_start_data'])) { $start_model = new CollageStart(); $data['collage_join_data'] = $start_model->startCollage($order_insert, $data['collage_start_data']); if (!empty($data['collage_join_data']['code'])) { Db::rollback(); $this->errorMsg($data['collage_join_data']['msg']); } $is_start = 1; } //参与拼团 if (!empty($data['collage_join_data'])) { $join_model = new CollageJoin(); $res = $join_model->joinCollage($order_insert, $data['collage_join_data'], $is_start); if (!empty($res['code'])) { Db::rollback(); $this->errorMsg($res['msg']); } } 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 ($input['pay_model'] == 2) { $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); } elseif ($input['pay_model'] == 3) { $pay_model = new PayModel($this->payConfig()); $jsApiParameters = $pay_model->aliPay($order_insert['order_code'], $order_insert['pay_price'], '认养商品'); $arr['pay_list'] = $jsApiParameters; $arr['order_code'] = $order_insert['order_code']; } else { //微信支付 $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; } $arr['order_code'] = $order_insert['order_code']; $arr['create_time'] = date('Y-m-d H:i:s', time()); return $this->success($arr); } /** * @author chenniang * @DataTime: 2021-12-20 10:17 * @功能说明:认养重新下单 */ public function claimRePayOrder() { $input = $this->_input; $order_model = new ClaimOrder(); $order_insert = $order_model->dataInfo(['id' => $input['id']]); if ($order_insert['pay_type'] != 1) { $this->errorMsg('订单状态错误'); } //余额支付 if ($order_insert['pay_model'] == 2) { $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); } elseif ($order_insert['pay_model'] == 3) { $pay_model = new PayModel($this->payConfig()); $jsApiParameters = $pay_model->aliPay($order_insert['order_code'], $order_insert['pay_price'], '认养商品'); $arr['pay_list'] = $jsApiParameters; $arr['order_code'] = $order_insert['order_code']; } else { //微信支付 $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: 2021-12-28 11:26 * @功能说明:用户下单列表 */ public function orderList() { $input = $this->_param; $dis[] = ['uniacid', '=', $this->_uniacid]; $dis[] = ['user_id', '=', $this->getUserId()]; if (!empty($input['pay_type'])) { $dis[] = ['pay_type', '=', $input['pay_type']]; } if (!empty($input['order_code'])) { $dis[] = ['order_code', 'like', '%' . $input['order_code'] . '%']; } $order_model = new ClaimOrder(); $farmer_model = new Farmer(); $eva_model = new Evaluate(); $data = $order_model->dataList($dis); if (!empty($data['data'])) { foreach ($data['data'] as &$v) { $v['farmer_info'] = $farmer_model->dataInfo(['id' => $v['farmer_id']], 'title'); $dis = [ 'user_id' => $this->getUserId(), 'order_id' => $v['id'], 'type' => 1 ]; $have_eva = $eva_model->where($dis)->where('status', '>', -1)->find(); //是否已经评价 $v['have_eva'] = !empty($have_eva) ? 1 : 0; } } $arr = [2 => 'claim_count', 3 => 'send_count']; foreach ($arr as $key => $value) { $where = [ 'user_id' => $this->getUserId(), 'pay_type' => $key ]; $data['count'][$value] = $order_model->where($where)->count(); } return $this->success($data); } /** * @author chenniang * @DataTime: 2021-12-28 11:52 * @功能说明:用户下单详情 */ public function orderInfo() { $input = $this->_param; $farmer_model = new Farmer(); $source_model = new Source(); $dis = [ 'id' => $input['id'] ]; $order_model = new ClaimOrder(); $data = $order_model->dataInfo($dis); $data['over_time'] -= time(); $data['create_time'] = date('Y-m-d H:i:s', $data['create_time']); $data['pay_time'] = $data['pay_time'] > 0 ? date('Y-m-d H:i:s', $data['pay_time']) : 0; $data['cancel_time'] = $data['cancel_time'] > 0 ? date('Y-m-d H:i:s', $data['cancel_time']) : 0; $data['time_text'] = date('Y-m-d', $data['start_time']) . '~' . date('Y-m-d', $data['end_time']); //农场信息 $data['farmer_info'] = $farmer_model->dataInfo(['id' => $data['farmer_id']]); //溯源信息 $data['source'] = $source_model->dataInfo(['id' => $data['source_id']]); //是否可以配送 $data['can_send'] = $data['pay_type'] > 1 && $data['end_time'] < time() ? 1 : 0; $eva_model = new Evaluate(); $dis = [ 'user_id' => $this->getUserId(), 'order_id' => $input['id'], 'type' => 1 ]; $have_eva = $eva_model->where($dis)->where('status', '>', -1)->find(); //是否已经评价 $data['have_eva'] = !empty($have_eva) ? 1 : 0; $address_order_model = new OrderAddress(); $address_model = new Address(); $data['address_info'] = $address_order_model->dataInfo(['order_id' => $input['id'], 'type' => 2]); if (!empty($data['address_info']['address_id'])) { $data['address_info'] = $address_model->dataInfo(['id' => $data['address_info']['address_id']]); } $mac_model = new Machine(); //仪器详情 $data['machine_info'] = $mac_model->getDataInfo($data['claim_id'], 2); $send_tmpl_id = $this->model->where(['id' => $data['claim_id']])->value('send_tmpl_id'); $freightTemplate_model = new FreightTemplate(); //配送运费模版 $data['send_tmpl'] = $freightTemplate_model->dataInfo(['id' => $send_tmpl_id]); if ($data['is_collage'] == 1) { $collage_model = new CollageJoin(); $collage_info = $collage_model->dataInfo(['order_id' => $input['id']]); if (!empty($collage_info)) { $data['collage_status'] = $collage_info['status']; $data['collage_discount_price'] = $data['init_price'] - $collage_info['price']; $data['collage_discount_price'] = $data['collage_discount_price'] > 0 ? $data['collage_discount_price'] : 0; } } return $this->success($data); } /** * @author chenniang * @DataTime: 2022-01-10 13:42 * @功能说明: */ public function cancelOrder() { $input = $this->_input; $order_model = new ClaimOrder(); $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: 2021-12-29 10:29 * @功能说明:养殖管理 */ public function breedList() { $input = $this->_param; $breed_model = new Breed(); $car_model = new Car(); $dis[] = ['a.uniacid', '=', $this->_uniacid]; $dis[] = ['a.status', '=', 1]; $dis[] = ['b.type', '=', 5]; if (!empty($input['title'])) { $dis[] = ['a.title', 'like', '%' . $input['title'] . '%']; } $dis[] = ['b.store_id', '=', $input['farmer_id']]; $data = $breed_model->indexDataList($dis); $dis = [ 'user_id' => $this->getUserId(), 'type' => 1, 'status' => 1, 'farmer_id' => $input['farmer_id'] ]; $car = $breed_model->getCarList($this->getUserId(), $input['farmer_id']); $data['count'] = $car['goods_num']; $data['total_price'] = $car['price']; if (!empty($data['data'])) { foreach ($data['data'] as &$v) { $dis['goods_id'] = $v['id']; $v['car_num'] = $car_model->where($dis)->sum('goods_num'); $v['car_id'] = $car_model->where($dis)->value('id'); } } return $this->success($data); } /** * @author chenniang * @DataTime: 2021-12-29 17:02 * @功能说明:养殖订单 */ public function breedOrder() { $input = $this->_input; $breed_model = new Breed(); $order_model = new BreedOrder(); $claim_order_model = new ClaimOrder(); $framer_model = new Farmer(); $claim_order = $claim_order_model->dataInfo(['id' => $input['claim_order_id']]); $pay_order = $breed_model->getCarList($this->getUserId(), $claim_order['farmer_id']); $farmer = $framer_model->dataInfo(['id' => $claim_order['farmer_id'], 'status' => 2]); if (empty($farmer)) { $this->errorMsg('该农场主已被取消农场身份,无法下单'); } $order_insert = [ 'uniacid' => $this->_uniacid, 'order_code' => orderCode(), 'user_id' => $this->getUserId(), 'claim_order_id' => $input['claim_order_id'], 'farmer_id' => $claim_order['farmer_id'], 'pay_price' => $pay_order['price'], 'get_integral' => $pay_order['price'], 'text' => $input['text'], 'pay_model' => $input['pay_model'], 'balance' => $input['pay_model'] == 2 ? round($pay_order['price'], 2) : 0, ]; Db::startTrans(); $res = $order_model->dataAdd($order_insert); if ($res == 0) { Db::rollback(); $this->errorMsg('下单失败'); } $order_id = $order_model->getLastInsID(); $order_goods_model = new BreedOrderGoods(); $res = $order_goods_model->orderAdd($pay_order['car_list'], $order_id); if ($res == 0) { Db::rollback(); $this->errorMsg('下单失败'); } //清空购物车 $car_model = new Car(); $dis = [ 'farmer_id' => $claim_order['farmer_id'], 'user_id' => $this->getUserId(), 'type' => 1, 'status' => 1 ]; $car_model->where($dis)->delete(); 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 ($input['pay_model'] == 2) { $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); } elseif ($input['pay_model'] == 3) { $pay_model = new PayModel($this->payConfig()); $jsApiParameters = $pay_model->aliPay($order_insert['order_code'], $order_insert['pay_price'], '养殖商品'); $arr['pay_list'] = $jsApiParameters; $arr['order_code'] = $order_insert['order_code']; } else { //微信支付 $pay_controller = new \app\shop\controller\IndexWxPay($this->app); //支付 $jsApiParameters = $pay_controller->createWeixinPay($this->payConfig(), $this->getUserInfo()['openid'], $this->_uniacid, "养殖订单", ['type' => 'Breed', 'out_trade_no' => $order_insert['order_code']], $order_insert['pay_price']); $arr['pay_list'] = $jsApiParameters; } return $this->success($arr); } /** * @author chenniang * @DataTime: 2022-01-10 15:52 * @功能说明:养殖订单列表 */ public function breedOrderList() { $input = $this->_param; $dis[] = ['pay_type', '>', 1]; $dis[] = ['claim_order_id', '=', $input['claim_order_id']]; $order_model = new BreedOrder(); $data = $order_model->dataList($dis); return $this->success($data); } /** * @author chenniang * @DataTime: 2022-01-10 16:07 * @功能说明:养殖订单详情 */ public function breedOrderInfo() { $input = $this->_param; $dis[] = ['id', '=', $input['id']]; $order_model = new BreedOrder(); $data = $order_model->dataInfo($dis); $data['create_time'] = date('Y-m-d H:i:s', $data['create_time']); $data['pay_time'] = !empty($data['pay_time']) ? date('Y-m-d H:i:s', $data['pay_time']) : 0; 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['claim_order_id']); return $this->success($data); } /** * @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']]); if ($order['pay_type'] < 2) { $this->errorMsg('订单未支付'); } //已经申请的配送次数 $send_count = $send_order_model->where(['order_id' => $input['order_id'], 'type' => 1])->where('pay_type', '>', 1)->count(); if ($send_count >= $order['send_times']) { $this->errorMsg('已经到达配送次数上线'); } $times = $send_order_model->where(['order_id' => $input['order_id'], 'type' => 1])->where('pay_time', '>', 0)->count(); $farmer = $farmer_model->dataInfo(['id' => $order['farmer_id'], 'status' => 2]); 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('地址信息未找到'); } $cliam_info = $this->model->dataInfo(['id' => $order['claim_id']]); if (empty($cliam_info)) { $this->errorMsg('认养信息被删除'); } $goods_info = [ 'send_tmpl_id' => $cliam_info['send_tmpl_id'], 'goods_num' => $input['send_num'], 'total_weight' => $input['send_num'], ]; $send_data = $config_model->getGoodsSendPrice($input['address_id'], $goods_info, 2, 2); if (!empty($send_data['code'])) { $this->errorMsg($send_data['msg']); } $send_price = $send_data['price']; $send_tmpl_type = $send_data['type']; } else { $address['user_name'] = $input['user_name']; $address['mobile'] = $input['mobile']; } $order_insert = [ 'uniacid' => $this->_uniacid, 'order_id' => $input['order_id'], 'pay_model' => $input['pay_model'], 'user_id' => $order['user_id'], 'farmer_id' => $order['farmer_id'], 'pay_price' => $send_price, 'get_integral' => $send_price, 'order_code' => orderCode(), 'text' => $input['text'], // 'over_time' => time() + $this->_config['over_time'] * 60, 'type' => 1, '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' => $input['pay_model'] == 2 ? $send_price : 0, 'goods_num' => isset($send_tmpl_type) && $send_tmpl_type == 1 ? $input['send_num'] : 0, 'weight' => isset($send_tmpl_type) && $send_tmpl_type == 2 ? $input['send_num'] : 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 ($input['pay_model'] == 2) { $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); } elseif ($input['pay_model'] == 3) { $pay_model = new PayModel($this->payConfig()); $jsApiParameters = $pay_model->aliPay($order_insert['order_code'], $order_insert['pay_price'], '配送订单'); $arr['pay_list'] = $jsApiParameters; $arr['order_code'] = $order_insert['order_code']; } else { //微信支付 $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 ClaimOrder(); $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('地址信息未找到'); } $cliam_info = $this->model->dataInfo(['id' => $order['claim_id']]); $freightTemplate_model = new FreightTemplate(); $data['send_tmpl'] = $freightTemplate_model->dataInfo(['id' => $cliam_info['send_tmpl_id']]); if (!empty($input['send_num'])) { $goods_info = [ 'send_tmpl_id' => $cliam_info['send_tmpl_id'], 'goods_num' => $input['send_num'], 'total_weight' => $input['send_num'], ]; $data['send_price'] = $config_model->getGoodsSendPrice($input['address_id'], $goods_info, 2); if (!empty($data['send_price']['code'])) { $this->errorMsg($data['send_price']['msg']); } } return $this->success($data); } /** * @author chenniang * @DataTime: 2022-02-08 15:10 * @功能说明:获取配送时间段 */ public function sendTime() { $config_model = new Config(); $send_config = new SendConfig(); $config = $config_model->dataInfo(['uniacid' => $this->_uniacid]); $config['app_day'] = $config['app_day'] > 30 ? 30 : $config['app_day']; $i = 0; //预约的每一天 while ($i < $config['app_day']) { $time = time() + 86400 * $i; $arr['date'] = date('Y-m-d', $time); $arr['week'] = changeWeek(date('w', $time)); $data['date'][] = $arr; $i++; } //每天时间段 $data['time'] = $send_config->where(['uniacid' => $this->_uniacid, 'status' => 1])->select()->toArray(); return $this->success($data); } /** * @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(); $res = $send_order_model->refundCash($send_order, $this->payConfig($this->_uniacid)); if (!empty($res['code'])) { $this->errorMsg($res['msg']); } $send_order_model->dataUpdate(['id' => $send_order['id']], ['refund_time' => time(), 'pay_type' => -1, 'refund' => 1]); //增加财务流水 $fin_water_model = new FinanceWater(); $res = $fin_water_model->addWater($input['id'], 11, 1, 1); if ($res == 0) { Db::rollback(); $this->errorMsg('退款失败1'); } $res = $fin_water_model->dataUpdate(['order_id' => $send_order['id'], 'type' => 10], ['cash_status' => 1]); if ($res == 0) { Db::rollback(); $this->errorMsg('退款失败3'); } 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: 2022-02-09 14:00 * @功能说明:配送订单详情 */ public function sendOrderInfo() { $input = $this->_param; $send_order_model = new SendOrder(); $claim_order_model = new ClaimOrder(); $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: 2021-07-10 00:40 * @功能说明:可用的优惠券列表 */ public function couponList() { $input = $this->_param; $coupon_model = new Coupon(); $coupon_record_model = new CouponRecord(); $order_model = new ClaimOrder(); $order_info = $order_model->payOrderInfo($input); $coupon_id = $coupon_model->canUseCoupon($this->getUserId(), $order_info['pay_price'], 3); $data = $coupon_record_model->where('id', 'in', $coupon_id)->order('id desc')->paginate(10)->toArray(); if (!empty($data['data'])) { foreach ($data['data'] as &$v) { $v['start_time'] = date('Y.m.d H:i', $v['start_time']) . ' - ' . date('Y.m.d H:i', $v['end_time']); } } return $this->success($data); } /** * @author chenniang * @DataTime: 2022-08-16 15:15 * @功能说明:用户认养拼团 */ public function userCollageLimit() { $input = $this->_param; $collage_model = new CollageJoin(); $dis[] = ['a.user_id', '=', $this->getUserId()]; $dis[] = ['a.status', '=', 1]; $data = $collage_model->userCollageLimit($dis); return $this->success($data); } /** * @author chenniang * @DataTime: 2022-08-16 15:15 * @功能说明:用户认养拼团列表 */ public function userCollageList() { $input = $this->_param; $collage_model = new CollageJoin(); $dis[] = ['a.user_id', '=', $this->getUserId()]; if (!empty($input['status']) && $input['status'] == 2) { $dis[] = ['a.status', '=', $input['status']]; } else { $dis[] = ['a.status', 'in', [1, 3]]; } $data = $collage_model->userCollagePage($dis); $data['total_num'] = $collage_model->userCollageCount($this->getUserId()); return $this->success($data); } /** * @author chenniang * @DataTime: 2022-08-16 16:12 * @功能说明:拼团商品列表 */ public function collageList() { $collage_model = new ClaimCollage(); $dis[] = ['a.uniacid', '=', $this->_uniacid]; $dis[] = ['a.status', '=', 1]; $dis[] = ['a.start_time', '<', time()]; $dis[] = ['a.end_time', '>', time()]; if (!empty($input['title'])) { $dis[] = ['a.title', 'like', '%' . $input['title'] . '%']; } if (!empty($input['goods_name'])) { $dis[] = ['b.title', 'like', '%' . $input['goods_name'] . '%']; } $data = $collage_model->adminDataList($dis); if (!empty($data['data'])) { foreach ($data['data'] as &$v) { $v['time_text'] = lbGetDatesss($v['end_time']); } } return $this->success($data); } public function getEarInfoList(){ $input = $this->_param; $model = new ClaimEarTagLog(); $data = $model->getList($input); return $this->success($data); } }