330 行
14 KiB
PHP
可执行文件
330 行
14 KiB
PHP
可执行文件
<?php
|
|
|
|
namespace SmallProgramApi\Controller;
|
|
|
|
//[1.8.77]
|
|
|
|
use Common\Business\Plug;
|
|
use Common\Model\RetailCouponLogsModel;
|
|
use Common\Model\RetailPlusSetModel;
|
|
use Common\Model\RetailSmallProgramUserModel;
|
|
use Common\Model\RetailVipIntegralModel;
|
|
use Common\Model\RetailVipMCouponModel;
|
|
use Common\Model\RetailVipModel;
|
|
use Common\Model\WxappinfoModel;
|
|
use Common\Model\RetailMessageModel;
|
|
use Common\Model\BillOrderViewModel;
|
|
|
|
use Common\Model\RetailStoreModel;
|
|
|
|
|
|
use mysql_xdevapi\Exception;
|
|
use PayCoupon\Model\PayCouponRecordModel;
|
|
use ShopCoupon\Model\ShopCouponRecordModel;
|
|
use Think\Hook;
|
|
|
|
class MyController extends BaseController
|
|
{
|
|
/**
|
|
* 用户信息plus会员
|
|
*/
|
|
public function myShow()
|
|
{
|
|
if (IS_POST) {
|
|
$uid = self::$uid;
|
|
$store_id = self::$store_id;
|
|
$merchant_id = self::$merchant_id;
|
|
$SPUModel = D('RetailSmallProgramUser');
|
|
$where[$SPUModel::ID] = $uid;
|
|
$my_info = $SPUModel->getFind($where);
|
|
if ($my_info) {
|
|
$CouponLogsModel = D('RetailCouponLogs');
|
|
$coupon = $CouponLogsModel->getCount(array($CouponLogsModel::UID => $uid, $CouponLogsModel::STATUS => 1, $CouponLogsModel::STORE_ID => $store_id));
|
|
$my_info['is_vip'] = 0;
|
|
if (!empty($my_info[$SPUModel::VID])) {
|
|
$VipModel = D('RetailVip');
|
|
$vip = $VipModel->getFind(array($VipModel::ID => $my_info[$SPUModel::VID]), array($VipModel::INTEGRAL, $VipModel::BALANCE, $VipModel::STATUS, $VipModel::OPEN_ID));
|
|
if (!empty($vip)) {
|
|
$my_info[$VipModel::INTEGRAL] = $vip[$VipModel::INTEGRAL] ? $vip[$VipModel::INTEGRAL] : 0.00;
|
|
$my_info[$VipModel::BALANCE] = $vip[$VipModel::BALANCE] ? $vip[$VipModel::BALANCE] : 0.00;
|
|
$my_info['is_vip'] = 1;
|
|
$my_info['openid'] = $vip[$VipModel::OPEN_ID];
|
|
}
|
|
}
|
|
$my_info['count'] = $coupon;
|
|
$res['status'] = 1;
|
|
$res['my_info'] = $my_info;
|
|
$redis_key = 'retail_*_*_*_' . $uid . '_*';
|
|
$res['wait_pay_num'] = $this->getWaitPayOrderNum($redis_key);
|
|
$PlusSetModel = D('RetailPlusSet');
|
|
$plus_set = $PlusSetModel->getFind(array($PlusSetModel::MERCHANT_ID => $merchant_id, $PlusSetModel::SWITCH_TYPE => 2));
|
|
$res['open_plus'] = $plus_set ? 1 : 0;
|
|
// $TurntableModel = D('Turntable');
|
|
// $this_time = time();
|
|
// $map = array(
|
|
// 'merchant_id' => $merchant_id,
|
|
// 'status' => 1,
|
|
// 'start_time' => array('elt', $this_time),
|
|
// 'end_time' => array('gt', $this_time),
|
|
// 'turntable_type' => 5,
|
|
// );
|
|
// $res['open_turntable_task'] = $TurntableModel->getCount($map);
|
|
} else {
|
|
$res['status'] = 0;
|
|
$res['msg'] = '未找到此用户';
|
|
}
|
|
} else {
|
|
$res['status'] = 0;
|
|
$res['msg'] = '网络错误';
|
|
}
|
|
$this->ajaxReturn($res);
|
|
}
|
|
|
|
/**
|
|
* 用户信息
|
|
*/
|
|
public function myShow_v1()
|
|
{
|
|
if (IS_POST) {
|
|
$uid = self::$uid;
|
|
$merchant_id = self::$merchant_id;
|
|
$SPUModel = new RetailSmallProgramUserModel();
|
|
$map = array(
|
|
'id' => $uid,
|
|
);
|
|
$user_info = $SPUModel->getFind($map);
|
|
if ($user_info && $user_info['login_state'] == 1) {
|
|
$time = time();
|
|
$CouponLogsModel = new RetailCouponLogsModel();
|
|
$map = array(
|
|
'l.uid' => $uid,
|
|
'l.status' => 1,
|
|
'c.end_time' => ['gt', $time], //结束时间大于当前时间
|
|
);
|
|
//普通优惠券
|
|
$coupon = $CouponLogsModel->getCouponCount($map);
|
|
$user_info['is_vip'] = 0;
|
|
if (!empty($user_info['vid'])) {
|
|
$VipModel = new RetailVipModel();
|
|
$map = array(
|
|
'id' => $user_info['vid']
|
|
);
|
|
$vip = $VipModel->getFind($map, ['integral', 'balance', 'status', 'openid', 'plus_type', 'grade_integral']);
|
|
if (!empty($vip)) {
|
|
$user_info['integral'] = $vip['integral'] ? $vip['integral'] : 0.00;
|
|
$user_info['balance'] = $vip['balance'] ? $vip['balance'] : 0.00;
|
|
$user_info['is_vip'] = 1;
|
|
$user_info['openid'] = $vip['openid'];
|
|
$user_info['plus_type'] = $vip['plus_type'];
|
|
}
|
|
//会员优惠券数量
|
|
$VipMCouponModel = new RetailVipMCouponModel();
|
|
$vip_coupon = $VipMCouponModel->getGrantRecordCount([
|
|
'r.vid' => $user_info['vid'],
|
|
'r.isuse' => 1,
|
|
[
|
|
[
|
|
'c.coupontype' => 1,
|
|
'c.endtime' => ['gt', $time]
|
|
],
|
|
[
|
|
'c.coupontype' => 2,
|
|
'r.addtime + (c.daynum*86400)' => ['gt', $time]
|
|
],
|
|
[
|
|
'c.coupontype' => 3,
|
|
'r.addtime+86400' => ['lt', $time],
|
|
'r.addtime+86400+(c.daynum*86400)' => ['gt', $time]
|
|
|
|
],
|
|
'_logic' => 'OR'
|
|
]
|
|
]);
|
|
$coupon += $vip_coupon;
|
|
}
|
|
$Plug = new Plug();
|
|
$plugResult = $Plug->PlugPermissions([
|
|
'merchant_id' => $merchant_id,
|
|
'identification_arr' => [
|
|
'wxpaycoupon',
|
|
'shopcoupon'
|
|
]
|
|
]);
|
|
if (!empty($plugResult['data']['plug']['wxpaycoupon'])) {
|
|
//代金券可使用
|
|
try {
|
|
$PayCouponRecordModel = new PayCouponRecordModel();
|
|
$pay_coupon_count = $PayCouponRecordModel->recordCount([
|
|
'r.merchant_id' => $merchant_id,
|
|
'r.uid' => $uid,
|
|
'r.use_status' => 1,
|
|
'p.available_end_time' => ['gt', time()]
|
|
]);
|
|
$coupon += $pay_coupon_count ? $pay_coupon_count : 0;
|
|
} catch (\Exception $e) {
|
|
}
|
|
}
|
|
if (!empty($plugResult['data']['plug']['shopcoupon'])) {
|
|
//商家券可使用
|
|
try {
|
|
$ShopCouponRecordModel = new ShopCouponRecordModel();
|
|
$shop_coupon_count = $ShopCouponRecordModel->recordCount([
|
|
'r.merchant_id' => $merchant_id,
|
|
'r.xcx_id' => $uid,
|
|
'r.used_type' => 1,
|
|
'c.available_end_time' => ['gt', time()]
|
|
]);
|
|
$coupon += $shop_coupon_count ? $shop_coupon_count : 0;
|
|
} catch (\Exception $e) {
|
|
}
|
|
}
|
|
$user_info['count'] = round($coupon);
|
|
$redis_key = 'retail_*_*_*_' . $uid . '_*';
|
|
$PlusSetModel = new RetailPlusSetModel();
|
|
$map = array(
|
|
$PlusSetModel::MERCHANT_ID => $merchant_id,
|
|
$PlusSetModel::SWITCH_TYPE => 2
|
|
);
|
|
$plus_set = $PlusSetModel->getFind($map);
|
|
|
|
$VipGradeModel = new RetailVipIntegralModel(); //会员等级模型
|
|
$grade = $VipGradeModel->getVipGradeInfo($merchant_id, $vip['grade_integral']);
|
|
if (empty($grade['grade_name'])) {
|
|
$grade['grade_name'] = '常规会员';
|
|
}
|
|
$user_info['grade_name'] = $grade['grade_name'];
|
|
|
|
// 分销员身份判断
|
|
Hook::listen('user_distributor', $distributor);
|
|
$user_info['distributor'] = $distributor;
|
|
|
|
// 获取未读消息数量
|
|
$MessageModel = new RetailMessageModel();
|
|
$user_info['unread_message'] = $MessageModel->getCount(['uid' => $uid, 'state' => 0]);
|
|
|
|
$WxAppInfoModel = new WxappinfoModel();
|
|
$online_status = $WxAppInfoModel->getFindField(array('merchant_id' => $merchant_id), 'online_status');
|
|
|
|
// 获取各个订单状态
|
|
$BillOrderViewModel = new BillOrderViewModel();
|
|
|
|
$order_status['wait_pay_num'] = $this->getWaitPayOrderNum_v1($redis_key); // 待付款
|
|
$order_status['wait_delivery'] = $BillOrderViewModel->getCount(['status' => 1, 'order_type' => 1, 'uid' => $uid, 'refund_status' => 0]); // 待发货/自取
|
|
$order_status['wait_take'] = $BillOrderViewModel->getCount(['status' => 2, 'order_type' => 1, 'uid' => $uid, 'refund_status' => 0, 'pickup_type' => ['in', '2,3']]); // 待收货
|
|
$order_status['wait_evaluation'] = $BillOrderViewModel->getCount(['status' => 3, 'order_type' => 1, 'uid' => $uid, 'refund_status' => 0, 'eval_status' => 0]); // 待评价
|
|
$sales_map = [
|
|
'uid' => $uid,
|
|
'refund_status' => ['in', '1,3,4,5'],
|
|
'order_type' => ['in', '2,3']
|
|
];
|
|
$order_status['after_sales'] = $BillOrderViewModel->getCount($sales_map); // 售后
|
|
|
|
$open_distribution = array('merchant_id' => $merchant_id);
|
|
\Think\Hook::listen('open_distribution', $open_distribution); //检查商家是否开启分销
|
|
|
|
if ($user_info && $user_info['store_id']) {
|
|
$storeModel = new RetailStoreModel();
|
|
$whereName = [
|
|
'id' => $user_info['store_id']
|
|
];
|
|
$whereField = 'storetag';
|
|
$user_info['store_name'] = $storeModel->getFindField($whereName, $whereField);
|
|
} else {
|
|
$user_info['store_name'] = '';
|
|
}
|
|
|
|
$res = array(
|
|
'status' => 1,
|
|
'msg' => '数据获取成功',
|
|
'my_info' => $user_info,
|
|
'wait_pay_num' => $this->getWaitPayOrderNum_v1($redis_key),
|
|
'open_plus' => $plus_set ? 1 : 0,
|
|
'online_status' => $online_status,
|
|
'order_status' => $order_status,
|
|
'open_distribution' => $open_distribution['is_open'] == 1 ? 1 : 0,
|
|
);
|
|
} else {
|
|
$res['status'] = 0;
|
|
$res['msg'] = '用户未登录';
|
|
}
|
|
} else {
|
|
$res['status'] = 0;
|
|
$res['msg'] = '网络错误';
|
|
}
|
|
$this->ajaxReturn($res);
|
|
}
|
|
|
|
/*
|
|
*获取商户是否开启礼品卡
|
|
*/
|
|
public function merchantGift()
|
|
{
|
|
$uid = self::$uid;
|
|
$merchant_id = self::$merchant_id;
|
|
if (empty($uid) || empty($merchant_id)) {
|
|
$result['status'] = 0;
|
|
$result['msg'] = '缺少参数';
|
|
$this->ajaxReturn($result);
|
|
}
|
|
$GiftCardModel = D('RetailGiftCard');
|
|
$Gift = $GiftCardModel->getFind(array($GiftCardModel::MERCHANT_ID => $merchant_id));
|
|
if (!empty($Gift)) {
|
|
$result['status'] = 1;
|
|
$result['msg'] = '查询成功';
|
|
} else {
|
|
$result['status'] = 0;
|
|
$result['msg'] = '商家未开启礼品卡';
|
|
}
|
|
$this->ajaxReturn($result);
|
|
}
|
|
|
|
/**
|
|
* 获取是否获取到服务商或者公众号的openid
|
|
*/
|
|
public function getServiceOpenid()
|
|
{
|
|
$xcxUserModel = new RetailSmallProgramUserModel();
|
|
$xcxInfo = $xcxUserModel->getFind([
|
|
'id' => self::$uid
|
|
], "service_openid,ordinary_openid");
|
|
if (empty($xcxInfo['ordinary_openid'])) {
|
|
$ordinary_status = 1; //普通模式
|
|
}
|
|
if (empty($xcxInfo['service_openid'])) {
|
|
$service_status = 2; //服务商模式
|
|
}
|
|
$this->ajaxReturn([
|
|
'status' => 1,
|
|
'message' => '查询成功',
|
|
'data' => [
|
|
'ordinary_status' => $ordinary_status ? $ordinary_status : '',
|
|
'service_status' => $service_status ? $service_status : '',
|
|
]
|
|
]);
|
|
}
|
|
|
|
public function setName()
|
|
{
|
|
$merchant_id = I('post.merchant_id'); //商户id
|
|
$nickname = I('post.nickname'); //用户昵称
|
|
$openid = I('post.openid'); //用户openid
|
|
if (empty($merchant_id) || empty($nickname) || empty($openid)) {
|
|
$result['status'] = 0;
|
|
$result['msg'] = '缺少参数';
|
|
$this->ajaxReturn($result);
|
|
}
|
|
$SmallProgramUserModel = D('RetailSmallProgramUser');
|
|
$map = array(
|
|
$SmallProgramUserModel::OPENID => $openid,
|
|
$SmallProgramUserModel::MERCHANT_ID => $merchant_id
|
|
);
|
|
$SmallProgramUserModel->updateOrder($map, array(
|
|
$SmallProgramUserModel::NICKNAME => $nickname,
|
|
$SmallProgramUserModel::LINK_NAME => $nickname,
|
|
));
|
|
$result['status'] = 1;
|
|
$result['msg'] = '更新成功';
|
|
$this->ajaxReturn($result);
|
|
}
|
|
}
|