insert($data); return $res; } /** * @author chenniang * @DataTime: 2020-09-29 11:05 * @功能说明:编辑 */ public function dataUpdate($dis, $data) { $res = $this->where($dis)->update($data);; return $res; } /** * @author chenniang * @DataTime: 2021-12-14 15:45 * @功能说明:添加关联 */ public function updateSome($id, $data) { $server = new \app\farm\server\Claim(); $claim_text_model = new ClaimText(); $source_text_model = new LandSourceText(); $monitor_text_model = new MonitorText(); $server->addObserver($claim_text_model); $server->addObserver($source_text_model); $server->addObserver($monitor_text_model); $server->notify($id, $data); return true; } /** * @author chenniang * @DataTime: 2020-09-29 11:06 * @功能说明:列表 */ public function dataList($dis, $page = 10) { $data = $this->where($dis)->order('id desc')->paginate($page)->toArray(); return $data; } /** * @author chenniang * @DataTime: 2020-09-29 11:43 * @功能说明: */ public function dataInfo($dis) { $data = $this->where($dis)->find(); return !empty($data) ? $data->toArray() : []; } /** * @author chenniang * @DataTime: 2021-12-16 15:39 * @功能说明:回调 */ public function orderResult($order_code, $transaction_id) { $order = $this->dataInfo(['order_code' => $order_code]); if (!empty($order) && $order['pay_type'] == 1) { $update = [ 'pay_time' => time(), 'pay_type' => 2, 'transaction_id' => $transaction_id ]; Db::startTrans(); $this->dataUpdate(['id' => $order['id']], $update); //扣除余额 if ($order['balance'] > 0) { $water_model = new BalanceWater(); $res = $water_model->addWater($order, 2, 0); if ($res == 0) { Db::rollback(); } } //添加流水 $water_model = new FinanceWater(); $water_model->addWater($order['id'], 1, 1, 1); $integral_model = new IntegralLog(); //增加佣金 $integral_model->integralUserAdd($order['user_id'], $order['get_integral'], $order['uniacid'], 2, 5, $order['id'], 0, $order); //分销 $cash_model = new DistributionCash(); //增加分销激励 $cash_model->addUserCash($order, 3); //分销到账 $cash_model->cashArrival($order, 3); $collage_model = new CollageStart(); //拼团 $collage_model->atvResult($order['id']); Db::commit(); $sys_model = new PushMsgModel($order['uniacid']); $sys_model->sendMsg($order, 8); $sys_model->sendMsg($order, 10); } return true; } /** * @author chenniang * @DataTime: 2021-04-01 10:13 * @功能说明:超时自动退款 */ public function autoCancelOrder($uniacid, $user_id = 0) { $dis[] = ['uniacid', '=', $uniacid]; $dis[] = ['pay_type', '=', 1]; $dis[] = ['over_time', '<', time()]; if (!empty($user_id)) { $dis[] = ['user_id', '=', $user_id]; } $order = $this->where($dis)->select()->toArray(); if (!empty($order)) { foreach ($order as $value) { $this->cancelOrder($value); } } return true; } /** * @author chenniang * @DataTime: 2021-04-01 10:13 * @功能说明:退款 */ public function cancelOrder($order, $refund = 1, $payConfig = []) { Db::startTrans(); if ($refund == 2) { $res = $this->refundCash($payConfig, $order); if ($res != true) { Db::rollback(); return ['code' => 500, 'msg' => '退款失败']; } } else { //取消订单 $collage_model = new CollageStart(); $collage_model->cancelOrderAtvFail($order['id']); } $res = $this->dataUpdate(['id' => $order['id'], 'pay_type' => $refund], ['pay_type' => -1, 'cancel_time' => time(), 'ear_tag' => null, 'ear_tag_code' => null]); if ($res != 1) { Db::rollback(); return ['code' => 500, 'msg' => '取消失败']; } $claim_model = new Claim(); $claim = $claim_model->dataInfo(['id' => $order['goods_id']]); //加销量减库存 $update = [ 'stock' => $claim['stock'] + $order['num'], 'sale_num' => $claim['sale_num'] - $order['num'], 'lock' => $claim['lock'] + 1 ]; $res = $claim_model->dataUpdate(['id' => $claim['id'], 'lock' => $claim['lock']], $update); if ($res == 0) { Db::rollback(); return ['code' => 500, 'msg' => '取消失败']; } $specInfo = ClaimSpec::find($order['spec_id']); if ($specInfo) { $specInfo['stock'] = $specInfo['stock'] + $order['num']; $specInfo->save(); } $earInfo = ClaimEarTag::find($order['ear_tag']); if ($earInfo) { $earInfo['status'] = 0; $earInfo->save(); } Db::commit(); return true; } /** * @author chenniang * @DataTime: 2022-08-18 13:53 * @功能说明:退钱 */ public function refundCash($payConfig, $pay_order) { if ($pay_order['pay_price'] <= 0) { return true; } $water_model = new FinanceWater(); $water_model->addWater($pay_order['id'], 2, 1, 1); if ($pay_order['pay_model'] == 1) { //微信退款 $response = orderRefundApi($payConfig, $pay_order['pay_price'], $pay_order['pay_price'], $pay_order['transaction_id']); //如果退款成功修改一下状态 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'] : $pay_order['order_code']; $this->dataUpdate(['id' => $pay_order['id']], ['out_refund_no' => $response['out_refund_no']]); } else { //失败就报错 $discption = !empty($response['err_code_des']) ? $response['err_code_des'] : $response['return_msg']; return ['code' => 500, 'msg' => $discption]; } } elseif ($pay_order['pay_model'] == 2) { $data = [ 'user_id' => $pay_order['user_id'], 'pay_price' => $pay_order['pay_price'], 'id' => $pay_order['id'], 'uniacid' => $pay_order['uniacid'] ]; $water_model = new \app\farm\model\BalanceWater(); $res = $water_model->addWater($data, 13, 1); if ($res == 0) { return false; } } else { //支付宝 $pay_model = new PayModel($payConfig); $res = $pay_model->aliRefund($pay_order['transaction_id'], $pay_order['pay_price']); if (isset($res['alipay_trade_refund_response']['code']) && $res['alipay_trade_refund_response']['code'] == 10000) { $this->dataUpdate(['id' => $pay_order['id']], ['out_refund_no' => $res['alipay_trade_refund_response']['out_trade_no']]); } else { return ['code' => 500, 'msg' => $res['alipay_trade_refund_response']['sub_msg']]; } } return true; } /** * @param $dis * @param int $page * @功能说明:后台下单列表 * @author chenniang * @DataTime: 2022-02-16 14:05 */ public function adminDataList($dis, $page = 10) { $data = $this->alias('a') ->join('lbfarm_order_address b', 'a.id = b.order_id AND b.type=2', 'left') ->where($dis) ->field('a.*,b.user_name,b.mobile') ->group('a.id') ->order('a.id desc') ->paginate($page) ->toArray(); return $data; } /** * @param $dis * @param int $page * @功能说明:后台下单列表 * @author chenniang * @DataTime: 2022-02-16 14:05 */ public function adminDataSelect($dis, $page = 10) { $data = $this->alias('a') ->join('lbfarm_order_address b', 'a.id = b.order_id AND b.type=2', 'left') ->where($dis) ->field('a.*,b.user_name,b.mobile') ->group('a.id') ->order('a.id desc') ->select() ->toArray(); return $data; } /** * @author chenniang * @DataTime: 2022-02-24 16:46 * @功能说明:预支付信息 */ public function payOrderInfo($input, $is_err = 0) { $claim_model = new Claim(); $data = $claim_model->dataInfo(['id' => $input['claim_id'], 'status' => 1]); $input['num'] = !empty($input['num']) ? $input['num'] : 1; $specModel = new ClaimSpec(); $specInfo = $specModel->getSpecInfo($input['spec_id']); $data['stock'] = $specInfo['stock']; $data['price'] = $specInfo['price']; if (empty($data)) { return ['code' => 500, 'msg' => '该产品已下架']; } if ($data['stock'] < $input['num'] && $is_err == 1) { return ['code' => 500, 'msg' => '该产品库存不足']; } if ($data['end_time'] < time() && $is_err == 1) { return ['code' => 500, 'msg' => '该产品认养期已结束']; } $data['pay_price'] = round($data['price'] * $input['num'], 2); $pay_price = $data['init_price'] = $data['pay_price']; if (!empty($input['coupon_id']) && empty($input['collage_start_id'])) { $coupon_record_model = new CouponRecord(); $coupon = $coupon_record_model->dataInfo(['id' => $input['coupon_id'], 'is_claim' => 1, 'status' => 1]); if (!empty($coupon) && $coupon['full'] <= $data['pay_price']) { $data['pay_price'] -= $coupon['discount']; } else { $coupon = []; } } //发起拼团 if (!empty($input['collage_start_id'])) { $collage_model = new ClaimCollage(); $data['collage_start_data'] = $collage_model->getAtvInfo($input['collage_start_id'], $input['claim_id']); if (!empty($data['collage_start_data'])) { $data['pay_price'] = $data['collage_start_data']['price']; } //参与拼团 } elseif (!empty($input['collage_join_id'])) { $collage_model = new CollageStart(); $data['collage_join_data'] = $collage_model->getAtvInfo($input['collage_join_id'], $input['claim_id']); if (!empty($data['collage_join_data'])) { $data['pay_price'] = $data['collage_join_data']['price']; } } $data['pay_price'] = $data['pay_price'] > 0 ? $data['pay_price'] : 0; $data['pay_price'] = round($data['pay_price'], 2); $data['coupon_discount'] = !empty($coupon) ? $coupon['discount'] : 0; $data['coupon_discount'] = $data['coupon_discount'] < $pay_price ? $data['coupon_discount'] : $pay_price; $data['coupon_discount'] = round($data['coupon_discount'], 2); $data['coupon_id'] = !empty($coupon) ? $coupon['id'] : 0; return $data; } /** * @author chenniang * @DataTime: 2022-03-09 17:45 * @功能说明:认养发送可配送提醒 */ public function claimSendNotice($uniacid) { $push_model = new PushMsgModel($uniacid); $dis[] = ['pay_type', '>', 1]; $dis[] = ['have_notice', '=', 0]; $dis[] = ['end_time', '<', time()]; $list = $this->where($dis)->select()->toArray(); if (!empty($list)) { foreach ($list as $value) { $this->dataUpdate(['id' => $value['id']], ['have_notice' => 1]); $push_model->sendMsg($value, 7); } } return true; } }