get(); unset($user['password'], $user['salt']); $user['money'] = UserWalletModel::getOne($user['id'], 'money'); $model = new UserCouponModel(); $list = $model->getList( params : [ 'user_id' => $user['id'], 'is_use' => 0, 'valid' => 0 ], orderBy: ['id' => 'desc'] ); $user['coupon'] = count($list); $user['avatar'] = cdn_url($user['avatar']); $user['credit'] = "{$user['over_order_num']}/{$user['order_num']}"; return AppResult::success(result: $user); } // 个人信息编辑 public function edit(EditRequest $request) { $params = $request->validated(); $user = AuthUser::getInstance()->get(); if (empty($params['avatar']) && empty($params['email']) && empty($params['nickname'])) { return AppResult::success('修改成功'); } $data = []; !empty($params['nickname']) && $data['nickname'] = $params['nickname']; !empty($params['avatar']) && $data['avatar'] = $params['avatar']; !empty($params['email']) && $data['email'] = $params['email']; if (!UserModel::query()->where('id', $user['id'])->update($data)) { return AppResult::error('修改失败'); } return AppResult::success('修改成功'); } /** * 余额变动记录 * @param MoneyLogRequest $request * @return string */ public function money_log(MoneyLogRequest $request) { $params = $request->validated();// 获取校验通过的参数 $user = AuthUser::getInstance()->get(); if ($params['type_in'] == 1) { $params['type_in'] = [1, 4]; } else { $params['type_in'] = [2, 3]; } $model = new UserMoneyLogModel(); $list = $model->getList( params: array_merge(['user_id' => $user['id']], $params), orderBy: ['id' => 'desc'] ); return AppResult::success('success', $list); } /** * 常用地址列表 * @param AddressListRequest $request * @return string */ public function address_list(AddressListRequest $request) { $params = $request->validated();// 获取校验通过的参数 $user = AuthUser::getInstance()->get(); $model = new UserAddressModel(); $list = $model->getList( params: array_merge($params, ['user_id' => $user['id']]) ); return AppResult::success(result: $list); } public function address_detail(AddressDetailRequest $request) { $params = $request->validated();// 获取校验通过的参数 $user = AuthUser::getInstance()->get(); $model = new UserAddressModel(); $list = $model->getDetail( params: array_merge($params, ['user_id' => $user['id']]) ); return AppResult::success(result: $list); } /** * 常用地址添加 * @param AddressAddRequest $request * @return string */ public function address_add(AddressAddRequest $request) { $params = $request->validated();// 获取校验通过的参数 $user = AuthUser::getInstance()->get(); $params = array_merge($params, ['user_id' => $user['id']]); if (!UserAddressModel::add($params)) { return AppResult::error('添加失败'); } return AppResult::success('创建成功'); } /** * 常用地址编辑 * @param AddressEditRequest $request * @return string */ public function address_edit(AddressEditRequest $request) { $params = $request->validated();// 获取校验通过的参数 $user = AuthUser::getInstance()->get(); $params = array_merge($params, ['user_id' => $user['id']]); if (!UserAddressModel::edit((int)$params['id'], $params)) { return AppResult::error('修改失败'); } return AppResult::success('修改成功'); } /** * 常用地址编辑 * @param AddressDelRequest $request * @return string */ public function address_del(AddressDelRequest $request) { $params = $request->validated();// 获取校验通过的参数 $user = AuthUser::getInstance()->get(); if (!UserAddressModel::del((int)$params['id'], (int)$user['id'])) { return AppResult::error('删除失败'); } return AppResult::success('删除成功'); } /** * 我的优惠券 * @param CouponsRequest $request * @return \Psr\Http\Message\MessageInterface|\Psr\Http\Message\ResponseInterface * @throws \Psr\Container\ContainerExceptionInterface * @throws \Psr\Container\NotFoundExceptionInterface */ public function coupons(CouponsRequest $request) { $params = $request->validated(); $user = AuthUser::getInstance()->get(); $model = new UserCouponModel(); $list = $model->getList( params: array_merge($params, ['user_id' => $user['id']]), orderBy: ['id' => 'desc'] ); foreach ($list as $key => $val) { $list[$key]['valid_at'] = date('Y-m-d H:i:s', $val['valid_at']); } return AppResult::success(result: $list); } /** * 订单使用优惠券 * @param OrderPageCouponsRequest $request * @return \Psr\Http\Message\MessageInterface|\Psr\Http\Message\ResponseInterface * @throws \Psr\Container\ContainerExceptionInterface * @throws \Psr\Container\NotFoundExceptionInterface */ public function order_page_coupons(OrderPageCouponsRequest $request) { $params = $request->validated(); $user = AuthUser::getInstance()->get(); $model = new UserCouponModel(); $list = $model->getList( params : [ 'user_id' => $user['id'], 'type' => $params['type'], 'is_use' => 0, 'is_valid' => 0, 'min_money_min' => $params['total_amount'] ], orderBy: ['id' => 'desc'] ); foreach ($list as $key => $val) { $total_amount = (string)round((float)bcsub($params['total_amount'], $val['money'], 2));// 四舍五入 $rmb_total_amount = (string)round((float)bcmul($total_amount, site('dollar_to_rmb'), 2));// 四舍五入 $list[$key]['valid_at'] = date('Y-m-d H:i:s', $val['valid_at']); $list[$key]['pay_amount'] = $total_amount; $list[$key]['rmb_pay_amount'] = $rmb_total_amount; } return AppResult::success(result: $list); } /** * 邀请用户 * @param InviteRequest $request * @return \Psr\Http\Message\MessageInterface|\Psr\Http\Message\ResponseInterface * @throws \Psr\Container\ContainerExceptionInterface * @throws \Psr\Container\NotFoundExceptionInterface */ public function invite(InviteRequest $request) { $params = $request->validated(); $user = AuthUser::getInstance()->get(); if (!empty($user['parent_id']) || !empty($user['driver_id'])) { return AppResult::error('已经被邀请过了'); } if ($params['invite_code'] == $user['invite_code']) { return AppResult::error('不可以邀请自己'); } $first = substr($params['invite_code'], 0, 1); if (!in_array($first, ['U', 'D'])) { return AppResult::error('邀请码错误'); } if ($first == 'U') { $info = UserModel::query()->where('invite_code', $params['invite_code'])->where('status', 1)->first(); $up['parent_id'] = $info['id'] ?? 0; } else { $info = DriverModel::query()->where('invite_code', $params['invite_code'])->where('status', 1)->first(); $up['driver_id'] = $info['id'] ?? 0; } if (!$info) { return AppResult::error('邀请码异常'); } Db::beginTransaction(); if (!UserModel::query()->where('id', $user['id'])->update($up)) { Db::rollBack(); return AppResult::error('操作失败'); } $time = time(); if ($first == 'U'){ // 发放优惠券 $coupon = CouponModel::getDetail(['id' => site('invite_user_coupon_id')]); if ($coupon){ $insert = [ 'user_id' => $up['parent_id'], 'coupon_id' => $coupon['id'], 'name' => $coupon['name'], 'type' => $coupon['type'], 'min_money' => $coupon['min_money'], 'money' => $coupon['money'], 'valid_at' => strtotime(date('Y-m-d 23:59:59', $time + ($coupon['valid_days'] * 24 * 60 * 60))),// 自领取之日起 计算过期时间 'remark' => '邀请用户奖励', 'status' => 1, 'create_time' => $time ]; if (!UserCouponModel::query()->insert($insert)) { Db::rollBack(); return AppResult::error('发放失败'); } } // 发送系统消息 MessageModel::add([ 'user_id' => $up['parent_id'], 'type' => 1, 'name' => "邀请用户奖励", 'content' => "邀请用户成功,优惠券奖励已发放", 'value' => $coupon['id'] ]); } else { // 发放奖金 $invite_driver_amount = site('invite_driver_amount'); if ($invite_driver_amount){ $wallet = new DriverWalletModel(); if (!$wallet->change($up['driver_id'], (float)$invite_driver_amount, "邀请用户奖励", 4)) { Db::rollBack(); return AppResult::error($wallet->getMessage()); } } // 发送系统消息 DriverMessageModel::add([ 'driver_id' => $up['driver_id'], 'type' => 1, 'name' => "邀请用户奖励", 'content' => "邀请用户成功,奖励金已发放", 'value' => '' ]); } Db::commit(); return AppResult::success('操作成功'); } }