field('alipay,wechat_pay,ebank_pay')->find(); if(!$setting){ $setting = [ "alipay" => 0, "wechat_pay" => 0, "ebank_pay" => 0, ]; } return $setting; } public function setPaySetting($alipay, $wechat_pay, $ebank_pay){ $setting = [ "alipay" => $alipay, "wechat_pay" => $wechat_pay, "ebank_pay" => $ebank_pay, ]; if(PaySetting::where('id', 1)->value('id')){ $flag = PaySetting::where('id', 1)->update($setting); }else{ $flag = (new PaySetting())->insert($setting); } return $flag; } public function ratioList($rule_name, $user_id, $status, $createtime, $page, $limit){ $where = []; $where['is_deleted'] = 0; if(!empty($rule_name)){ $where['rule_name'] = $rule_name; } if(!empty($user_id)){ $where['user_id'] = $user_id; } if($status !== ""){ $where['status'] = $status; } if(!empty($createtime)){ $where['createtime'] = $createtime; } $search = $this->buildSearch(['rule_name', 'createtime', 'order'], $where); $list = (new AccountRatioSetting())->list($search, $where, $limit, []); $list->each(function ($item){ $item['username'] = Admin::where('id', $item['user_id'])->value('account_name'); return $item; }); $list = $list->toArray(); $start = ($page - 1) * $limit + 1; $end = $page * $limit; if($list['total'] < $end){ $end = $list['total']; } if($list['total'] < $start){ $start = $end = $list['total']; } $list['start'] = $start; $list['end'] = $end; return $list; } public function ratioDetail($id){ $result = AccountRatioDetail::where('setting_id', $id)->select(); if(!$result){ throw new \think\Exception('未查询到该设置详情', 400); } return $result->toArray(); } public function setRatio($ratio = [], $rule_name){ $setting = [ 'user_id' => $this->admin_id, 'rule_name' => $rule_name ]; $id = (new AccountRatioSetting())->insertGetId($setting); $sum_ration = 0; foreach($ratio as $item){ if($item['role_type'] == 1 || $item['role_type'] == 3){ $sum_ration += $item['ratio']; } } if($sum_ration != 100){ throw new \think\Exception('委托方与平台方比例之和未等于100,创建失败', 400); } foreach($ratio as $value){ $res = [ 'role_type' => $value['role_type'], 'cost_type' => $value['cost_type'], 'calculate' => $value['calculate'], 'amount' => $value['amount'], 'ratio' => $value['ratio'], 'setting_id' => $id, ]; (new AccountRatioDetail())->insert($res); } } public function ratioStatus($id){ $setting = AccountRatioSetting::where('id', $id)->where('is_deleted', 0)->find(); if(!$setting){ throw new \think\Exception('未查询到该设置', 400); } if($setting->status == 0){ AccountRatioSetting::where('status', 1)->where('is_deleted', 0)->update(['status' => 0]); $setting->status = 1; $setting->save(); }else{ throw new \think\Exception('修改状态失败,至少要设置一条分账比例!', 400); } } public function closeList($user_name, $close_account, $bank_account, $status, $type, $limit, $page){ $result = (new OrderUser())->alias('user')->join('order o', 'o.batchcode = user.batchcode')->where('user.id', 'in', function ($query) { $query->table("order_user")->field('max(id)')->group('islicode')->select(); })->where(function ($query) use($user_name, $bank_account, $status, $type){ if($type == 2){ $query->where('user.id', -1); } if($user_name){ $query->whereLike('user.name', "%{$user_name}%", 'or')->whereLike('user.islicode', "%{$user_name}%", 'or'); } if($bank_account){ $query->whereLike('user.publicAccount', "%{$bank_account}%"); } if($status){ if($status == 1){ $query->where('o.close_status', 1); }else{ $query->whereIn('o.close_status', '2,3,4,5'); } } })->field('user.islicode,user.name,user.publicAccount,user.bankName,user.userType,o.close_status')->group('islicode')->order('user.id', 'desc')->paginate($limit)->toArray(); $start = ($page - 1) * $limit + 1; $end = $page * $limit; if($result['total'] < $end){ $end = $result['total']; } if($result['total'] < $start){ $start = $end = $result['total']; } $result['start'] = $start; $result['end'] = $end; return $result; } public function getCloseAccountInfo($user_isli){ $userinfo = (new UserService())->getUserInfo($user_isli); return $userinfo; } public function getBillDetail($user_isli, $batchcode, $status, $page, $limit){ $where = []; $where['bill.user_isli'] = $user_isli; if(!empty($batchcode)){ $where['bill.batchcode'] = $batchcode; } $batchcodes = ""; if(!empty($status)){ if($status != 6){ $batchcodes = OrderGoodsDetail::where('close_status', $status)->where('entrust_islicode', $user_isli)->where('is_deleted', 0)->field('batchcode')->select()->toArray(); if($batchcodes){ $batchcodes = implode(',', array_column($batchcodes, 'batchcode')); }else{ $batchcodes = -1; } }else{ $batchcodes = Order::where('buy_islicode', $user_isli)->where('status', 'in', '2,3,4')->field('batchcode')->select()->toArray(); if($batchcodes){ $batchcodes = implode(',', array_column($batchcodes, 'batchcode')); }else{ $batchcodes = -1; } } } $income = UserAccountBill::alias('bill')->join('order order', 'bill.batchcode = order.batchcode')->where(function ($query) use($batchcodes){ if(!empty($batchcodes)){ $query->where('bill.batchcode', 'in', $batchcodes); } })->where(function ($query){ $query->whereOr('bill.thatday_sale_money', '>', 0)->whereOr('bill.thatday_buy_money', '>', 0); })->where($where)->where('order.status', 'in', '2,3,4')->sum('thatday_sale_money'); $disburse = UserAccountBill::alias('bill')->join('order order', 'bill.batchcode = order.batchcode')->where(function ($query) use($batchcodes){ if(!empty($batchcodes)){ $query->where('bill.batchcode', 'in', $batchcodes); } })->where(function ($query){ $query->whereOr('bill.thatday_sale_money', '>', 0)->whereOr('bill.thatday_buy_money', '>', 0); })->where($where)->where('order.status', 'in', '2,3,4')->sum('thatday_buy_money'); $list = UserAccountBill::alias('bill')->join('order order', 'bill.batchcode = order.batchcode')->where(function ($query) use($batchcodes){ if(!empty($batchcodes)){ $query->where('bill.batchcode', 'in', $batchcodes); } })->where(function ($query){ $query->whereOr('bill.thatday_sale_money', '>', 0)->whereOr('bill.thatday_buy_money', '>', 0); })->where($where)->where('order.status', 'in', '2,3,4')->field('bill.*,order.createtime as order_createtime,order.completetime as order_completetime')->order('order_createtime', 'desc')->paginate($limit); $list->each(function ($item) use(&$income, &$disburse){ if(empty($item['order_completetime'])){ $item['order_completetime'] = "-"; } $item['callback_msg'] = OrderGoodsDetail::where('batchcode', $item['batchcode'])->where('is_deleted', 0)->where('entrust_islicode', $item['user_isli'])->value('callback_msg'); if(empty($item['callback_msg'])){ $item['callback_msg'] = '-'; } $order_user = OrderUser::where('batchcode', $item['batchcode'])->where('islicode', $item['user_isli'])->find(); $item['order_user'] = $order_user->toArray(); if(Order::where('batchcode', $item['batchcode'])->where('buy_islicode', $item['user_isli'])->value('id')){ $item['close_status'] = 6; $item['order_completetime'] = Order::where('batchcode', $item['batchcode'])->where('buy_islicode', $item['user_isli'])->value('paymenttime'); $item['callback_msg'] = Order::where('batchcode', $item['batchcode'])->where('buy_islicode', $item['user_isli'])->value('payid'); }else{ $item['close_status'] = OrderGoodsDetail::where('batchcode', $item['batchcode'])->where('entrust_islicode', $item['user_isli'])->where('is_deleted', 0)->value('close_status'); if($item['close_status'] == 5){ $item['callback_msg'] = OrderGoodsDetail::where('batchcode', $item['batchcode'])->where('entrust_islicode', $item['user_isli'])->where('is_deleted', 0)->value('close_serial_number'); }elseif($item['close_status'] == 2){ $item['callback_msg'] = '受理成功'; } } // $disburse += Order::where('buy_islicode', $item['user_isli'])->where('pay_status', 2)->sum('total_money'); // $disburse += $item['thatday_buy_money']; // $income += $item['thatday_sale_money']; // $money = OrderGoodsDetail::alias('detail')->join('order order', 'order.batchcode = detail.batchcode') // ->where('detail.entrust_islicode', $item['user_isli']) // ->where('detail.is_deleted', 0) // ->where('order.pay_status', 2)->sum('detail.money'); // $income += $money; return $item; }); $list = $list->toArray(); $start = ($page - 1) * $limit + 1; $end = $page * $limit; if($list['total'] < $end){ $end = $list['total']; } if($list['total'] < $start){ $start = $end = $list['total']; } $list['start'] = $start; $list['end'] = $end; $list['income'] = round($income, 2); $list['disburse'] = round($disburse, 2); return $list; } }