// +---------------------------------------------------------------------- declare (strict_types=1); namespace app\api\controller; use app\api\model\ExploreSet; use app\api\model\Order as OrderModel; use app\api\model\OrderRefund as OrderRefundModel; use app\api\model\Setting as SettingModel; use app\api\model\User as UserModel; use app\api\service\User as UserService; use app\common\enum\Setting as SettingEnum; use app\common\exception\BaseException; use app\api\model\OrderGoods; use app\console\model\user\CommissionsDetail; /** * 我的店铺 * Class Order * @package app\api\controller */ class Shop extends Controller { /** * 订单详情信息/确认核销 * @param string $hxCode 核销码 * @return array|\think\response\Json * @throws BaseException * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\DbException * @throws \think\db\exception\ModelNotFoundException */ public function writeOff(string $hxCode) { $user = UserService::getCurrentLoginUser(); // 订单详情 $order = OrderModel::detail( [ 'hx_code' => $hxCode, 'shop_id' => $user['shop_id'], ], [ 'goods' => ['image', 'refund'], 'hxUser', 'shops','staffUser' ]); empty($order) && throwError('订单不存在'); OrderModel::restructureGoods($order); if ($this->request->isGet()) { return $this->renderSuccess(['order' => $order]); } //确认核销 if (!$order->writeOff()) { return $this->renderError($order->getError()); } return $this->renderSuccess('核销成功'); } /** * 售后详情信息/确认退款 * @param string $hxRefundCode * @return array * @throws BaseException * @author: zjwhust * @Time: 2021/12/11 13:58 */ public function refundDetail(string $hxRefundCode){ $user = UserService::getCurrentLoginUser(); //读取订单详情的的退款记录 $orderRefund = OrderRefundModel::detail( [ 'hx_refund_code' => $hxRefundCode, 'shop_id' => $user['shop_id'], ], [ 'orderGoodsAll' => ['image', 'staffUser'], 'hxUser', 'orderData' => ['hxUser', 'shops'] ] ); empty($orderRefund) && throwError('退款记录不存在'); $orderRefund = $orderRefund->toArray(); $orderRefund['goods_sku_no'] = ''; if($orderRefund['order_goods_id']>0){ foreach ($orderRefund['orderGoodsAll'] as $key=>$orderGoods){ if($orderGoods['order_goods_id'] == $orderRefund['order_goods_id']){ $orderRefund['goods_sku_no'] = $orderGoods['goods_sku_no']; } } } return $this->renderSuccess(['refund' => $orderRefund]); } /** * 审核售后单(同意/拒绝) * @return array * @throws BaseException * @author: zjwhust * @Time: 2021/12/13 15:58 */ public function refundEdit(){ $param = $this->request->post(); if($param['audit_status']==20){ if(empty($param['refuse_desc'])){ throwError('拒绝退货时退货理由不能为空'); } } $user = UserService::getCurrentLoginUser(); $orderRefund = OrderRefundModel::detail( [ 'hx_refund_code' => $param['hx_refund_code'], 'shop_id' => $user['shop_id'], ],[ 'shops' ]); //同意/拒绝退款的操作 if (!$orderRefund->auditStatus($param,$user)) { return $this->renderError($orderRefund->getError()); } return $this->renderSuccess('操作成功'); } /** * 处理所有用户的推荐官等级 * 1、统计 * @author: zhangq * @Time: 2021/12/14 9:35 */ public function recommender(){ //1、有效期内销售额未达任务值,普通推荐官直接延长过期时间,高级推荐官、超级推荐官降级 //2、有效期内销售额达任务值,直接升级(超级推荐官不升级),并且重新统计销售额度和有效期 $userList = UserModel::where(['role'=>99])->select(); $grade = SettingModel::getItem(SettingEnum::DISTRIBUTOR_GRADE)['distributor']; $grade_one = $grade[1]['cumulative']*10000; $grade_two = $grade[2]['cumulative']*10000; // dd($grade_one); foreach ($userList as $user){ $user['seller_expire'] = !is_string($user['seller_expire'])?$user['seller_expire']: time(); $start = strtotime("-1 year",$user['seller_expire']); $end = $user['seller_expire']; $orderId = CommissionsDetail::getRefundCommOrderId($user['user_id'],$start,$end); $total_amount = OrderModel::field("sum(pay_price + rice_card_money - express_price) as total_amount") ->whereIn('order_id',$orderId) ->whereBetweenTime('create_time', $start, $end) ->find(); $total_pay_price = (int)$total_amount['total_amount']; switch ($user['seller_grade']){ case 1: if($total_pay_price<$grade_one){ if($user['seller_expire']-time()<86400){//小于1天,延长普通推荐官的过期时间 $seller_expire = strtotime("+1 year ".$user['seller_expire']); UserModel::updateBase(['seller_expire'=>$seller_expire],['user_id'=>$user['user_id']]); } } if($total_pay_price>=$grade_one){ if($total_pay_price>=$grade_two){//直接升级为超级推荐官 $seller_expire = strtotime("+1 year"); UserModel::updateBase(['seller_expire'=>$seller_expire,'seller_grade'=>3],['user_id'=>$user['user_id']]); }else{//升级为高级推荐官 $seller_expire = strtotime("+1 year"); UserModel::updateBase(['seller_expire'=>$seller_expire,'seller_grade'=>2],['user_id'=>$user['user_id']]); } } break; case 2: if($total_pay_price<$grade_one){ if($user['seller_expire']-time()<86400){//小于1天,降级为普通推荐官并重置过期时间 $seller_expire = strtotime("+1 year"); UserModel::updateBase(['seller_expire'=>$seller_expire,'seller_grade'=>1],['user_id'=>$user['user_id']]); } } if($total_pay_price>=$grade_one && $total_pay_price<$grade_two){ if($user['seller_expire']-time()<86400) {//小于1天,延长高级推荐官的过期时间 $seller_expire = strtotime("+1 year " . $user['seller_expire']); UserModel::updateBase(['seller_expire' => $seller_expire, 'seller_grade' => 2], ['user_id' => $user['user_id']]); } } if($total_pay_price>=$grade_two){//升级为超级推荐官 $seller_expire = strtotime("+1 year"); UserModel::updateBase(['seller_expire'=>$seller_expire,'seller_grade'=>3],['user_id'=>$user['user_id']]); } break; case 3: if($total_pay_price<$grade_one || $total_pay_price<$grade_two){ if($user['seller_expire']-time()<86400){//小于1天,降级为高级推荐官并重置过期时间 $seller_expire = strtotime("+1 year"); UserModel::updateBase(['seller_expire'=>$seller_expire,'seller_grade'=>2],['user_id'=>$user['user_id']]); } } if($total_pay_price>=$grade_two){ if($user['seller_expire']-time()<86400) {//小于1天,延长超级推荐官的过期时间 $seller_expire = strtotime("+1 year"); UserModel::updateBase(['seller_expire' => $seller_expire, 'seller_grade' => 3], ['user_id' => $user['user_id']]); } } break; } } } /** * 探索、体验详情 * @param string $key * @return array * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\DbException * @throws \think\db\exception\ModelNotFoundException */ public function explores(string $type) { $values = ExploreSet::getItem($type); if (empty($values)){ return $this->renderSuccess(compact('values')); } $values['preview_url'] = $values['ali_url'].'?x-oss-process=video/snapshot,t_1000,m_fast'; return $this->renderSuccess(compact('values')); } }