1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474 |
- <?php
- namespace app\api\controller\v1;
- use app\AddressValidate;
- use app\model\admin\MemberLevel;
- use app\model\admin\Product;
- use app\model\admin\SiteLevel;
- use app\model\api\ExpCost;
- use app\model\api\Member;
- use app\model\api\MemberDetail;
- use app\model\api\MemberShop;
- use app\model\api\Order;
- use app\model\api\OrderInfo;
- use app\model\api\OrderInfoAsw;
- use app\model\api\OrderInfoDd;
- use app\model\api\PayTrade;
- use app\model\api\Recharge;
- use app\model\api\SiteDetail;
- use app\model\api\SiteProduct;
- use app\model\api\Tx;
- use app\model\api\Warehouse;
- use app\model\api\WeixinPushUser;
- use app\model\api\UserAddress;
- use app\model\api\SystemCity;
- use app\model\system\MemberFollow;
- use app\model\system\News;
- use app\Request;
- use app\api\controller\AuthController;
- use library\services\UtilService;
- use library\utils\alipay;
- use library\utils\Qiniu;
- use library\utils\Region;
- use think\db\exception\DbException;
- use think\db\Where;
- use think\facade\Db;
- use think\Image;
- use Alipay\EasySDK\Kernel\Factory;
- use Alipay\EasySDK\Kernel\Config;
- use think\exception\ValidateException;
- class User extends AuthController
- {
- /**
- * 地址 获取单个
- * @param Request $request
- * @param $id
- * @return mixed
- * @throws DataNotFoundException
- * @throws ModelNotFoundException
- * @throws DbException
- */
- public function address(Request $request, $id)
- {
- $addressInfo = [];
- if ($id && is_numeric($id) && UserAddress::be(['is_del' => 0, 'id' => $id, 'uid' => $request->user['uid']])) {
- $addressInfo = UserAddress::find($id)->toArray();
- }
- return app('json')->successful($addressInfo);
- }
- /**
- * 地址列表
- * @param Request $request
- * @param $page
- * @param $limit
- * @return mixed
- * @throws \Exception
- */
- public function address_list(Request $request)
- {
- list($page, $limit) = UtilService::getMore([['page', 0], ['limit', 20]], $request, true);
- $list = UserAddress::getUserValidAddressList($request->user['uid'], $page, $limit, 'id,real_name,phone,province,city,district,detail,is_default');
- return app('json')->successful($list);
- }
- /**
- * 设置默认地址
- *
- * @param Request $request
- * @return mixed
- * @throws \Exception
- */
- public function address_default_set(Request $request)
- {
- list($id) = UtilService::getMore([['id', 0]], $request, true);
- if (!$id || !is_numeric($id)) return app('json')->fail('参数错误!');
- if (!UserAddress::be(['is_del' => 0, 'id' => $id, 'uid' => $request->user['uid']]))
- return app('json')->fail('地址不存在!');
- $res = UserAddress::setDefaultAddress($id, $request->user['uid']);
- if (!$res)
- return app('json')->fail('地址不存在!');
- else
- return app('json')->successful();
- }
- /**
- * 获取默认地址
- * @param Request $request
- * @return mixed
- */
- public function address_default(Request $request)
- {
- $defaultAddress = UserAddress::getUserDefaultAddress($request->user['uid'], 'id,real_name,phone,province,city,district,detail,is_default');
- if ($defaultAddress) {
- $defaultAddress = $defaultAddress->toArray();
- return app('json')->successful('ok', $defaultAddress);
- }
- return app('json')->successful('empty', []);
- }
- /**
- * 修改 添加地址
- * @param Request $request
- * @return mixed
- * @throws \Exception
- */
- public function address_edit(Request $request)
- {
- $addressInfo = UtilService::getMore([
- ['address', []],
- ['is_default', false],
- ['real_name', ''],
- ['post_code', ''],
- ['phone', ''],
- ['detail', ''],
- ['id', 0],
- ['type', 0]
- ], $request);
- if (!isset($addressInfo['address']['province'])) return app('json')->fail('收货地址格式错误!');
- if (!isset($addressInfo['address']['city'])) return app('json')->fail('收货地址格式错误!');
- if (!isset($addressInfo['address']['district'])) return app('json')->fail('收货地址格式错误!');
- if (!isset($addressInfo['address']['city_id']) && $addressInfo['type'] == 0) {
- return app('json')->fail('收货地址格式错误!请重新选择!');
- } else if ($addressInfo['type'] == 1) {
- $city = $addressInfo['address']['city'];
- $cityId = SystemCity::where('name', $city)->where('parent_id', '<>', 0)->value('city_id');
- if ($cityId) {
- $addressInfo['address']['city_id'] = $cityId;
- } else {
- if (!($cityId = SystemCity::where('parent_id', '<>', 0)->where('name', 'like', "%$city%")->value('city_id'))) {
- return app('json')->fail('收货地址格式错误!修改后请重新导入!');
- }
- }
- }
- $addressInfo['province'] = $addressInfo['address']['province'];
- $addressInfo['city'] = $addressInfo['address']['city'];
- $addressInfo['city_id'] = $addressInfo['address']['city_id'] ?? 0;
- $addressInfo['district'] = $addressInfo['address']['district'];
- $addressInfo['is_default'] = (int)$addressInfo['is_default'] == true ? 1 : 0;
- $addressInfo['uid'] = $request->user['uid'];
- unset($addressInfo['address'], $addressInfo['type']);
- try {
- validate(AddressValidate::class)->check($addressInfo);
- } catch (ValidateException $e) {
- return app('json')->fail($e->getError());
- }
- if ($addressInfo['id'] && UserAddress::be(['id' => $addressInfo['id'], 'uid' => $request->user['uid'], 'is_del' => 0])) {
- $id = $addressInfo['id'];
- unset($addressInfo['id']);
- if (UserAddress::edit($addressInfo, $id, 'id')) {
- if ($addressInfo['is_default'])
- UserAddress::setDefaultAddress($id, $request->user['uid']);
- return app('json')->successful();
- } else
- return app('json')->fail('编辑收货地址失败!');
- } else {
- $addressInfo['add_time'] = time();
- if ($address = UserAddress::create($addressInfo)) {
- if ($addressInfo['is_default']) {
- UserAddress::setDefaultAddress($address->id, $request->user['uid']);
- }
- return app('json')->successful(['id' => $address->id]);
- } else {
- return app('json')->fail('添加收货地址失败!');
- }
- }
- }
- /**
- * 删除地址
- *
- * @param Request $request
- * @return mixed
- * @throws \Exception
- */
- public function address_del(Request $request)
- {
- list($id) = UtilService::getMore([['id', 0]], $request, true);
- if (!$id || !is_numeric($id)) return app('json')->fail('参数错误!');
- if (!UserAddress::be(['is_del' => 0, 'id' => $id, 'uid' => $request->user['uid']]))
- return app('json')->fail('地址不存在!');
- if (UserAddress::edit(['is_del' => '1'], $id, 'id'))
- return app('json')->successful();
- else
- return app('json')->fail('删除地址失败!');
- }
- /**
- * 获取配置
- */
- public function index(Request $request)
- {
- $post = [];
- //获取公告
- [$page, $data] = (new News)->getList(0, ['cate_id' => 2,'is_show'=>1], '6', '*', 'time desc');
- $newData = UtilService::getParam([
- 'id',
- 'title',
- ['time', 'time', 'date("Y-m-d",$1)'],
- ], $data);
- $post['news'] = $newData;
- //快递费用
- $expCode = new ExpCost;
- $expData = $expCode->getExpCostData($request->site['sassid'], $request->user['levelid']);
- $post['expData'] = $expData;
- //
- //总金额
- $total = (new Order)
- ->where('uid', $request->user['uid'])
- ->where('status', '>', 0)
- ->sum('all_price');
- $post['total'] = $total;
- //未支付
- $unpaid = (new Order)
- ->where('uid', $request->user['uid'])
- ->where('status', 0)
- ->count();
- $post['unpaid'] = $unpaid;
- //打单子中
- $inOrder = (new Order)
- ->where('uid', $request->user['uid'])
- ->where('status', 1)
- ->count();
- $post['inOrder'] = $inOrder;
- //打单子中
- $sendOrder = (new Order)
- ->where('uid', $request->user['uid'])
- ->where('status', 2)
- ->count();
- $post['sendOrder'] = $sendOrder;
- //异常订单
- $abnormalOrder = (new Order)
- ->where('uid', $request->user['uid'])
- ->where('status', 9)
- ->count();
- $post['abnormalOrder'] = $abnormalOrder;
- $dateAr = [];
- $order = new Order;
- //8天订单量
- for ($i = 0; $i < 8; $i++) {
- $time = strtotime('-' . $i . ' day');
- $date = date('Y-m-d', $time);
- $count = $order
- ->where('uid', $request->user['uid'])
- ->where('sassid', $request->site['sassid'])
- ->whereDay('time', $date)
- ->count();
- $dateAr[] = ['count' => $count, 'name' => $date];
- }
- $post['date'] = array_reverse($dateAr);
- //绑定数据
- $wxPush = (new WeixinPushUser)
- ->field("avatar,nickname")
- ->where('sassid', $request->site['sassid'])
- ->where('uid', $request->user['uid'])
- ->find();
- if (empty($wxPush)) {
- $token = base64_encode(crypto_encrypt($request->user['uid'] . "|" . time(), 'md5_user_token'));
- $url = \config('app')['API_URL']
- . '/api/bind/system_bind?token=' . $token . '&secret_key=' . $request->site['secret_key'];
- $post['bind'] = false;
- $post['bind_url'] = $url;
- } else {
- $post['bind'] = true;
- }
- return app('json')->success($post);
- }
- /**
- * 获取个人信息
- */
- public function init(Request $request)
- {
- $user = (new Member)->where('uid',$request->user['uid'])->whereTime('lasttime', 'today')->find();
- if(!$user){
- (new Member)->where('uid',$request->user['uid'])->save(['lasttime'=>time()]);
- $data['uid'] = $request->user['uid'];
- $data['ip'] = $request->ip();
- $data['time'] = time();
- Db::name("login_record")->insert($data);
- }
- $info = [
- 'uid' => $request->user['uid'],
- 'mobile' => $request->user['mobile'],
- 'name' => $request->user['name'],
- 'nickname' => $request->user['nickname'],
- 'avatar' => $request->user['avatar'],
- 'money' => $request->user['money'],
- 'openid' => $request->user['openid'],
- 'routine_openid' => $request->user['routine_openid']
- ];
- return app('json')->success($info);
- }
- /**
- * 获取仓库列表
- * @param Request $request
- */
- public function warehouse(Request $request)
- {
- $warehouse = new Warehouse;
- $expCode = new ExpCost;
- $expCode->getExpCostData($request->site['sassid'], $request->user['levelid']);
- $data = $warehouse->field("name,id,platform_ids,address,exp_time,exp_star,tran_star,beijing,shanghai,qinghai")
- ->where("status", 1)
- ->whereIn("sassid",[0,$request->site['sassid']])
- ->order("sassid", "desc")
- ->order("seq", "desc")
- ->select()
- ->toArray();
- $platform = (new \app\model\system\Platform());
- foreach ($data as $k => $v) {
- $idsAr = explode(',', $v['platform_ids']);
- //平台
- $data[$k]['platform'] = array_map(
- function ($item) use ($platform) {
- return $platform->getPlatformId($item, '*');
- }, $idsAr);
- //邮费模板
- $data[$k]['expCode'] = $expCode->getWareHouseExpCost($v['id'], '*');
- }
- return app('json')->success($data);
- }
- /**
- * 提交
- * @param Request $request
- */
- public function subOrder(Request $request)
- {
- [$orderAr, $proId, $warehouseId, $expId, $platformId, $mono, $extraFreight] = UtilService::getMore([
- ['orderAr', '', 'empty', '参数错误'],
- ['proId', '', 'empty', '参数错误'],
- ['warehouseId', '', 'empty', '参数错误'],
- ['expId', '', 'empty', '请选择运送方式'],
- ['platformId', '', 'empty', '参数错误'],
- ['mono', ''],
- ['extraFreight', 0]
- ], $request, true);
- $expPrice = 0; //邮费费用
- $expressId = 0; //快递ID
- $siteExpCommission = 0;//分站佣金费用
- //检测数据
- $sitePro = (new SiteProduct)->getItem($proId);
- if ($sitePro['count'] <= 0 || count($orderAr) > $sitePro['count']) {
- return app('json')->fail("订单产品数量不足,请重新选择!");
- }
- //判断仓库是否可以下单
- $warehouseIds = explode(',',$sitePro['warehouse_ids']);
- if(!in_array($warehouseId,$warehouseIds)) {
- return app('json')->fail("请重新选择产品!");
- }
- $warehouse = (new Warehouse)->where('id',$warehouseId)->find();
- if(empty($warehouse) || empty($warehouse['status'])) {
- return app('json')->fail("分仓已下架,请选择其他分仓");
- }
- $region = new Region;
- //检查地址数据
- foreach ($orderAr as $k => $v) {
- $rData = $region->getRegion($v['address']);
- if (empty($rData['province']) ||
- empty($rData['city']) ||
- empty($rData['area'])
- ) {
- // return app('json')->fail('第' . (intval($k) + 1) .'行,'.$v['address'] .'地址信息有误,请重新检查省市区!');
- }
- }
- //订单总数
- $orderCount = count($orderAr);
- $price = $sitePro['price'] * $orderCount;
- $siteProCommission = $sitePro['price'] > $sitePro['commission'] ? ($sitePro['price'] - $sitePro['commission']) : 0;//分站佣金
- //快递信息
- $expCode = new ExpCost;
- $expCode->getExpCostData($request->site['sassid'], $request->user['levelid']);
- $expData = array_filter($expCode->getWareHouseExpCost($warehouseId, '*'), function ($item) use ($expId) {
- if ($item['id'] == $expId) {
- return true;
- }
- });
- //如果有快递信息,分析分账提成 || 用户推荐佣金
- if (!empty($expData)) {
- $expressId = $expData[0]['express_id'];
- $expPrice = $expData[0]['money'];
- //分站金额
- $money = $expCode->getSysExpCostPrice($expressId, $warehouseId, $request->site['sassid']);
- $siteExpCommission = empty($money) ? 0 : ($expPrice > $money ? ($expPrice - $money) : 0);
- }
- if (empty($expressId)) {
- return app('json')->fail("本次邮寄方式不存在,请重新选择邮寄方式。");
- }
- //获取低价
- $floorExp = $expCode
- ->where('warehouse_id', $warehouseId)
- ->where('express_id', $expressId)
- ->where('sassid', 0)
- ->where('level_id', -1)
- ->value('money');
- //会员店铺
- $shopAr = [];
- foreach ($orderAr as $v) {
- $shop_name = trim($v['shop_name']);
- if (!empty($shop_name)) {
- $shopAr[$shop_name] = ['name' => $shop_name];
- }
- }
- try {
- Order::beginTrans();
- $mShop = new MemberShop;
- foreach ($shopAr as $k => $v) {
- $shopId = $mShop->where('name', $k)
- ->where('uid', $this->user['uid'])
- ->value('id');
- if (empty($shopId)) $shopId = $mShop->insertGetId(['name' => $k, 'uid' => $this->user['uid']]);
- $shopAr[$k]['id'] = $shopId;
- }
- //下单
- $save['order_id'] = 'TF' . time() . sprintf('%04d', rand(0, 1000)) . $request->user['uid'];//订单号
- $save['all_price'] = $price + $expPrice * $orderCount + $extraFreight;//总金额 [价格 + 快递*产品数量]
- $save['pro_site_commission'] = $siteProCommission * $orderCount;//产品分站佣金
- $save['exp_site_commission'] = $siteExpCommission * $orderCount;//快递分站佣金
- $save['site_commission'] = $save['pro_site_commission'] + $save['exp_site_commission'];//分站提成
- $save['pro_id'] = $sitePro['id'];//产品ID
- $save['platform_id'] = $platformId;//来源[拼多多,淘宝]
- $save['warehouse_id'] = $warehouseId;//仓库来源
- $save['status'] = 0;//状态
- $save['time'] = time();
- $save['express_id'] = $expressId;//快递类型
- $save['sassid'] = $request->site['sassid'];//分站
- $save['mono'] = $mono;//备注
- $save['pro_price'] = $price;//产品价格
- $save['uid'] = $request->user['uid'];
- $oId = (new Order)->insertGetId($save);
- foreach ($orderAr as $k => $v) {
- $shop_name = trim($v['shop_name']);
- $d = [];
- $d['o_id'] = $oId;
- $d['in_order_id'] = $save['order_id'] . '-' . ($k + 1);
- $d['out_order_id'] = $v['out_order_id'];
- $d['name'] = $v['name'];
- $d['mobile'] = $v['mobile'];
- $d['address'] = $v['address'];
- $d['pro_price'] = $sitePro['price'];
- $d['pro_id'] = $sitePro['id'];
- $d['exp_id'] = $expressId;
- if(strstr($d['address'], '北京')){
- $d['exp_price'] = $expPrice + $warehouse['beijing'];
- }else if(strstr($d['address'], '上海')){
- $d['exp_price'] = $expPrice + $warehouse['shanghai'];
- }else if(strstr($d['address'], '青海')){
- $d['exp_price'] = $expPrice + $warehouse['qinghai'];
- }else{
- $d['exp_price'] = $expPrice;
- }
- $d['money'] = $sitePro['price'] + $d['exp_price'];
- $d['sassid'] = $request->site['sassid'];
- $d['uid'] = $request->user['uid'];
- $d['time'] = time();
- $d['platform_id'] = $platformId;
- $d['warehouse_id'] = $warehouseId;
- $d['pro_site_commission'] = $siteProCommission;
- $d['exp_site_commission'] = $siteExpCommission;
- $d['site_commission'] = $siteProCommission + $siteExpCommission;
- $d['exp_floor_price'] = empty($floorExp) ? 0 : $floorExp;
- $d['shop_id'] = empty($shop_name) ? 0 : $shopAr[$shop_name]['id'];
- (new OrderInfo)->insert($d);
- }
- Order::commitTrans();
- } catch (DbException $db) {
- Order::rollbackTrans();
- return app('json')->fail("下单失败,理由:" . $db->getMessage());
- }
- return app('json')->success([
- 'order_id' => $save['order_id'],
- 'price' => $save['all_price'],
- ]);
- }
- /**
- * 获取支单独单号
- * @param Request $request
- */
- public function getPayOrder(Request $request)
- {
- [$orderId] = UtilService::getMore([
- ['order_id', '', 'empty', '参数错误'],
- ], $request, true);
- $data = Order::where('order_id', $orderId)->find();
- if (empty($data)) {
- return app('json')->fail('找不到订单信息');
- }
- //订单已付款
- if (!empty($data['is_pay'])) {
- return app('json')->fail('订单已经支付成功');
- }
- $orderCount = (new OrderInfo)->where('o_id', $data['id'])->count();
- $sitePro = (new SiteProduct)->getProItem($data['pro_id']);
- if ($sitePro['count'] <= 0 || $orderCount > $sitePro['count']) {
- return app('json')->fail("订单产品数量不足,请重新选择!");
- }
- $post = [];
- $post['order_id'] = $orderId;
- $post['count'] = $orderCount;
- $post['title'] = $sitePro['title'];
- $post['img'] = $sitePro['img'];
- $post['all_price'] = $data['all_price'];
- $post['user_money'] = $request->user['money'];
- return app('json')->success($post);
- }
- /**
- * 余额支付
- * @param Request $request
- */
- public function balancePay(Request $request)
- {
- [$orderId] = UtilService::getMore([
- ['order_id', '', 'empty', '参数错误'],
- ], $request, true);
- $data = Order::where('order_id', $orderId)->find();
- if (empty($data)) {
- return app('json')->fail('找不到订单信息');
- }
- if (empty($data)) {
- return app('json')->fail('找不到订单信息');
- }
- //订单已付款
- if (!empty($data['is_pay'])) {
- return app('json')->fail('订单已经支付成功');
- }
- if ($data['all_price'] > $request->user['money']) {
- return app('json')->fail('余额不足!');
- }
- $infoCount = OrderInfo::where('o_id', $data['id'])->count();
- //平台分佣
- if ($request->site['tj_sassid'] > 0) {
- (new ExpCost)
- ->difference($request->site, [
- 'count' => $infoCount,
- 'user' => $request->user['mobile'],
- 'money' => $data['site_commission'],
- 'warehouse_id' => $data['warehouse_id'],
- 'express_id' => $data['express_id'],
- 'sassid' => $request->site['tj_sassid'],
- 'orderid' => $orderId,
- ]);
- }
- $bool = (new MemberDetail)->consumption($data['all_price'], $request->user['uid'], [
- 'name' => $request->user['mobile'],
- 'order_id' => $orderId,
- 'allmoney' => $data['all_price'],
- 'money' => $data['all_price'],
- ], $request->site['sassid']);
- //提交数据
- if ($bool) {
- //判断是否有推荐人
- if ($request->user['i_uid'] > 0) {
- //每单提成
- $money = $infoCount * 0.05;
- (new MemberDetail)->income(
- $money,
- $request->user['i_uid'],
- ['user' => $request->user['mobile'], 'order_id' => $orderId, 'count' => $infoCount, 'money' => $money],
- $request->site['sassid']
- );
- }
- //减库存
- (new Product)->where('id', $data['pro_id'])->dec('count', $infoCount)->inc('sales', $infoCount)->update();
- //改状态
- Order::where('order_id', $orderId)->save([
- 'is_pay' => 1,
- 'pay_time' => time(),
- 'status' => 1,
- ]);
- //修改子订单数据
- OrderInfo::where('o_id', $data['id'])->save([
- 'status' => 1,
- ]);
- //设置维护人
- $last_con_time = (new Member)->where('uid', $request->user['uid'])->value('last_con_time');
- if($last_con_time == 0){
- $follow = (new MemberFollow)->where('uid', $request->user['uid'])->where('admin_id', 99)->find();
- if($follow){
- (new Member)->where('uid', $request->user['uid'])->save(['admin_id' => 99]);
- }else{
- (new Member)->where('uid', $request->user['uid'])->save(['admin_id' => 100]);
- }
- }
- (new Member)->where('uid', $request->user['uid'])->save(['last_con_time' => time()]);
- //平台佣金
- if ($data['site_commission'] > 0) {
- (new SiteDetail)->commission($data['site_commission'],
- $request->site['sassid'],
- $orderId,
- ['user' => $request->user['mobile'],
- 'pro_money' => $data['pro_site_commission'],
- 'exp_money' => $data['exp_site_commission'],
- 'order_id' => $orderId,
- 'count' => $infoCount,
- 'money' => $data['site_commission'],
- ]
- );
- }
- return app('json')->success(['msg' => '支付成功']);
- } else {
- return app('json')->fail('支付失败');
- }
- }
- /**
- * 订单列表-初始化数据
- * @param Request $request
- */
- public function orderInit(Request $request)
- {
- //总金额
- $total = (new Order)
- ->where('uid', $request->user['uid'])
- ->where('status', '>', 0)
- ->sum('all_price');
- //未支付
- $unpaid = (new Order)
- ->where('uid', $request->user['uid'])
- ->where('status', 0)
- ->count();
- //打单中
- $inOrder = (new Order)
- ->where('uid', $request->user['uid'])
- ->where('status', 1)
- ->count();
- //已出单
- $sendOrder = (new Order)
- ->where('uid', $request->user['uid'])
- ->where('status', 2)
- ->count();
- //异常订单
- $abnormalOrder = (new Order)
- ->where('uid', $request->user['uid'])
- ->where('status', 9)
- ->count();
- //取消订单
- $cancelOrder = (new Order)
- ->where('uid', $request->user['uid'])
- ->where('status', -1)
- ->count();
- //退货订单
- $refundOrder = (new Order)
- ->where('uid', $request->user['uid'])
- ->where('status', -2)
- ->count();
- //子订单
- $subOrder = (new OrderInfo)
- ->where('uid', $request->user['uid'])
- ->where('status', '>', 0)
- ->count();
- //
- return app('json')->success([
- 'total' => $total,
- 'unpaid' => $unpaid,
- 'inorder' => $inOrder,
- 'sendOrder' => $sendOrder,
- 'abnormalOrder' => $abnormalOrder,
- 'cancelOrder' => $cancelOrder,
- 'refundOrder' => $refundOrder,
- 'subOrder' => $subOrder,
- ]);
- }
- /**
- * 子订单数据
- * @param Request $request
- */
- public function orderSubItem(Request $request)
- {
- $pageSize = 20;
- $post = UtilService::getMore(
- [
- ['id', ''],
- ['page', 1],
- ['order_id', ''],
- ['mobile', ''],
- ['name', ''],
- ['shop_id', ''],
- ], $request
- );
- $where = $post;
- $where['id'] = $post['id'];
- $where['uid'] = $request->user['uid'];
- list($pageCount, $data) = (new OrderInfo)->getList($post['page'], $where, $pageSize, "*", "id desc");
- $result = UtilService::getParam([
- "id",
- "exp_name",
- "order_id",
- "out_order_id",
- "name",
- "mobile",
- "address",
- "mono",
- "shop_name",
- "time",
- "send_time",
- "exp_number",
- "msg_err",
- "money",
- "status",
- ['_send_time', 'send_time', 'date("Y-m-d H:i:s",$1)']
- ], $data);
- return app('json')->success([
- 'list' => $result,
- 'pageCount' => $pageCount,
- 'pageSize' => $pageSize,
- 'page' => $post['page'],
- ]);
- }
- /**
- * 导出数据
- * @param Request $request
- */
- public function orderDown(Request $request)
- {
- $region = new Region;
- $post = UtilService::getMore([
- ['id', '', 'empty', '参数错误'],
- ['shop_id', ''],
- ], $request);
- $where = [];
- $where['sassid'] = $request->site['sassid'];
- $where['uid'] = $request->user['uid'];
- $where['id'] = $post['id'];
- if (!empty($post['shop_id'])) $where['shop_id'] = $post['shop_id'];
- $data = (new OrderInfo)->getAllList($where, 'id desc');
- $tAr = [];
- foreach ($data as $v) {
- $d = [];
- $d['name'] = $v['name'];
- $d['mobile'] = $v['mobile'];
- $d['out_order_id'] = $v['out_order_id'];
- $d['address'] = $v['address'];
- $d['exp_name'] = $v['exp_name'];
- $d['exp_number'] = $v['exp_number'];
- $d['platform_name'] = $v['platform_name'];
- $d['pro_name'] = $v['pro_name'];
- $d['send_time'] = $v['send_time'] <= 0 ? '' : date('Y-m-d H:i:s', $v['send_time']);
- // $v['address'] = '贵州省 贵阳市 观山湖区 世纪城社区服务中心福建街世纪城龙耀苑10栋12楼(000000)';
- $rData = $region->getRegion($v['address']);
- $d['address'] = $rData['address'];
- $d['province'] = $rData['province'];
- $d['shop_name'] = $v['shop_name'];
- $d['city'] = $rData['city'];
- $d['area'] = $rData['area'];
- $tAr[] = $d;
- }
- return app('json')->success($tAr);
- }
- /**
- * 升级显示
- * @param Request $request
- */
- public function rechargeXinit(Request $request)
- {
- $inAr = [
- ['name' => '30元', 'v' => 30, 'upname' => ''],
- ['name' => '10000元', 'v' => 10000, 'upname' => ''],
- ];
- $siteLevel = (new SiteLevel)
- ->field("sl.update_money,l.name")
- ->alias("sl")
- ->join("member_level l", "l.id = sl.level_id")
- ->where('sl.sass_id', $request->site['sassid'])
- ->select();
- foreach ($siteLevel as $v) {
- if (!empty($v['update_money']) && $v['update_money'] > 0) {
- $update_money = floatval($v['update_money']);
- $len = 0;
- $isAdd = false;
- foreach ($inAr as $kk => $vv) {
- $val = floatval($vv['v']);
- if ($update_money > $val) {
- $len = $kk;
- $isAdd = true;
- }
- if ($update_money == $val) {
- $len = $kk;
- $isAdd = false;
- break;
- }
- }
- if ($isAdd) {
- array_splice($inAr, $len, 0, [[
- 'name' => $v['update_money'] . '元',
- 'v' => $update_money,
- 'upname' => $v['name'],
- ]]);
- } else {
- $inAr[$len]['upname'] = $v['name'];
- }
- }
- }
- //排序
- $flag = [];
- foreach ($inAr as $v){
- $flag[] = $v['v'];
- }
- array_multisort($flag,SORT_ASC,$inAr);
- return app('json')->success($inAr);
- }
- /**
- * 充值
- * @param Request $request
- */
- public function rechargeX(Request $request)
- {
- $post = UtilService::getMore([
- ['v', '0', 'empty', '请选择充值金额'],
- ], $request);
- //充值
- try {
- Recharge::beginTrans();
- $recharge = new Recharge();
- $d = [];
- $d['order_id'] = 'RE' . time() . sprintf('%04d', rand(0, 1000)) . $request->user['uid'];
- $d['v'] = $post['v'];
- $d['status'] = '0';
- $d['time'] = time();
- $d['sassid'] = $request->site['sassid'];
- $d['uid'] = $request->user['uid'];
- $recharge->insert($d);
- //生成支付凭证
- (new PayTrade)->mkTrade([
- 'out_trade_no' => $d['order_id'],
- 'uid' => $request->user['uid'],
- 'tag' => 'alipay',
- 'type' => 'recharge',
- 'money' => $post['v'],
- 'content' => '会员充值' . $d['v'] . '元',
- 'sassid' => $request->site['sassid'],
- ]);
- Recharge::commitTrans();
- $url = config('app.API_URL') . '/api/ott/alipay?order_id=' . $d['order_id'];
- return app('json')->success(['url' => $url, 'orderId' => $d['order_id']]);
- } catch (DbException $db) {
- Recharge::rollbackTrans();
- return app('json')->fail("充值失败,请联系客服人员");
- }
- }
- /**
- * 检查充值
- * @param Request $request
- */
- public function checkRecharge(Request $request)
- {
- $post = UtilService::getMore([
- ['order_id', '0', 'empty', '订单不存在'],
- ], $request);
- $recharge = new Recharge();
- $data = $recharge->where('order_id', $post['order_id'])->find();
- if (empty($data)) {
- return app('json')->fail('无充值订单');
- }
- if (empty($data['status'])) {
- return app('json')->fail('');
- }
- return app('json')->success(['data' => $data]);
- }
- /**
- * 资金情况
- * @param Request $request
- */
- public function rechargeInit(Request $request)
- {
- $info = [
- 'money' => $request->user['money'],
- 'tx_money' => $request->user['tx_money'],//提现金额
- 'in_money' => (new Tx)->where('uid', $request->user['uid'])->where('is_type', 0)->sum('money'),
- ];
- return app('json')->success($info);
- }
- /**
- * 提现列表
- * @param Request $request
- */
- public function txList(Request $request)
- {
- $pageSize = 10;
- $post = UtilService::getMore(
- [
- ['page', 1],
- ], $request
- );
- $where['sassid'] = $request->site['sassid'];
- $where['uid'] = $request->user['uid'];
- $tx = new Tx();
- list($pageCount, $data) = $tx->getList($post['page'], $where, $pageSize, "*", "time desc");
- $result = UtilService::getParam([
- "id",
- "money",
- "bank",
- 'name',
- 'code',
- "is_type",
- ["time", "time", "date('Y-m-d H:i:s',$1)"],
- ], $data);
- return app('json')->success([
- 'list' => $result,
- 'pageCount' => $pageCount,
- 'pageSize' => $pageSize,
- 'page' => $post['page'],
- ]);
- }
- /**
- * 操作明细
- * @param Request $request
- */
- public function detailList(Request $request)
- {
- $pageSize = 10;
- $post = UtilService::getMore(
- [
- ['page', 1],
- ['tabType', 'all'],
- ], $request
- );
- $where['sassid'] = $request->site['sassid'];
- $where['uid'] = $request->user['uid'];
- if (!empty($post['tabType']) && $post['tabType'] != 'all') {
- $where['code'] = $post['tabType'];
- }
- $detail = new MemberDetail();
- list($pageCount, $data) = $detail->getList($post['page'], $where, $pageSize, "*", "time desc");
- $result = UtilService::getParam([
- "id",
- "code",
- "v",
- 'title',
- 'content',
- "type",
- ["time", "time", "date('Y-m-d H:i:s',$1)"],
- ], $data);
- return app('json')->success([
- 'list' => $result,
- 'pageCount' => $pageCount,
- 'pageSize' => $pageSize,
- 'page' => $post['page'],
- ]);
- }
- /**
- * 我要提现
- * @param Request $request
- */
- public function subTx(Request $request)
- {
- $post = UtilService::getMore(
- [
- ['bank', "", "empty", "请输入到账账号"],
- ['money', '0', "empty", "请输入提现金额"],
- ['name', '', 'empty', '请输入真实姓名'],
- ], $request
- );
- //提现金额
- if ($request->user['tx_money'] < $post['money']) {
- return app('json')->fail("余额不足,无法提现!");
- }
- (new Tx)
- ->insert([
- 'uid' => $request->user['uid'],
- 'money' => $post['money'],
- 'bank' => '支付宝',
- 'name' => $post['name'],
- 'code' => $post['bank'],
- 'time' => time(),
- 'is_type' => 0,
- 'sassid' => $request->site['sassid'],
- ]);
- return app('json')->success(
- '提现成功,请等待打款!'
- );
- }
- /**
- * 订单详情数据
- * @param Request $request
- */
- public function orderInfoItem(Request $request)
- {
- $post = UtilService::getMore(
- [
- ['id', "", "empty", "参数错误"],
- ], $request
- );
- $orderInfo = (new OrderInfo())->getItem($post['id']);
- if (empty($orderInfo)) {
- return app('json')->fail('找不到订单数据');
- }
- return app('json')->success([
- 'id' => $orderInfo['id'],
- 'out_order_id' => $orderInfo['out_order_id'],
- 'exp_name' => $orderInfo['exp_name'],
- 'exp_number' => $orderInfo['exp_number'],
- 'pro_name' => $orderInfo['pro_title'],
- "mono" => $orderInfo['mono'],
- ]);
- }
- /*
- * 问题件反馈
- */
- public function subOrderInfoMono(Request $request)
- {
- $post = UtilService::getMore(
- [
- ['id', "", "empty", "参数错误"],
- ['mono', ""],
- ], $request
- );
- $orderInfo = (new OrderInfo())->getItem($post['id']);
- if (empty($orderInfo)) {
- return app('json')->fail('找不到订单数据');
- }
- (new OrderInfo)->where('id', $orderInfo['id'])->save([
- 'mono' => $post['mono'],
- ]);
- $data = (new OrderInfoAsw)
- ->where('o_id', $orderInfo['o_id'])
- ->where('of_id', $orderInfo['id'])
- ->where('status', 0)
- ->find();
- if (!empty($data)) {
- (new OrderInfoAsw)->Where('id', $data['id'])->save(['mono' => $post['mono']]);
- } else {
- (new OrderInfoAsw)->insert([
- 'o_id' => $orderInfo['o_id'],
- 'of_id' => $orderInfo['id'],
- 'mono' => $post['mono'],
- 'time' => time(),
- 'status' => 0,
- ]);
- }
- return app('json')->success('反馈成功');
- }
- /**
- * 底单申请
- * @param Request $request
- */
- public function subOrderDdInfo(Request $request)
- {
- $post = UtilService::getMore(
- [
- ['id', "", "empty", "参数错误"],
- ['mono', ""],
- ], $request
- );
- $orderInfo = (new OrderInfo())->getItem($post['id']);
- if (empty($orderInfo)) {
- return app('json')->fail('找不到订单数据');
- }
- $count = (new OrderInfoDd)
- ->where('o_id', $orderInfo['o_id'])
- ->where('of_id', $orderInfo['id'])
- ->count();
- if ($count > 0) {
- return app('json')->fail('已提交申请,请勿重复提交');
- }
- (new OrderInfoDd)->insert([
- 'o_id' => $orderInfo['o_id'],
- 'of_id' => $orderInfo['id'],
- 'mono' => $post['mono'],
- 'time' => time(),
- 'sassid' => $request->site['sassid'],
- 'uid' => $request->user['uid'],
- 'status' => 0,
- ]);
- return app('json')->success('反馈成功');
- }
- /**
- * 问题反馈列表
- * @param Request $request
- */
- public function orderMonoList(Request $request)
- {
- $pageSize = 10;
- $post = UtilService::getMore(
- [
- ['page', 1],
- ['exp_number', ''],
- ['id', ''],
- ['date', ["", ""]],
- ['mobile', ''],
- ['name', ''],
- ['orderType', ''],
- ['out_order_id', ''],
- ['status', ''],
- ['timeType', ''],
- ], $request
- );
- $where = $post;
- $where['sassid'] = $request->site['sassid'];
- $where['uid'] = $request->user['uid'];
- $tx = new OrderInfoAsw();
- list($pageCount, $data) = $tx->getList($post['page'], $where, $pageSize, "*");
- $result = UtilService::getParam([
- "id",
- "o_id",
- "mono",
- "status",
- "cl_time",
- "cl_admin_time",
- "out_order_id",
- "name",
- "mobile",
- "address",
- "time",
- "send_time",
- "exp_number",
- 'msg_mono',
- "exp_name",
- ], $data);
- return app('json')->success([
- 'list' => $result,
- 'pageCount' => $pageCount,
- 'pageSize' => $pageSize,
- 'page' => $post['page'],
- ]);
- }
- /**
- * 订单撤销数据
- * @param Request $request
- */
- public function orderMonoCancel(Request $request)
- {
- $post = UtilService::getMore(
- [
- ['id', "", "empty", "参数错误"],
- ['mono', ""],
- ], $request
- );
- (new OrderInfoAsw)->where('id', $post['id'])->where('uid', $request->user['uid'])->delete();
- return app('json')->success('撤销成功');
- }
- /**
- * 底单申请
- * @param Request $request
- */
- public function orderDdList(Request $request)
- {
- $pageSize = 10;
- $post = UtilService::getMore(
- [
- ['page', 1],
- ['exp_number', ''],
- ['id', ''],
- ['date', ["", ""]],
- ['mobile', ''],
- ['name', ''],
- ['orderType', ''],
- ['out_order_id', ''],
- ['status', ''],
- ['timeType', ''],
- ], $request
- );
- $where = $post;
- $where['sassid'] = $request->site['sassid'];
- $where['uid'] = $request->user['uid'];
- $tx = new OrderInfoDd();
- list($pageCount, $data) = $tx->getList($post['page'], $where, $pageSize, "*");
- $result = UtilService::getParam([
- "id",
- "o_id",
- "mono",
- "status",
- "cl_time",
- "cl_admin_time",
- "out_order_id",
- "name",
- "mobile",
- "address",
- "time",
- "send_time",
- "exp_number",
- 'msg_mono',
- "msg_img",
- "exp_name",
- ], $data);
- return app('json')->success([
- 'list' => $result,
- 'pageCount' => $pageCount,
- 'pageSize' => $pageSize,
- 'page' => $post['page'],
- ]);
- }
- /**
- * 订单撤销数据
- * @param Request $request
- */
- public function orderDbCancel(Request $request)
- {
- $post = UtilService::getMore(
- [
- ['id', "", "empty", "参数错误"],
- ['mono', ""],
- ], $request
- );
- (new OrderInfoDd())->where('id', $post['id'])->where('uid', $request->user['uid'])->delete();
- return app('json')->success('撤销成功');
- }
- /**
- * 邀请好友返利
- * @param Request $request
- */
- public function extension(Request $request)
- {
- $uid = $request->user['uid'];
- $mkuid = base64_encode(crypto_encrypt($uid, $request->site['secret_key']));
- $url = '/login/reg?uid=' . $mkuid;
- $url2 = '/mobile/reg/step1?uid=' . $mkuid;
- $url3 = '/h5/pages/users/register/index?uid=' . $mkuid;
- return app('json')->success([
- 'url' => $url,
- 'url2' => $url2,
- 'url3' => $url3,
- 'count' => (new Member)->where('i_uid', $request->user['uid'])->where('sassid', $request->site['sassid'])->count(),
- ]);
- }
- /**
- * @param Request $request
- * @return mixed
- */
- public function extensionList(Request $request)
- {
- $pageSize = 10;
- $post = UtilService::getMore(
- [
- ['page', 1],
- ], $request
- );
- $where['sassid'] = $request->site['sassid'];
- $where['i_uid'] = $request->user['uid'];
- $member = new Member;
- list($pageCount, $data) = $member->getList($post['page'], $where, $pageSize, "*");
- $result = UtilService::getParam([
- "uid",
- "mobile",
- ['regtime', 'regtime', 'date(\'Y-m-d H:i:s\',$1)'],
- 'order_count',
- 'lavel_name',
- ], $data);
- return app('json')->success([
- 'list' => $result,
- 'pageCount' => $pageCount,
- 'pageSize' => $pageSize,
- 'page' => $post['page'],
- ]);
- }
- /**
- * 修改账号
- * @param Request $request
- */
- public function account(Request $request)
- {
- $post = UtilService::getMore(
- [
- ['nickname', ''],
- ['avatar', ''],
- ], $request
- );
- $m = (new Member);
- $m->where('uid', $request->user['uid'])->save(['nickname' => $post['nickname'], 'avatar' => $post['avatar']]);
- return app('json')->success('修改成功');
- }
- /**
- * 修改密码
- * @param Request $request
- */
- public function password(Request $request)
- {
- $post = UtilService::getMore(
- [
- ['oldpass', '', 'empty', '请输入旧密码'],
- ['password', '', 'empty', '请输入新密码'],
- ], $request
- );
- if ($request->user['password'] != md5($post['password'])) {
- return app('json')->fail('旧密码错误,请检查之后在修改');
- }
- (new Member)->where('uid', $request->user['uid'])->save(['password' => md5($post['password'])]);
- return app('json')->success('修改成功');
- }
- /**
- * 绑定公众号
- * @param Request $request
- */
- public function bind(Request $request)
- {
- $token = base64_encode(crypto_encrypt($request->user['uid'] . "|" . time(), 'md5_user_token'));
- $url = \config('app')['API_URL']
- . '/api/bind/system_bind?token=' . $token . '&secret_key=' . $request->site['secret_key'];
- $wxPush = (new WeixinPushUser)
- ->field("avatar,nickname")
- ->where('sassid', $request->site['sassid'])
- ->where('uid', $request->user['uid'])
- ->find();
- $result = [];
- $result['url'] = $url;
- $result['isbind'] = empty($wxPush) ? false : true;
- $result['bind'] = $wxPush;
- return app('json')->success($result);
- }
- /**
- * 取消绑定
- * @param Request $request
- */
- public function delbind(Request $request)
- {
- (new WeixinPushUser)->where('uid', $request->user['uid'])->where('sassid', $request->site['sassid'])->delete();
- return app('json')->success('取消成功');
- }
- /**
- * vip
- * @param Request $request
- */
- public function vip(Request $request)
- {
- $wData = (new Warehouse)->select()->toArray();
- $level = (new \app\model\admin\MemberLevel)
- ->field("ml.*,(select update_money from table_site_level where level_id = ml.id and sass_id = " . $request->site['sassid'] . " ) as update_money")
- ->alias("ml")
- ->where('ml.is_show', 1)
- ->select()
- ->toArray();
- $levelIds = array_column($level, 'id');
- $expCost = new ExpCost;
- $tAr = [];
- foreach ($wData as $v) {
- $d = [];
- $eAr = [];
- $d['name'] = $v['name'];
- $d['id'] = $v['id'];
- $d['data'] = [];
- $exData = $expCost
- ->field("ec.money,e.title,ec.level_id,ec.express_id")
- ->alias("ec")
- ->join('express e', 'e.id = ec.express_id')
- ->where('ec.warehouse_id', $v['id'])
- ->whereIn('ec.level_id', $levelIds)
- ->where('sassid', $request->site['sassid'])
- ->select();
- foreach ($exData as $vv) {
- $key = 'level_' . $vv['level_id'];
- if (empty($d[$key])) {
- $d[$key] = $vv['money'];
- } else {
- $d[$key] = $d[$key] > $vv['money'] ? $vv['money'] : $d[$key];
- }
- if (empty($eAr[$vv['express_id']])) $eAr[$vv['express_id']] = ['title' => $vv['title']];
- $eAr[$vv['express_id']][$key] = $vv['money'];
- }
- //处理数据
- foreach ($eAr as $vv) {
- $d['data'][] = $vv;
- }
- if (count($exData) > 0) $tAr[] = $d;
- }
- return app('json')->success(['data' => $tAr, 'level' => $level]);
- }
- /**
- * 店铺信息
- * @param Request $request
- */
- public function shop(Request $request)
- {
- return app('json')
- ->success((new MemberShop)
- ->where('uid', $this->user['uid'])
- ->select()
- ->toArray()
- );
- }
- /**
- * 删除店铺
- * @param Request $request
- */
- public function shopDel(Request $request)
- {
- [$id] = UtilService::getMore(
- [
- ['id', '', 'empty', '参数错误'],
- ]
- , $request, true);
- (new MemberShop)
- ->where('uid', $this->user['uid'])
- ->where('id', $id)->delete();
- return app('json')->fail('删除成功');
- }
- }
|