| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585 |
- <?php
- namespace Modules\Api\Controllers;
- use App\Constants\AdConstrant;
- use App\Constants\CommentConstant;
- use App\Constants\CommonConstant;
- use App\Repositories\Criterias\OrderLimitCriteria;
- use App\Repositories\Criterias\OriginalGoodsAssessListCriteria;
- use App\Repositories\Criterias\OriginalGoodsListsCriteria;
- use App\Repositories\Criterias\OriginalOrderCriteria;
- use App\Repositories\GoodsAssessRepository;
- use App\Repositories\MessageRepository;
- use App\Repositories\OriginalClassRepository;
- use App\Repositories\OriginalLikeLogRepository;
- use App\Repositories\OriginalOrderRepository;
- use App\Repositories\OriginalRepository;
- use App\Repositories\ShopsRepository;
- use App\Repositories\UserRepository;
- use App\Repositories\UserShippingAddressRepository;
- use App\Repositories\Utils\M3u8CacheRepository;
- use Hyperf\Validation\Contract\ValidatorFactoryInterface;
- use Modules\Api\Responses\OriginalGoodsAssessListResponse;
- use Modules\Api\Responses\OriginalGoodsListsResponse;
- use Modules\Api\Responses\OriginalUserOrderListsResponse;
- use Modules\Api\Services\VideoService;
- class OriginaController extends BaseController
- {
- use \Hyperf\Di\Aop\ProxyTrait;
- use \Hyperf\Di\Aop\PropertyHandlerTrait;
- function __construct()
- {
- if (method_exists(parent::class, '__construct')) {
- parent::__construct(...func_get_args());
- }
- $this->__handlePropertyHandler(__CLASS__);
- }
- /**
- * 商品列表
- *
- * @return mixed|OriginalGoodsListsResponse
- */
- public function goodsLists()
- {
- $userCode = $this->getUserId();
- $inputData = $this->getJsonData();
- $rules = ['page' => 'required|integer', 'page_size' => 'required|integer', 'class_uid' => 'nullable|string', 'name' => 'nullable|string', 'shops_uid' => 'nullable|string', 'is_reco' => 'nullable|in:1'];
- $validator = make(ValidatorFactoryInterface::class)->make($inputData, $rules);
- if ($validator->fails()) {
- // 如果有错误(可能是多个信息),这里只取第一个错误信息返回.
- return json_fail($validator->errors()->first());
- }
- if (isset($inputData['is_reco']) && $inputData['is_reco'] == 1) {
- $orders = [['steer_level', 'DESC']];
- } else {
- $orders = [['sort', 'DESC']];
- }
- $pageSize = $inputData['page_size'] ?? CommentConstant::PAGE_SIZE;
- if ($pageSize > 100) {
- $pageSize = CommentConstant::PAGE_SIZE;
- }
- $page = format_page($inputData['page']);
- $pageSize = intval($pageSize);
- if ($pageSize <= 0) {
- $pageSize = CommonConstant::PAGE_SIZE;
- }
- $inputData['status'] = 2;
- $field = ['cover', 'coins', 'original_cions', 'member_coins', 'title', 'number_orders', 'shops_uid', 'uid', 'stock'];
- $originalRepository = make(OriginalRepository::class);
- $res = $originalRepository->pushCriteria(new OriginalGoodsListsCriteria($inputData))->pushCriteria(new OrderLimitCriteria($orders))->paginate($pageSize, $field, $page);
- $adList = make(VideoService::class)->getAdList(AdConstrant::SMELL_HOME);
- $ad = [];
- if (!empty($adList[0])) {
- foreach ($adList as $k => $adVal) {
- $link = M3u8CacheRepository::getLinkUrl($adVal['link'], ['user_code' => $userCode]);
- $ad[$k]['cover'] = M3u8CacheRepository::getImageUrl($adVal['cover']);
- $ad[$k]['link'] = $link;
- $ad[$k]['scheme'] = $adVal['scheme'];
- }
- }
- return new OriginalGoodsListsResponse($res, $ad);
- }
- /**
- * 商品详情接口
- *
- * @return mixed
- */
- public function goodsInfo()
- {
- $inputData = $this->getJsonData();
- $rules = ['uid' => 'required|string'];
- $validator = make(ValidatorFactoryInterface::class)->make($inputData, $rules);
- if ($validator->fails()) {
- // 如果有错误(可能是多个信息),这里只取第一个错误信息返回.
- return json_fail($validator->errors()->first());
- }
- $originalRepo = make(OriginalRepository::class);
- $info = $originalRepo->findWhereBy(['uid' => $inputData['uid'], 'status' => 2]);
- if (empty($info)) {
- return json_fail('该商品不存在');
- }
- $res = [];
- if (!empty($info->photo_address)) {
- $photoAddress = json_decode($info->photo_address, true);
- foreach ($photoAddress as $photoVal) {
- $res['photo_address'][] = M3u8CacheRepository::getImageUrl($photoVal);
- }
- }
- $res['category_name'] = $info->originalCategory->name;
- // 分类名字
- $res['title'] = $info->title;
- // 商品名字
- $res['coins'] = $info->coins;
- // 售价
- $res['content'] = $info->introduce;
- // 商品介绍
- $res['likes'] = $info->likes;
- // 点赞数
- $res['number_orders'] = $info->number_orders + 1;
- // 想要
- $res['browse'] = $info->browse;
- // 浏览数
- $res['cover'] = M3u8CacheRepository::getImageUrl($info->cover);
- // 商品封面
- $res['cover_tow'] = $info->cover;
- // 商品封面
- $res['member_coins'] = $info->member_coins;
- $res['stock'] = $info->stock;
- // 库存
- $res['uid'] = $info->uid;
- $res['video_address'] = M3u8CacheRepository::getVideoInnerUrl($info->video_address, $this->getUserId(), $info->uid, 'goods');
- $res['is_goods'] = make(OriginalLikeLogRepository::class)->judgeIsLike($this->getUserId(), $inputData['uid']);
- //是否点赞
- // 店铺信息
- $res['shop']['cover'] = M3u8CacheRepository::getImageUrl($info->shops->cover);
- $res['shop']['name'] = $info->shops->title;
- $res['shop']['province'] = $info->shops->province;
- $res['shop']['city'] = $info->shops->city;
- $res['shop']['region'] = $info->shops->region;
- $res['shop']['credit_value'] = $info->shops->credit_value;
- $res['shop']['uid'] = $info->shops->uid;
- $res['shop']['video_address'] = M3u8CacheRepository::getVideoInnerUrl($info->shops->video_address, $this->getUserId(), $info->shops->uid, 'shop');
- $res['shop']['settled_date'] = diffDate((string) $info->shops->created_at, date('Y-m-d H:i:s'));
- // 想要加1
- $originalRepo->numberOrdersAdd($inputData['uid']);
- return json_success($res);
- }
- public function goodsAssessList()
- {
- $inputData = $this->getJsonData();
- $rules = ['page' => 'required|integer', 'page_size' => 'required|integer', 'uid' => 'required|string'];
- $validator = make(ValidatorFactoryInterface::class)->make($inputData, $rules);
- if ($validator->fails()) {
- // 如果有错误(可能是多个信息),这里只取第一个错误信息返回.
- return json_fail($validator->errors()->first());
- }
- $orders = [['created_at', 'DESC']];
- $pageSize = $inputData['page_size'] ?? CommentConstant::PAGE_SIZE;
- if ($pageSize > 100) {
- $pageSize = CommentConstant::PAGE_SIZE;
- }
- $page = format_page($inputData['page']);
- $pageSize = intval($pageSize);
- if ($pageSize <= 0) {
- $pageSize = CommonConstant::PAGE_SIZE;
- }
- $goodsAssessRepo = make(GoodsAssessRepository::class);
- $field = ['comment', 'buy_uid', 'comment_fraction'];
- $res = $goodsAssessRepo->pushCriteria(new OriginalGoodsAssessListCriteria($inputData))->pushCriteria(new OrderLimitCriteria($orders))->paginate($pageSize, $field, $page);
- return new OriginalGoodsAssessListResponse($res);
- }
- /**
- * 分类列表
- *
- * @return mixed
- */
- public function category()
- {
- $res = make(OriginalClassRepository::class)->list(['status' => 1, 'type' => 1], ['uid', 'name'], ['sort', 'desc']);
- return json_success($res);
- }
- /**
- * 点赞
- *
- * @return mixed
- */
- public function goodsLike()
- {
- $inputData = $this->getJsonData();
- $rules = ['goods_uid' => 'required|string'];
- $validator = make(ValidatorFactoryInterface::class)->make($inputData, $rules);
- if ($validator->fails()) {
- // 如果有错误(可能是多个信息),这里只取第一个错误信息返回.
- return json_fail($validator->errors()->first());
- }
- $count = make(OriginalLikeLogRepository::class)->judgeIsLike($this->getUserId(), $inputData['goods_uid']);
- if ($count) {
- return json_fail('请勿重复点赞');
- }
- $goodsInfo = make(OriginalRepository::class)->findBy('uid', $inputData['goods_uid'], ['id']);
- if (!$goodsInfo) {
- return json_fail('商品点赞异常');
- }
- $userInfo = make(UserRepository::class)->getUserInfoData($this->getUserId());
- if (!$userInfo) {
- return json_fail('用户账号异常');
- }
- $res = make(OriginalLikeLogRepository::class)->create(['user_uid' => $this->getUserId(), 'goods_uid' => $inputData['goods_uid']]);
- if ($res) {
- make(OriginalRepository::class)->addLike($inputData['goods_uid']);
- return json_success([], '点赞成功');
- } else {
- return json_fail('点赞失败');
- }
- }
- /**
- * 添加收货地址
- *
- * @return mixed
- */
- public function addShippingAddress()
- {
- $inputData = $this->getJsonData();
- $rules = ['name' => 'required|string|between:2,16', 'phone' => 'required|integer|regex:/^1[3456789]\\d{9}$/', 'province' => 'required|integer', 'city' => 'required|integer', 'region' => 'nullable|integer', 'address' => 'required|string|between:4,36', 'default_address' => 'required|in:1,2'];
- $validator = make(ValidatorFactoryInterface::class)->make($inputData, $rules);
- if ($validator->fails()) {
- // 如果有错误(可能是多个信息),这里只取第一个错误信息返回.
- return json_fail($validator->errors()->first());
- }
- $addressRepo = make(UserShippingAddressRepository::class);
- $addressCount = $addressRepo->getAddressCount($this->getUserId());
- if ($addressCount > 5) {
- return json_fail('最多只可添加6个收货地址,请删除后再添加新的收货地址');
- }
- if ($inputData['default_address'] == 1) {
- make(UserShippingAddressRepository::class)->update(['is_default' => 2], $this->getUserId(), 'user_uid');
- }
- $insterData = ['user_uid' => $this->getUserId(), 'name' => $inputData['name'], 'phone' => $inputData['phone'], 'address' => $inputData['address'], 'is_default' => $inputData['default_address'], 'province' => $inputData['province'], 'city' => $inputData['city'], 'region' => $inputData['region']];
- $res = make(UserShippingAddressRepository::class)->create($insterData);
- if ($res) {
- return json_success([], '添加成功');
- } else {
- return json_fail('添加收货地址失败');
- }
- }
- /**
- * 收货地址列表
- *
- * @return mixed
- */
- public function addressLists()
- {
- $res = make(UserShippingAddressRepository::class)->findAllBy('user_uid', $this->getUserId(), ['name', 'phone', 'address', 'is_default', 'province', 'city', 'region', 'uid']);
- return json_success($res);
- }
- /**
- * 收货地址详情
- *
- * @return mixed
- */
- public function addressInfo()
- {
- $inputData = $this->getJsonData();
- $rules = ['uid' => 'required|string'];
- $validator = make(ValidatorFactoryInterface::class)->make($inputData, $rules);
- if ($validator->fails()) {
- // 如果有错误(可能是多个信息),这里只取第一个错误信息返回.
- return json_fail($validator->errors()->first());
- }
- $info = make(UserShippingAddressRepository::class)->findWhereBy(['user_uid' => $this->getUserId(), 'uid' => $inputData['uid']], ['name', 'phone', 'address', 'is_default', 'province', 'city', 'region']);
- if (empty($info)) {
- return json_fail('收货地址不存在');
- }
- return json_success($info);
- }
- /**
- * 修改收货地址
- *
- * @return mixed
- */
- public function upAddress()
- {
- $inputData = $this->getJsonData();
- $rules = ['uid' => 'required|string', 'name' => 'nullable|string|between:2,16', 'phone' => 'nullable|integer|regex:/^1[34578]\\d{9}$/', 'province' => 'nullable|integer', 'city' => 'nullable|integer', 'region' => 'nullable|integer', 'address' => 'nullable|string|between:4,36', 'default_address' => 'nullable|in:1,2'];
- $validator = make(ValidatorFactoryInterface::class)->make($inputData, $rules);
- if ($validator->fails()) {
- // 如果有错误(可能是多个信息),这里只取第一个错误信息返回.
- return json_fail($validator->errors()->first());
- }
- $addressRepo = make(UserShippingAddressRepository::class);
- $info = $addressRepo->findWhereBy(['uid' => $inputData['uid'], 'user_uid' => $this->getUserId()]);
- if (empty($info)) {
- return json_fail('修改异常,请联系客服');
- }
- $res = $addressRepo->updateAddress($inputData, $this->getUserId());
- if ($res) {
- return json_success([], '修改成功');
- } else {
- return json_fail('修改失败');
- }
- }
- /**
- * 删除收货地址
- *
- * @return mixed
- */
- public function delAddress()
- {
- $inputData = $this->getJsonData();
- $rules = ['uid' => 'required|string'];
- $validator = make(ValidatorFactoryInterface::class)->make($inputData, $rules);
- if ($validator->fails()) {
- // 如果有错误(可能是多个信息),这里只取第一个错误信息返回.
- return json_fail($validator->errors()->first());
- }
- $addressRepo = make(UserShippingAddressRepository::class);
- $info = $addressRepo->findWhereBy(['uid' => $inputData['uid'], 'user_uid' => $this->getUserId()], ['id']);
- if (empty($info)) {
- return json_fail('异常操作,收货地址不存在');
- }
- $res = make(UserShippingAddressRepository::class)->delete($info->id);
- if ($res) {
- return json_success([], '删除成功');
- } else {
- return json_fail('删除失败');
- }
- }
- /**
- * 购买商品详情接口
- *
- * @return mixed
- */
- public function goodsBuyInfo()
- {
- $inputData = $this->getJsonData();
- $rules = ['uid' => 'required|string'];
- $validator = make(ValidatorFactoryInterface::class)->make($inputData, $rules);
- if ($validator->fails()) {
- // 如果有错误(可能是多个信息),这里只取第一个错误信息返回.
- return json_fail($validator->errors()->first());
- }
- $goodsInfo = make(OriginalRepository::class)->findWhereBy(['uid' => $inputData['uid'], 'status' => 2], ['title', 'shops_uid', 'cover', 'coins', 'original_cions', 'member_coins']);
- if (empty($goodsInfo)) {
- return json_fail('商品已下架,请重新选择新商品');
- }
- // 获取默认收货地址
- $res['address'] = make(UserShippingAddressRepository::class)->getUserAddress($this->getUserId());
- $res['title'] = $goodsInfo->title;
- $res['coins'] = $goodsInfo->coins;
- $res['original_cions'] = $goodsInfo->original_cions;
- $res['member_coins'] = $goodsInfo->member_coins;
- $res['shop_name'] = $goodsInfo->shops->title;
- $res['cover'] = M3u8CacheRepository::getImageUrl($goodsInfo->title);
- return json_success($res);
- }
- /**
- * 购买商品
- *
- * @return mixed
- */
- public function goodsBuy()
- {
- $inputData = $this->getJsonData();
- $rules = ['uid' => 'required|string', 'address_uid' => 'required|string', 'number' => 'required|integer', 'price' => 'required|integer', 'message' => 'nullable|string|between:2,16'];
- $validator = make(ValidatorFactoryInterface::class)->make($inputData, $rules);
- if ($validator->fails()) {
- // 如果有错误(可能是多个信息),这里只取第一个错误信息返回.
- return json_fail($validator->errors()->first());
- }
- $orderRepo = make(OriginalOrderRepository::class);
- // 生成订单
- $orderSn = $orderRepo->createOrder($inputData, $this->getUserId());
- if ($orderSn === false) {
- return json_fail('购买失败,请联系客服', 30002);
- }
- $userInfo = make(UserRepository::class)->getUserInfoFromCache($this->getUserId());
- if ($userInfo['coins'] < $inputData['price']) {
- return json_fail('金币不足,请充值后再购买', 30001);
- }
- // 购买付钱
- $res = $orderRepo->buyGoods($orderSn, $this->getUserId());
- if ($res) {
- return json_success([], '购买成功');
- } else {
- return json_fail('付款失败', 30003);
- }
- }
- /**
- * 确认购买订单
- *
- * @return mixed
- */
- public function verifyBuy()
- {
- $inputData = $this->getJsonData();
- $rules = ['order_sn' => 'required|string'];
- $validator = make(ValidatorFactoryInterface::class)->make($inputData, $rules);
- if ($validator->fails()) {
- // 如果有错误(可能是多个信息),这里只取第一个错误信息返回.
- return json_fail($validator->errors()->first());
- }
- $res = make(OriginalOrderRepository::class)->buyGoods($inputData['order_sn'], $this->getUserId());
- if ($res) {
- return json_success([], '购买成功');
- } else {
- return json_fail('购买失败', 30004);
- }
- }
- /**
- * 用户订单列表
- *
- * @return mixed|OriginalUserOrderListsResponse
- */
- public function userOrderLists()
- {
- $inputData = $this->getJsonData();
- $rules = ['page' => 'required|integer', 'page_size' => 'required|integer', 'order_status' => 'nullable|integer'];
- $validator = make(ValidatorFactoryInterface::class)->make($inputData, $rules);
- if ($validator->fails()) {
- // 如果有错误(可能是多个信息),这里只取第一个错误信息返回.
- return json_fail($validator->errors()->first());
- }
- $orders = [['created_at', 'DESC']];
- $pageSize = $inputData['page_size'] ?? CommentConstant::PAGE_SIZE;
- if ($pageSize > 100) {
- $pageSize = CommentConstant::PAGE_SIZE;
- }
- $page = format_page($inputData['page']);
- $pageSize = intval($pageSize);
- if ($pageSize <= 0) {
- $pageSize = CommonConstant::PAGE_SIZE;
- }
- $inputData['buy_uid'] = $this->getUserId();
- $field = ['goods_cover', 'goods_name', 'clinch_amount', 'sell_uid', 'order_status', 'pay_status', 'redund_status', 'order_sn', 'goods_amount'];
- $res = make(OriginalOrderRepository::class)->pushCriteria(new OriginalOrderCriteria($inputData))->pushCriteria(new OrderLimitCriteria($orders))->paginate($pageSize, $field, $page);
- return new OriginalUserOrderListsResponse($res);
- }
- /**
- * 用户订单详情
- *
- * @return mixed
- */
- public function userOrderInfo()
- {
- $inputData = $this->getJsonData();
- $rules = ['order_sn' => 'required|string'];
- $validator = make(ValidatorFactoryInterface::class)->make($inputData, $rules);
- if ($validator->fails()) {
- // 如果有错误(可能是多个信息),这里只取第一个错误信息返回.
- return json_fail($validator->errors()->first());
- }
- $info = make(OriginalOrderRepository::class)->findWhereBy(['order_sn' => $inputData['order_sn'], 'buy_uid' => $this->getUserId()]);
- if (empty($info)) {
- return json_fail('订单异常');
- }
- $res = ['name' => $info->goods_name, 'order_sn' => $info->order_sn, 'cover' => M3u8CacheRepository::getImageUrl($info->goods_cover), 'order_status' => $info->order_status, 'clinch_amount' => $info->clinch_amount, 'goods_amount' => $info->goods_amount, 'address' => json_decode($info->address, true), 'order_info' => ['order_sn' => $info->order_sn, 'pay_time' => $info->pay_time, 'message' => $info->message], 'logistics_info' => ['courier_firm' => $info->courier_firm ?: '', 'courier_number' => $info->courier_number ?: '', 'logistics_info' => $info->logistics_info ?: ''], 'pay_time' => $info->pay_time, 'receipt_time' => $info->receipt_time, 'refund_apply_time' => $info->refund_apply_time, 'refund_end_time' => $info->refund_end_time, 'assess_time' => $info->assess_time];
- $res['assess_info'] = null;
- if ($info->order_status == 4) {
- $assessInfo = make(GoodsAssessRepository::class)->findWhereBy(['order_sn' => $info->order_sn, 'buy_uid' => $this->getUserId()]);
- if (!empty($assessInfo)) {
- $res['assess_info'] = ['fraction' => $assessInfo->comment_fraction ?: '', 'comment' => $assessInfo->comment ?: ''];
- }
- }
- return json_success($res);
- }
- /**
- * 用户订单删除
- *
- * @return mixed
- * @throws \Exception
- */
- public function userOrderDelete()
- {
- $inputData = $this->getJsonData();
- $rules = ['order_sn' => 'required|string'];
- $validator = make(ValidatorFactoryInterface::class)->make($inputData, $rules);
- if ($validator->fails()) {
- // 如果有错误(可能是多个信息),这里只取第一个错误信息返回.
- return json_fail($validator->errors()->first());
- }
- $info = make(OriginalOrderRepository::class)->findWhereBy(['order_sn' => $inputData['order_sn'], 'buy_uid' => $this->getUserId(), 'order_status' => 1]);
- if (empty($info)) {
- return json_fail('该订单不可被删除');
- }
- $res = $info->delete();
- if ($res) {
- return json_success([], '订单删除成功');
- } else {
- return json_fail('操作失败');
- }
- }
- /**
- * 确认收货
- *
- * @return mixed
- */
- public function confirmReceipt()
- {
- $inputData = $this->getJsonData();
- $rules = ['order_sn' => 'required|string', 'fraction' => 'required|integer|in:1,2,3', 'comment' => 'nullable|string|max:255', 'img_json' => 'nullable|string'];
- $validator = make(ValidatorFactoryInterface::class)->make($inputData, $rules);
- if ($validator->fails()) {
- // 如果有错误(可能是多个信息),这里只取第一个错误信息返回.
- return json_fail($validator->errors()->first());
- }
- $info = make(OriginalOrderRepository::class)->findWhereBy(['order_sn' => $inputData['order_sn'], 'buy_uid' => $this->getUserId()]);
- if (empty($info)) {
- return json_fail('确认收货异常,请联系管理员');
- }
- $data = ['goods_uid' => $info->goods_uid, 'buy_uid' => $this->getUserId(), 'goods_name' => $info->goods_name, 'order_sn' => $info->order_sn, 'evaluation_map' => $inputData['img_json'], 'comment' => $inputData['comment'], 'comment_fraction' => $inputData['fraction'], 'reward_coins' => 5];
- $res = make(OriginalOrderRepository::class)->confirmReceipt($data, 5);
- if ($res) {
- return json_success([], '操作成功');
- } else {
- return json_fail('操作失败');
- }
- }
- /**
- * 申请退款
- *
- * @return mixed
- */
- public function applyRefund()
- {
- $inputData = $this->getJsonData();
- $rules = ['order_sn' => 'required|string', 'content' => 'required|max:255'];
- $validator = make(ValidatorFactoryInterface::class)->make($inputData, $rules);
- if ($validator->fails()) {
- // 如果有错误(可能是多个信息),这里只取第一个错误信息返回.
- return json_fail($validator->errors()->first());
- }
- $where = ['redund_status' => 1, 'order_sn' => $inputData['order_sn'], 'buy_uid' => $this->getUserId()];
- $orderInfo = make(OriginalOrderRepository::class)->findWhereBy($where);
- if (empty($orderInfo)) {
- return json_fail('当前订单不可被退款');
- }
- $orderInfo->redund_status = 2;
- $orderInfo->order_status = 5;
- $orderInfo->apply_reason = $inputData['content'];
- $orderInfo->refund_apply_time = date('Y-m-d H:i:s');
- if ($orderInfo->save()) {
- return json_success([], '申请成功,在三个工作日内将会处理您的订单');
- } else {
- return json_fail('申请失败!');
- }
- }
- /**
- * 店铺详情
- *
- * @param ValidatorFactoryInterface $validatorFactory
- * @return mixed
- * @throws \Exception
- */
- public function shopsInfo(ValidatorFactoryInterface $validatorFactory)
- {
- $inputData = $this->getJsonData();
- $rules = ['shops_uid' => 'required|string'];
- $validator = $validatorFactory->make($inputData, $rules);
- if ($validator->fails()) {
- // 如果有错误(可能是多个信息),这里只取第一个错误信息返回.
- return json_fail($validator->errors()->first());
- }
- $shopInfo = make(ShopsRepository::class)->findBy('uid', $inputData['shops_uid'], ['cover', 'title', 'credit_value', 'video_address', 'created_at']);
- if (empty($shopInfo)) {
- return json_fail('该店铺不存在');
- }
- $res = ['cover' => M3u8CacheRepository::getImageUrl($shopInfo->cover), 'name' => $shopInfo->title, 'credit_value' => $shopInfo->credit_value, 'video_address' => M3u8CacheRepository::getVideoInnerUrl($shopInfo->video_address, $this->getUserId(), $inputData['shops_uid'], 'shop'), 'created_at' => diffDate((string) $shopInfo->created_at, date('Y-m-d H:i:s'))];
- return json_success($res);
- }
- public function msgCount()
- {
- $msgInfo = make(MessageRepository::class)->firstSys($this->getUserId(), 'shops');
- $msgInfo['shops_info'] = null;
- if ($msgInfo['count_unread'] > 0 && isset($msgInfo['first_msg']['from_uid'])) {
- $shopsInfo = make(ShopsRepository::class)->findBy('uid', $msgInfo['first_msg']['from_uid'], ['title', 'cover', 'uid']);
- if ($shopsInfo) {
- $msgInfo['shops_info']['title'] = $shopsInfo->title;
- $msgInfo['shops_info']['cover'] = M3u8CacheRepository::getImageUrl($shopsInfo->cover);
- $msgInfo['shops_info']['uid'] = $shopsInfo['uid'];
- }
- }
- unset($msgInfo['first_msg']);
- return json_success($msgInfo);
- }
- }
|