You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
zhishifufei_php/application/wap/controller/AuthApi.php

1137 lines
44 KiB

<?php
// +----------------------------------------------------------------------
// | 天诚科技 [ 刘海东 17600099397赋能开发者,助力企业发展 ]
// +----------------------------------------------------------------------
// | Copyright (c) 2016~2020 https://www.tczxkj.com All rights reserved.
// +----------------------------------------------------------------------
// | Licensed 该系统并不是自由软件,未经许可不能去掉相关版权
// +----------------------------------------------------------------------
// | Author:甘肃天诚志信电子商务有限公司 刘海东 联系电话维系17600099397
// +----------------------------------------------------------------------
namespace app\wap\controller;
use app\wap\model\user\SmsCode;
use app\wap\model\store\StoreOrderCartInfo;
use app\wap\model\store\StorePink;
use app\wap\model\store\StoreProductReply;
use app\wap\model\store\StoreService;
use app\wap\model\store\StoreServiceLog;
use app\wap\model\store\StoreCart;
use app\wap\model\store\StoreCategory;
use app\wap\model\store\StoreOrder;
use app\wap\model\store\StoreProduct;
use app\wap\model\special\Lecturer;
use app\wap\model\store\StoreProductRelation;
use app\wap\model\special\Special as SpecialModel;
use app\wap\model\user\User;
use app\wap\model\user\UserAddress;
use app\wap\model\user\UserBill;
use app\wap\model\user\UserExtract;
use app\wap\model\user\UserRecharge;
use app\wap\model\user\UserNotice;
use app\wap\model\user\UserSign;
use app\wap\model\user\SignPoster;
use app\wap\model\user\WechatUser;
use behavior\wap\StoreProductBehavior;
use service\AliMessageService;
use service\WechatTemplateService;
use service\CacheService;
use service\HookService;
use service\JsonService;
use service\SystemConfigService;
use service\GroupDataService;
use service\UtilService;
use service\WechatService;
use think\Cache;
use think\Request;
use think\Session;
use think\Url;
use app\wap\model\user\MemberShip;
use app\wap\model\user\MemberCard;
//会员卡
use app\wap\model\user\MemberCardBatch;
//会员卡批次
use service\sms\storage\Sms;
use service\express\storage\Express;
use app\admin\model\system\Express as ExpressModel;
use think\Config;
use service\MiniProgramService;
use service\TouMiniProgramService;
/**接口
* Class AuthApi
* @package app\wap\controller
*/
class AuthApi extends AuthController
{
public static function WhiteList()
{
return [
'upload',
'code',
'query',
'getLecturer',
'merberDatas',
'suspensionButton',
'rebateAmount',
'getVersion',
'product_reply_list',
'product_reply_data'
];
}
public function create_miniprogram_qrcode($scene, $page)
{
$resCode = MiniProgramService::appCodeUnlimitService($scene, $page, 500);
if (!$resCode) return JsonService::fail('二维码生成失败');
$name = $this->uid . '_' . time() . '_spread_from.jpg';
$path = ROOT_PATH . "public/uploads";
$fileName = $path . DS . $name;
file_put_contents($fileName, $resCode);
$urls = SystemConfigService::get('site_url');
return JsonService::successful([
'url' => $urls . DS . "uploads" . DS . $name
]);
}
public function create_toutiao_miniprogram_qrcode($scene, $page)
{
$resCode = (new TouMiniProgramService())->appCodeUnlimitService($scene, $page, 500);
if (!$resCode) return JsonService::fail('二维码生成失败');
$name = $this->uid . '_' . time() . '_spread_from.jpg';
$path = ROOT_PATH . "public/uploads";
$fileName = $path . DS . $name;
file_put_contents($fileName, $resCode);
$urls = SystemConfigService::get('site_url');
return JsonService::successful([
'url' => $urls . DS . "uploads" . DS . $name
]);
}
/**订单物流查询
* @param string $delivery_id
*/
public function query($delivery_id = '')
{
if (!$delivery_id) return JsonService::fail('参数错误');
$expressHandle = new Express();
$res = $expressHandle->query('', $delivery_id);
if ($res['status'] == 200) {
return JsonService::successful('检查成功', $res['data']);
} else {
return JsonService::fail($res['msg']);
}
}
/**详情页讲师信息
* @param $mer_id
*/
public function getLecturer($mer_id)
{
if (!$mer_id) return JsonService::successful(null);
$lecturer = Lecturer::information($mer_id);
return JsonService::successful($lecturer);
}
/**获取单个专题、商品、会员的返佣金额
* @param int $id
* @param string $type 0:专题 1:会员 2:商品
*/
public function rebateAmount($id = 0, $type = 0)
{
if (!$id) return JsonService::fail('参数错误!');
$brokerageRatio = 0;
switch ($type) {
case 0:
$data = SpecialModel::where('id', $id)->field('pay_type,money,is_alone,brokerage_ratio,brokerage_two')->find();
if (isset($data['pay_type']) && $data['pay_type'] == 1 && $data['money'] > 0) {
if (isset($data['is_alone']) && $data['is_alone']) {
if (isset($data['brokerage_ratio']) && $data['brokerage_ratio']) {
$brokerageRatio = bcdiv($data['brokerage_ratio'], 100, 2);
}
} else {
$course_distribution_switch = SystemConfigService::get('course_distribution_switch'); //课程分销开关
if ($course_distribution_switch == 1) {
$brokerageRatio = bcdiv(SystemConfigService::get('store_brokerage_ratio'), 100, 2);
}
}
}
$brokeragePrice = bcmul($data['money'], $brokerageRatio, 2);
return JsonService::successful(['brokeragePrice' => $brokeragePrice]);
break;
case 1:
$data = MemberShip::where('id', $id)->field('is_free,price,is_alone,brokerage_ratio,brokerage_two')->find();
if (isset($data['is_free']) && $data['is_free'] == 0 && $data['price'] > 0) {
if (isset($data['is_alone']) && $data['is_alone']) {
if (isset($data['brokerage_ratio']) && $data['brokerage_ratio']) {
$brokerageRatio = bcdiv($data['brokerage_ratio'], 100, 2);
}
} else {
$member_distribution_switch = SystemConfigService::get('member_distribution_switch'); //会员分销开关
if ($member_distribution_switch == 1) {
$brokerageRatio = bcdiv(SystemConfigService::get('member_brokerage_ratio'), 100, 2);
}
}
}
$brokeragePrice = bcmul($data['price'], $brokerageRatio, 2);
return JsonService::successful(['brokeragePrice' => $brokeragePrice]);
break;
case 2:
$data = StoreProduct::where('id', $id)->field('price,is_alone,brokerage_ratio,brokerage_two')->find();
if ($data['price'] > 0) {
if (isset($data['is_alone']) && $data['is_alone']) {
if (isset($data['brokerage_ratio']) && $data['brokerage_ratio']) {
$brokerageRatio = bcdiv($data['brokerage_ratio'], 100, 2);
}
} else {
$course_distribution_switch = SystemConfigService::get('goods_distribution_switch'); //商品分销开关
if ($course_distribution_switch == 1) {
$brokerageRatio = bcdiv(SystemConfigService::get('goods_brokerage_ratio'), 100, 2);
}
}
}
$brokeragePrice = bcmul($data['price'], $brokerageRatio, 2);
return JsonService::successful(['brokeragePrice' => $brokeragePrice]);
break;
}
}
public function upload()
{
$aliyunOss = \Api\AliyunOss::instance([
'AccessKey' => SystemConfigService::get('accessKeyId'),
'AccessKeySecret' => SystemConfigService::get('accessKeySecret'),
'OssEndpoint' => SystemConfigService::get('end_point'),
'OssBucket' => SystemConfigService::get('OssBucket'),
'uploadUrl' => SystemConfigService::get('uploadUrl'),
]);
$res = $aliyunOss->upload('file');
if ($res && isset($res['url'])) {
return JsonService::successful('上传成功', ['url' => $res['url']]);
} else {
return JsonService::fail('上传失败');
}
}
public function getVersion()
{
$version = getversion();
return JsonService::successful($version);
}
/**
* 发送短信验证码
* @param string $phone
*/
public function code($phone = '')
{
$name = "is_phone_code" . $phone;
if ($phone == '') return JsonService::fail('请输入手机号码!');
$sms_platform_selection = SystemConfigService::get('sms_platform_selection');
if ($sms_platform_selection == 2) {
$phone_count = SystemConfigService::get('phone_count');
$account = SystemConfigService::get('sms_account');
$phone_count = $phone_count ? (int)$phone_count : 60;
$count = $this->redisModel->inc($this->subjectUrl . $account, 1);
if ($phone_count <= $count) return JsonService::fail('您最近发送验证码的频率过高,请稍后再试!', ['code' => 1000]);
}
$time = Session::get($name, 'wap');
if ($time < time() + 60) Session::delete($name, 'wap');
if (Session::has($name, 'wap') && $time < time()) return JsonService::fail('您发送验证码的频率过高,请稍后再试!');
$code = AliMessageService::getVerificationCode();
SmsCode::set(['tel' => $phone, 'code' => md5('is_phone_code' . $code), 'last_time' => time() + 300, 'uid' => $this->uid]);
Session::set($name, time() + 60, 'wap');
$smsHandle = new Sms();
$smsSignName = SystemConfigService::get('smsSignName'); //短信签名
$smsTemplateCode = SystemConfigService::get('smsTemplateCode'); //短信模板ID
if ($sms_platform_selection == 1) {
if (!$smsSignName || !$smsTemplateCode) return JsonService::fail('系统后台短信没有配置,请稍后在试!');
$res = AliMessageService::sendmsg($phone, $smsTemplateCode, ['code' => $code]);
} else {
if (!(int)$smsTemplateCode) return JsonService::fail('请正确的填写系统后台短信配置!');
$res = $smsHandle->send($phone, $smsTemplateCode, ['code' => $code]);
}
if ($res['Code'] == 'OK') {
return JsonService::successful('发送成功', $res);
} else {
return JsonService::fail($res['Message']);
}
}
/**验证码
* @return \think\Response
*/
public function captcha()
{
ob_clean();
$captcha = new \think\captcha\Captcha([
'codeSet' => '0123456789',
'length' => 4,
'fontSize' => 30
]);
return $captcha->entry(3);
}
/**真人验证
* @return void
*/
public function del_redis_phone()
{
$request = Request::instance();
$data = UtilService::getMore([
['phone', ''],
['verify', '']
], $request);
$account = SystemConfigService::get('sms_account');
if ($data['phone'] == '') return JsonService::fail('请输入手机号码!');
//检验验证码
if (!captcha_check($data['verify'], 3)) return JsonService::fail('验证码错误!');
$res = $this->redisModel->rm($this->subjectUrl . $account);
if ($res) {
return JsonService::successful('验证成功!');
} else {
return JsonService::fail('验证失败!');
}
}
/**
* 悬浮按钮
*/
public function suspensionButton()
{
$suspension = GroupDataService::getData('suspension_button');
return JsonService::successful($suspension);
}
/**
* 用户签到信息
*/
public function getUserList()
{
$signList = UserSign::userSignInlist($this->uid, 1, 3);
return JsonService::successful($signList);
}
/**
* 签到明细
*/
public function getUserSignList($page, $limit)
{
$signList = UserSign::userSignInlist($this->uid, $page, $limit);
return JsonService::successful($signList);
}
/**
* 签到
*/
public function user_sign()
{
$gold_name = SystemConfigService::get('gold_name'); //虚拟币名称
$signed = UserSign::checkUserSigned($this->uid);
if ($signed) return JsonService::fail('已签到');
if (false !== $gold_coin = UserSign::sign($this->userInfo, $gold_name)) {
return JsonService::successful('签到获得' . floatval($gold_coin) . $gold_name);
} else
return JsonService::fail('签到失败!');
}
/**
* 获取前端海报信息
*/
public function get_user_sign_poster()
{
$poster = SignPoster::todaySignPoster($this->uid);
if ($poster) {
return JsonService::successful($poster);
} else {
return JsonService::fail('生成海报失败!');
}
}
/**
* 用户信息
*/
public function userInfo()
{
$user = $this->userInfo;
$surplus = 0; //会员剩余天数
$time = bcsub($user['overdue_time'], time(), 0);
if ($user['level'] > 0 && $time > 0) $surplus = bcdiv($time, 86400, 2);
$user['surplus'] = ceil($surplus);
return JsonService::successful($user);
}
/**
* 商品退款原因
*/
public function refund_reason()
{
$goods_order_refund_reason = GroupDataService::getData('goods_order_refund_reason') ?: [];
return JsonService::successful($goods_order_refund_reason);
}
/**
* 会员页数据
*/
public function merberDatas()
{
$interests = GroupDataService::getData('membership_interests', 3) ?: [];
$description = GroupDataService::getData('member_description') ?: [];
$data['interests'] = $interests;
$data['description'] = $description;
return JsonService::successful($data);
}
/**
* 会员设置列表
*/
public function membershipLists()
{
$meList = MemberShip::membershipList($this->uid);
return JsonService::successful($meList);
}
/**
* 会员卡激活
*/
public function confirm_activation()
{
$request = Request::instance();
if (!$request->isPost()) return JsonService::fail('参数错误!');
$data = UtilService::postMore([
['member_code', ''],
['member_pwd', ''],
], $request);
$res = MemberCard::confirmActivation($data, $this->userInfo);
if ($res)
return JsonService::successful('激活成功');
else
return JsonService::fail(MemberCard::getErrorInfo('激活失败!'));
}
/**
* 用户领取免费会员
*/
public function memberPurchase($id = 0)
{
if (!$id) return JsonService::fail('参数错误!');
$order = StoreOrder::cacheMemberCreateOrder($this->uid, $id, 'weixin');
$orderId = $order['order_id'];
$info = compact('orderId');
if ($orderId) {
$orderInfo = StoreOrder::where('order_id', $orderId)->find();
if (!$orderInfo || !isset($orderInfo['paid'])) exception('支付订单不存在!');
if ($orderInfo['paid']) exception('支付已支付!');
if (bcsub((float)$orderInfo['pay_price'], 0, 2) <= 0) {
if (StoreOrder::jsPayMePrice($orderId, $this->uid))
return JsonService::status('success', '领取成功', $info);
else
return JsonService::status('pay_error', StoreOrder::getErrorInfo());
} else {
try {
$jsConfig = StoreOrder::jsPayMember($orderId);
} catch (\Exception $e) {
return JsonService::status('pay_error', $e->getMessage(), $info);
}
$info['jsConfig'] = $jsConfig;
return JsonService::status('wechat_pay', '领取成功', $info);
}
} else {
return JsonService::fail(StoreOrder::getErrorInfo('领取失败!'));
}
}
/**加入购物车
* @param string $productId
* @param int $cartNum
* @param string $uniqueId
*/
public function set_cart($productId = '', $cartNum = 1, $uniqueId = '')
{
if (!$productId || !is_numeric($productId)) return $this->failed('参数错误!');
$res = StoreCart::setCart($this->uid, $productId, $cartNum, $uniqueId, 'product');
if (!$res)
return $this->failed(StoreCart::getErrorInfo('加入购物车失败!'));
else {
HookService::afterListen('store_product_set_cart_after', $res, $this->userInfo, false, StoreProductBehavior::class);
return $this->successful('ok', ['cartId' => $res->id]);
}
}
/**加入购物车立即购买
* @param int $productId
* @param int $cartNum
* @param string $uniqueId
*/
public function now_buy($productId = 0, $cartNum = 1, $uniqueId = '')
{
if ($productId == '' || $productId < 0) return $this->failed('参数错误!');
$res = StoreCart::setCart($this->uid, $productId, $cartNum, $uniqueId, 'product', 1);
if (!$res)
return $this->failed(StoreCart::getErrorInfo('加入购物车失败!'));
else {
return $this->successful('ok', ['cartId' => $res->id]);
}
}
/**点赞
* @param string $productId
* @param string $category
*/
public function like_product($productId = '', $category = 'product')
{
if (!$productId || !is_numeric($productId)) return $this->failed('参数错误!');
$res = StoreProductRelation::productRelation($productId, $this->uid, 'like', $category);
if (!$res)
return $this->failed(StoreProductRelation::getErrorInfo('点赞失败!'));
else
return $this->successful();
}
/**取消点赞
* @param string $productId
* @param string $category
*/
public function unlike_product($productId = '', $category = 'product')
{
if (!$productId || !is_numeric($productId)) return $this->failed('参数错误!');
$res = StoreProductRelation::unProductRelation($productId, $this->uid, 'like', $category);
if (!$res)
return $this->failed(StoreProductRelation::getErrorInfo('取消点赞失败!'));
else
return $this->successful();
}
/**商品收藏
* @param $productId
* @param string $category
*/
public function collect_product($productId, $category = 'product')
{
if (!$productId || !is_numeric($productId)) return $this->failed('参数错误!');
$res = StoreProductRelation::productRelation($productId, $this->uid, 'collect', $category);
if (!$res)
return $this->failed(StoreProductRelation::getErrorInfo('收藏失败!'));
else
return $this->successful();
}
/**商品取消收藏
* @param $productId
* @param string $category
*/
public function uncollect_product($productId, $category = 'product')
{
if (!$productId || !is_numeric($productId)) return $this->failed('参数错误!');
$res = StoreProductRelation::unProductRelation($productId, $this->uid, 'collect', $category);
if (!$res)
return $this->failed(StoreProductRelation::getErrorInfo('取消收藏失败!'));
else
return $this->successful();
}
public function get_cart_num()
{
return JsonService::successful('ok', StoreCart::getUserCartNum($this->uid, 'product'));
}
public function get_cart_list()
{
return JsonService::successful('ok', StoreCart::getUserProductCartList($this->uid));
}
public function change_cart_num($cartId = '', $cartNum = '')
{
if (!$cartId || !$cartNum || !is_numeric($cartId) || !is_numeric($cartNum)) return JsonService::fail('参数错误!');
StoreCart::changeUserCartNum($cartId, $cartNum, $this->uid);
return JsonService::successful();
}
public function remove_cart($ids = '')
{
if (!$ids) return JsonService::fail('参数错误!');
StoreCart::removeUserCart($this->uid, $ids);
return JsonService::successful();
}
public function get_user_collect_product($first = 0, $limit = 8)
{
$list = StoreProductRelation::where('A.uid', $this->uid)
->field('B.id pid,B.store_name,B.price,B.ot_price,B.sales,B.image,B.is_del,B.is_show')->alias('A')
->where('A.type', 'collect')->where('A.category', 'product')
->order('A.add_time DESC')->join('__STORE_PRODUCT__ B', 'A.product_id = B.id')
->limit($first, $limit)->select()->toArray();
foreach ($list as $k => $product) {
if ($product['pid']) {
$list[$k]['is_fail'] = $product['is_del'] && $product['is_show'];
} else {
unset($list[$k]);
}
}
return JsonService::successful($list);
}
public function remove_user_collect_product($productId = '')
{
if (!$productId || !is_numeric($productId)) return JsonService::fail('参数错误!');
StoreProductRelation::unProductRelation($productId, $this->uid, 'collect', 'product');
return JsonService::successful();
}
/**设置默认地址
* @param string $addressId
*/
public function set_user_default_address($addressId = '')
{
if (!$addressId || !is_numeric($addressId)) return JsonService::fail('参数错误!');
if (!UserAddress::be(['is_del' => 0, 'id' => $addressId, 'uid' => $this->uid]))
return JsonService::fail('地址不存在!');
$res = UserAddress::setDefaultAddress($addressId, $this->uid);
if (!$res)
return JsonService::fail('地址不存在!');
else
return JsonService::successful();
}
/**
* 添加和修改地址
*/
public function edit_user_address()
{
$request = Request::instance();
if (!$request->isPost()) return JsonService::fail('参数错误!');
$addressInfo = UtilService::postMore([
['address', []],
['is_default', false],
['real_name', ''],
['post_code', ''],
['phone', ''],
['detail', ''],
['id', 0]
], $request);
$addressInfo['province'] = $addressInfo['address']['province'];
$addressInfo['city'] = $addressInfo['address']['city'];
$addressInfo['district'] = $addressInfo['address']['district'];
$addressInfo['is_default'] = $addressInfo['is_default'] == true ? 1 : 0;
$addressInfo['uid'] = $this->uid;
unset($addressInfo['address']);
if ($addressInfo['id'] && UserAddress::be(['id' => $addressInfo['id'], 'uid' => $this->uid, 'is_del' => 0])) {
$id = $addressInfo['id'];
unset($addressInfo['id']);
if (UserAddress::edit($addressInfo, $id, 'id')) {
if ($addressInfo['is_default'])
UserAddress::setDefaultAddress($id, $this->uid);
return JsonService::successful();
} else
return JsonService::fail('编辑收货地址失败!');
} else {
if ($address = UserAddress::set($addressInfo)) {
if ($addressInfo['is_default'])
UserAddress::setDefaultAddress($address->id, $this->uid);
return JsonService::successful();
} else
return JsonService::fail('添加收货地址失败!');
}
}
/**
* 获取用户所有地址
*/
public function user_address_list()
{
$list = UserAddress::getUserValidAddressList($this->uid, 'id,real_name,phone,province,city,district,detail,is_default');
if ($list)
return JsonService::successful('ok', $list);
else
return JsonService::successful('empty', []);
}
/**
* 获取默认地址
*/
public function user_default_address()
{
$defaultAddress = UserAddress::getUserDefaultAddress($this->uid, 'id,real_name,phone,province,city,district,detail,is_default');
if ($defaultAddress)
return JsonService::successful('ok', $defaultAddress);
else
return JsonService::successful('empty', []);
}
/**删除地址
* @param string $addressId
*/
public function remove_user_address($addressId = '')
{
if (!$addressId || !is_numeric($addressId)) return JsonService::fail('参数错误!');
if (!UserAddress::be(['is_del' => 0, 'id' => $addressId, 'uid' => $this->uid]))
return JsonService::fail('地址不存在!');
if (UserAddress::edit(['is_del' => '1'], $addressId, 'id'))
return JsonService::successful();
else
return JsonService::fail('删除地址失败!');
}
/**获取用户的商品订单列表
* @param string $type
* @param int $first
* @param int $limit
*/
public function get_user_order_list($first = 0, $limit = 8, $type = '')
{
$list = StoreOrder::getUserOrderList($this->uid, $type, $first, $limit);
return JsonService::successful($list);
}
/**
* 用户订单数据
*/
public function userOrderDate()
{
$data = StoreOrder::getOrderStatusNum($this->uid);
return JsonService::successful($data);
}
/**删除订单
* @param string $uni
*/
public function user_remove_order($uni = '')
{
if (!$uni) return JsonService::fail('参数错误!');
$res = StoreOrder::removeOrder($uni, $this->uid);
if ($res)
return JsonService::successful();
else
return JsonService::fail(StoreOrder::getErrorInfo());
}
/**提交商品退款
* @param string $uni
* @param string $text
*/
public function apply_order_refund($uni = '')
{
if (!$uni) return JsonService::fail('参数错误!');
$request = Request::instance();
if (!$request->isPost()) return JsonService::fail('参数错误!');
$data = UtilService::postMore([
['pics', []],
['refund_reason', ''],
['remarks', ''],
], $request);
$res = StoreOrder::orderApplyRefund($uni, $this->uid, $data);
if ($res)
return JsonService::successful();
else
return JsonService::fail(StoreOrder::getErrorInfo());
}
/**用户确认收货
* @param string $uni
*/
public function user_take_order($uni = '')
{
if (!$uni) return JsonService::fail('参数错误!');
$res = StoreOrder::takeOrder($uni, $this->uid);
if ($res)
return JsonService::successful();
else
return JsonService::fail(StoreOrder::getErrorInfo());
}
/**虚拟币充值
* @param int $price
* @param int $payType
*/
public function user_wechat_recharge($price = 0, $payType = 0, $from = 'weixin', $returnUrl)
{
if (!$price || $price <= 0 || !is_numeric($price)) return JsonService::fail('参数错误');
if (!isset($this->uid) || !$this->uid) return JsonService::fail('用户不存在');
try {
//充值记录
$rechargeOrder = UserRecharge::addRecharge($this->uid, $price, $payType);
if (!$rechargeOrder) return JsonService::fail('充值订单生成失败!');
$orderId = $rechargeOrder['order_id'];
$goldName = SystemConfigService::get("gold_name");
switch ($payType) {
case 'toutiao':
try {
$jsConfig = UserRecharge::TouTiaoRechargePay($orderId);
} catch (\Exception $e) {
return JsonService::status('pay_error', $e->getMessage(), $rechargeOrder);
}
$info['jsConfig'] = $jsConfig;
return JsonService::status('TOUTIAO_PAY', '订单创建成功', $info);
break;
case 'kuaishou':
try {
$jsConfig = UserRecharge::KuaiShouMiniPay($orderId);
} catch (\Exception $e) {
return JsonService::status('pay_error', $e->getMessage(), $rechargeOrder);
}
$info['jsConfig'] = $jsConfig;
return JsonService::status('KUAISHOU_PAY', '订单创建成功', $info);
break;
case 'weixin':
try {
switch ($from) {
case 'weixinh5':
$jsConfig = UserRecharge::h5RechargePay($orderId);
break;
case 'weixin':
$jsConfig = UserRecharge::jsRechargePay($orderId);
break;
case 'mpweixing':
$jsConfig = UserRecharge::WeixinMiniRechargePay($orderId);
break;
default:
break;
}
} catch (\Exception $e) {
return JsonService::status('pay_error', $e->getMessage(), $rechargeOrder);
}
$rechargeOrder['jsConfig'] = $jsConfig;
switch ($from) {
case 'weixinh5':
return JsonService::status('wechat_h5_pay', '订单创建成功', $rechargeOrder);
break;
case 'mpweixing':
return JsonService::status('WECHAT_ROUTINE_PAY', '订单创建成功', $rechargeOrder);
break;
default:
return JsonService::status('wechat_pay', '订单创建成功', $rechargeOrder);
break;
}
break;
case 'yue':
if (UserRecharge::yuePay($orderId, $this->userInfo))
return JsonService::status('success', '余额支付成功', $rechargeOrder);
else
return JsonService::status('pay_error', UserRecharge::getErrorInfo());
break;
case 'zhifubao':
$rechargeOrder['orderName'] = $goldName . "充值";
$rechargeOrder['orderId'] = $orderId;
$rechargeOrder['pay_price'] = $price;
$rechargeOrder['returnUrl'] = $returnUrl;
return JsonService::status('zhifubao_pay', '订单创建成功', base64_encode(json_encode($rechargeOrder)));
break;
}
} catch (\Exception $e) {
return JsonService::fail($e->getMessage());
}
}
/**余额明细
* @param int $index
* @param int $first
* @param int $limit
*/
public function user_balance_list($index = 0, $first = 0, $limit = 8)
{
$model = UserBill::where('uid', $this->uid)->where('category', 'now_money')
->where('type', 'not in', 'gain,deduction,extract,extract_fail,brokerage,brokerage_return,sign,pay_vip,extract_success')
->field('title,mark,pm,number,add_time')
->where('status', 1)->where('number', '>', 0);
switch ($index) {
case 1:
$model = $model->where('pm', 0);
break;
case 2:
$model = $model->where('pm', 1);
break;
}
$list = $model->order('add_time DESC')->page((int)$first, (int)$limit)->select();
$list = count($list) > 0 ? $list->toArray() : [];
foreach ($list as &$v) {
$v['add_time'] = date('Y/m/d H:i', $v['add_time']);
}
return JsonService::successful($list);
}
/**金币明细
* @param int $index
* @param int $first
* @param int $limit
*/
public function user_gold_num_list($index = 0, $first = 0, $limit = 8)
{
$model = UserBill::where('uid', $this->uid)->where('category', 'gold_num')
->field('title,mark,pm,number,add_time')
->where('status', 1)->where('number', '>', 0);
switch ($index) {
case 1:
$model = $model->where('pm', 0);
break;
case 2:
$model = $model->where('pm', 1);
break;
}
$list = $model->order('add_time DESC')->page((int)$first, (int)$limit)->select();
$list = count($list) > 0 ? $list->toArray() : [];
foreach ($list as &$v) {
$v['add_time'] = date('Y/m/d H:i', $v['add_time']);
}
return JsonService::successful($list);
}
/**用户商品评价
* @param string $unique
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\ModelNotFoundException
* @throws \think\exception\DbException
*/
public function user_comment_product($unique = '')
{
if (!$unique) return JsonService::fail('参数错误!');
$cartInfo = StoreOrderCartInfo::where('unique', $unique)->find();
$uid = $this->uid;
if (!$cartInfo || $uid != $cartInfo['cart_info']['uid']) return JsonService::fail('评价产品不存在!');
if (StoreProductReply::be(['oid' => $cartInfo['oid'], 'unique' => $unique]))
return JsonService::fail('该产品已评价!');
$group = UtilService::postMore([
['comment', ''], ['pics', []], ['product_score', 5], ['service_score', 5], ['delivery_score', 5]
]);
$group['comment'] = htmlspecialchars(trim($group['comment']));
if (sensitive_words_filter($group['comment'])) return JsonService::fail('请注意您的用词,谢谢!!');
if ($group['product_score'] < 1) return JsonService::fail('请为产品评分');
else if ($group['service_score'] < 1) return JsonService::fail('请为服务评分');
else if ($group['delivery_score'] < 1) return JsonService::fail('请为物流评分');
$group = array_merge($group, [
'uid' => $uid,
'oid' => $cartInfo['oid'],
'unique' => $unique,
'product_id' => $cartInfo['product_id'],
'reply_type' => 'product'
]);
StoreProductReply::beginTrans();
$res = StoreProductReply::reply($group, 'product');
if (!$res) {
StoreProductReply::rollbackTrans();
return JsonService::fail('评价失败!');
}
try {
HookService::listen('store_product_order_reply', $group, $cartInfo, false, StoreProductBehavior::class);
} catch (\Exception $e) {
StoreProductReply::rollbackTrans();
return JsonService::fail($e->getMessage());
}
StoreProductReply::commitTrans();
return JsonService::successful('评价成功!');
}
/**获取商品评价列表
* @param string $productId
* @param int $first
* @param int $limit
* @param string $filter
*/
public function product_reply_list($productId = '', $page = 0, $limit = 8, $score = 4, $filter = 'all')
{
if (!$productId || !is_numeric($productId)) return JsonService::fail('参数错误!');
$list = StoreProductReply::getProductReplyList($productId, $page, $limit, $score, $filter);
return JsonService::successful($list);
}
/**
* 评价数据
*/
public function product_reply_data($productId = '')
{
if (!$productId || !is_numeric($productId)) return JsonService::fail('参数错误!');
$data = StoreProductReply::getProductReplyData($productId);
return JsonService::successful($data);
}
public function get_spread_list($first = 0, $limit = 20)
{
$list = User::where('spread_uid', $this->uid)->field('uid,nickname,avatar,add_time')->limit($first, $limit)->order('add_time DESC')->select()->toArray();
foreach ($list as $k => $user) {
$list[$k]['add_time'] = date('Y/m/d', $user['add_time']);
}
return JsonService::successful($list);
}
public function refresh_msn(Request $request)
{
$params = $request->post();
$remind_where = "mer_id = " . $params["mer_id"] . " AND uid = " . $params["uid"] . " AND to_uid = " . $params["to_uid"] . " AND type = 0 AND remind = 0";
$remind_list = StoreServiceLog::where($remind_where)->order("add_time asc")->select();
foreach ($remind_list as $key => $value) {
if (time() - $value["add_time"] > 3) {
StoreServiceLog::edit(array("remind" => 1), $value["id"]);
if ($params["to_uid"]) {
$userInfo = WechatUser::where('uid', $params["to_uid"])->field(['openid', 'subscribe'])->find();
if ($userInfo && $userInfo['openid'] && $userInfo['subscribe']) {
$head = '客服提醒';
$description = '您有新的消息,请注意查收!';
$url = SystemConfigService::get('site_url') . '/wap/service/service_ing/to_uid/' . $this->uid . '/mer_id/0';
$message = WechatService::newsMessage($head, $description, $url, $this->userInfo['avatar']);
try {
WechatService::staffService()->message($message)->to($userInfo['openid'])->send();
} catch (\Exception $e) {
\think\Log::error($userInfo['nickname'] . '发送失败' . $e->getMessage());
}
}
}
}
}
$where = "mer_id = " . $params["mer_id"] . " AND uid = " . $params["to_uid"] . " AND to_uid = " . $params["uid"] . " AND type = 0";
$list = StoreServiceLog::where($where)->order("add_time asc")->select();
$list = count($list) > 0 ? $list->toArray() : [];
$ids = [];
foreach ($list as $key => $value) {
//设置发送人与接收人区别
if ($value["uid"] == $params["uid"])
$list[$key]['my'] = "my";
else
$list[$key]['my'] = "to";
array_push($ids, $value["id"]);
}
//设置这些消息为已读
StoreServiceLog::where(array("id" => array("in", $ids)))->update(array("type" => 1, "remind" => 1));
return JsonService::successful($list);
}
public function add_msn(Request $request)
{
$params = $request->post();
if ($params["type"] == "html")
$data["msn"] = htmlspecialchars_decode($params["msn"]);
else
$data["msn"] = $params["msn"];
$data["uid"] = $params["uid"];
$data["to_uid"] = $params["to_uid"];
$data["mer_id"] = $params["mer_id"] > 0 ? $params["mer_id"] : 0;
$data["add_time"] = time();
StoreServiceLog::set($data);
return JsonService::successful();
}
public function get_msn(Request $request)
{
$params = $request->post();
$size = 10;
$page = $params["page"] >= 0 ? $params["page"] : 1;
$where = "(mer_id = " . $params["mer_id"] . " AND uid = " . $params["uid"] . " AND to_uid = " . $params["to_uid"] . ") OR (mer_id = " . $params["mer_id"] . " AND uid = " . $params["to_uid"] . " AND to_uid = " . $params["uid"] . ")";
$list = StoreServiceLog::where($where)->limit(($page - 1) * $size, $size)->order("add_time desc")->select()->toArray();
foreach ($list as $key => $value) {
//设置发送人与接收人区别
if ($value["uid"] == $params["uid"])
$list[$key]['my'] = "my";
else
$list[$key]['my'] = "to";
//设置这些消息为已读
if ($value["uid"] == $params["to_uid"] && $value["to_uid"] == $params["uid"]) StoreServiceLog::edit(array("type" => 1, "remind" => 1), $value["id"]);
}
$list = array_reverse($list);
return JsonService::successful($list);
}
public function refresh_msn_new(Request $request)
{
$params = $request->post();
$now_user = $this->userInfo;
if ($params["last_time"] > 0)
$where = "(uid = " . $now_user["uid"] . " OR to_uid = " . $now_user["uid"] . ") AND add_time>" . $params["last_time"];
else
$where = "uid = " . $now_user["uid"] . " OR to_uid = " . $now_user["uid"];
$msn_list = StoreServiceLog::where($where)->order("add_time desc")->select()->toArray();
$info_array = $list = [];
foreach ($msn_list as $key => $value) {
$to_uid = $value["uid"] == $now_user["uid"] ? $value["to_uid"] : $value["uid"];
if (!in_array(["to_uid" => $to_uid, "mer_id" => $value["mer_id"]], $info_array)) {
$info_array[count($info_array)] = ["to_uid" => $to_uid, "mer_id" => $value["mer_id"]];
$to_user = StoreService::field("uid,nickname,avatar")->where(array("uid" => $to_uid))->find();
if (!$to_user) $to_user = User::field("uid,nickname,avatar")->where(array("uid" => $to_uid))->find();
$to_user["mer_id"] = $value["mer_id"];
$to_user["mer_name"] = '';
$value["to_info"] = $to_user;
$value["count"] = StoreServiceLog::where(array("mer_id" => $value["mer_id"], "uid" => $to_uid, "to_uid" => $now_user["uid"], "type" => 0))->count();
$list[count($list)] = $value;
}
}
return JsonService::successful($list);
}
public function get_user_brokerage_list($uid, $first = 0, $limit = 8)
{
if (!$uid) return JsonService::fail('用户不存在');
$list = UserBill::field('A.mark,A.add_time,A.number,A.pm')->alias('A')->limit($first, $limit)
->where('A.category', 'now_money')->where('A.type', 'brokerage')
->where('A.uid', $this->uid)
->join('__STORE_ORDER__ B', 'A.link_id = B.id AND B.uid = ' . $uid)->select()->toArray();
return JsonService::successful($list);
}
public function user_extract()
{
if (UserExtract::userExtract($this->userInfo, UtilService::postMore([
['type', '', '', 'extract_type'], 'real_name', 'alipay_code', 'bank_code', 'bank_address', ['price', '', '', 'extract_price']
])))
return JsonService::successful('申请提现成功!');
else
return JsonService::fail(UserExtract::getErrorInfo());
}
public function clear_cache($uni = '')
{
if ($uni) CacheService::clear();
}
/**
* 获取今天正在拼团的人的头像和名称
* @return \think\response\Json
*/
public function get_pink_second_one()
{
$addTime = mt_rand(time() - 30000, time());
$storePink = StorePink::where('p.add_time', 'GT', $addTime)->alias('p')->where('p.status', 1)->join('User u', 'u.uid=p.uid')->field('u.nickname,u.avatar as src')->find();
return JsonService::successful($storePink);
}
// 新用户更新头像
public function updateUserInfo(Request $request)
{
$params = $request->post();
try {
User::where('uid', $params['uid'])->update(
[
'nickname' => $params['username'],
'avatar' => $params['currentAvatar']
]
);
$user = User::where('uid', $params['uid'])->find();
return JsonService::successful($user);
} catch (\Exception $e) {
StoreProductReply::rollbackTrans();
return JsonService::fail($e->getMessage());
}
}
}