admin/addon/hongbao/model/Hongbao.php

788 lines
32 KiB
PHP
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
// +---------------------------------------------------------------------+
// | NiuCloud | [ WE CAN DO IT JUST NiuCloud ]  |
// +---------------------------------------------------------------------+
// | Copy right 2019-2029 www.niucloud.com  |
// +---------------------------------------------------------------------+
// | Author | NiuCloud <niucloud@outlook.com>  |
// +---------------------------------------------------------------------+
// | Repository | https://github.com/niucloud/framework.git  |
// +---------------------------------------------------------------------+
namespace addon\hongbao\model;
use app\model\BaseModel;
use app\model\member\MemberAccount as MemberAccountModel;
use app\model\system\Config as ConfigModel;
use app\model\system\Cron;
use app\model\system\User;
use extend\Poster as PosterExtend;
use think\facade\Db;
/**
* 裂变红包活动表
* Class hongbao
* @package addon\hongbao\model
*/
class Hongbao extends BaseModel
{
private $status = [
0 => '未开始',
1 => '进行中',
2 => '已结束',
-1 => '已关闭'
];
/**
* 获取预售活动状态
* @return array
*/
public function getHongbaoStatus()
{
return $this->success($this->status);
}
/**
* 获取分页列表
* @param array $condition
* @param number $page
* @param string $page_size
* @param string $order
* @param string $field
*/
public function getHongbaoPageList($condition = [], $page = 1, $page_size = PAGE_LIST_ROWS, $order = 'create_time desc', $field = '*')
{
$list = model('promotion_hongbao')->pageList($condition, $field, $order, $page, $page_size);
return $this->success($list);
}
/**
* 获取优惠券活动信息
* @param array $condition
* @param string $field
* @param string $alias
* @param unknown $join
* @param unknown $data
* @return array
*/
public function getHongbaoInfo($condition = [], $field = true, $alias = 'a', $join = null, $data = null)
{
$res = model('promotion_hongbao')->getInfo($condition, $field, $alias, $join, $data);
return $this->success($res);
}
/**
* 新增瓜分红包活动
* @param $data
* @return array
*/
public function addHongbao($data)
{
if ($data['start_time'] > time()) {
$data['status'] = 0;
$data['status_name'] = $this->status[0];
} else {
$data['status'] = 1;
$data['status_name'] = $this->status[1];
}
model('promotion_hongbao')->startTrans();
try {
$res = model("promotion_hongbao")->add($data);
$cron = new Cron();
//增加定时更改活动状态自动事件
if (!empty($data['start_time'])) {
$cron->addCron(1, 0, "裂变红包变更活动状态", "CronChangeHongbaoStatus", $data['start_time'], $res);
}
if (!empty($data['end_time'])) {
$cron->addCron(1, 0, "裂变红包变更活动状态", "CronChangeHongbaoStatus", $data['end_time'], $res);
}
model('promotion_hongbao')->commit();
return $this->success($res);
} catch (\Exception $e) {
model('promotion_hongbao')->rollback();
return $this->error($e->getMessage());
}
}
public function editHongbao($data)
{
$data['update_time'] = time();
if ($data['start_time'] > time()) {
$data['status'] = 0;
$data['status_name'] = $this->status[0];
} else {
$data['status'] = 1;
$data['status_name'] = $this->status[1];
}
$hongbao_id = $data['hongbao_id'];
unset($data['hongbao_id']);
#(修改发放量与库存)
$old_info = model("promotion_hongbao")->getInfo([['hongbao_id', '=', $hongbao_id]], 'inventory,count');
$data['count'] = $old_info['count'] + $data['inventory'] - $old_info['inventory'];
$res = model("promotion_hongbao")->update($data, [['hongbao_id', '=', $hongbao_id]]);
$cron = new Cron();
$cron->deleteCron([['event', '=', 'CronChangeHongbaoStatus'], ['relate_id', '=', $hongbao_id]]);
if ($data['status'] == 0) {
$cron->addCron(1, 0, "裂变红包变更活动状态", "CronChangeHongbaoStatus", $data['start_time'], $hongbao_id);
$cron->addCron(1, 0, "裂变红包变更活动状态", "CronChangeHongbaoStatus", $data['end_time'], $hongbao_id);
} else if ($data['status'] == 1) {
$cron->addCron(1, 0, "裂变红包变更活动状态", "CronChangeHongbaoStatus", $data['end_time'], $hongbao_id);
}
return $this->success($res);
}
/**
* 更改活动状态
* @param $hongbao_id
* @return array
*/
public function changeHongbaoStatus($hongbao_id)
{
$info = model('promotion_hongbao')->getInfo([['hongbao_id', '=', $hongbao_id]]);
if (empty($info)) $this->success();
if ($info['end_time'] <= time()) {
$status = 2;
$status_name = $this->status[2];
model('promotion_hongbao_group')->update(['is_look' => 1],[['hongbao_id', '=', $hongbao_id],['status','=',2]]);
} else if ($info['start_time'] <= time() && $info['end_time'] > time()) {
$status = 1;
$status_name = $this->status[1];
} else {
$status = 0;
$status_name = $this->status[0];
}
$res = model('promotion_hongbao')->update(['status' => $status, 'status_name' => $status_name], [['hongbao_id', '=', $hongbao_id]]);
return $this->success($res);
}
/**
* 关闭活动
* @param $data
* @return array
*/
public function closeHongbao($data)
{
$hongbao_id = $data['hongbao_id'];
$site_id = $data['site_id'];
$condition = [
['hongbao_id', '=', $hongbao_id],
['site_id', '=', $site_id],
];
model('promotion_hongbao')->startTrans();
try {
$res = model('promotion_hongbao')->update(['status' => -1, 'status_name' => '已关闭'], $condition);
model('promotion_hongbao_group')->update(['status' => 2], [['hongbao_id', '=', $hongbao_id], ['status', '=', 0]]);
model('promotion_hongbao_group')->update(['is_look' => 1],[['hongbao_id', '=', $hongbao_id],['status','=',2]]);
$cron = new Cron();
$cron->deleteCron([['event', '=', 'CronChangeHongbaoStatus'], ['relate_id', '=', $hongbao_id]]);
model('promotion_hongbao')->commit();
return $this->success($res);
} catch (\Exception $e) {
model('promotion_hongbao')->rollback();
return $this->error($e->getMessage());
}
}
/**
* 删除活动
* @param $data
* @return array
*/
public function deleteHongbao($data)
{
$hongbao_id = $data['hongbao_id'];
$site_id = $data['site_id'];
model('promotion_hongbao')->startTrans();
try {
$condition = [
['hongbao_id', '=', $hongbao_id],
['site_id', '=', $site_id],
];
$res = model("promotion_hongbao")->delete($condition);
#删除活动所建分组
model('promotion_hongbao_group')->delete([['hongbao_id', '=', $hongbao_id]]);
$cron = new Cron();
$cron->deleteCron([['event', '=', 'CronChangeHongbaoStatus'], ['relate_id', '=', $hongbao_id]]);
model('promotion_hongbao')->commit();
return $this->success($res);
} catch (\Exception $e) {
model('promotion_hongbao')->rollback();
return $this->error($e->getMessage());
}
}
/**
* 发起瓜分
*/
public function launch($hongbao_id, $member_id, $site_id)
{
$hongbao_info = model('promotion_hongbao')->getInfo(
[
['hongbao_id', '=', $hongbao_id],
['site_id', '=', $site_id],
['status', '=', 1],
]
);
if (empty($hongbao_info)) return $this->error('', '未查到瓜分活动信息');
if ($hongbao_info['inventory'] <= 0) return $this->error('', '红包已被抢完了,下次再来吧!');
$launch_info = model('promotion_hongbao_group')->getInfo([['hongbao_id', '=', $hongbao_info['hongbao_id']], ['header_id', '=', $member_id]], 'group_id,status');
if (!empty($launch_info) && $launch_info['status'] == 0) return $this->error('', '正在瓜分中');
if (!empty($launch_info) && $launch_info['status'] == 1) return $this->error('', '已参与过此活动,无法重复发起瓜分');
$member_info = model('member')->getInfo([['site_id', '=', $site_id], ['member_id', '=', $member_id]], 'nickname,headimg');
if (empty($member_info)) return $this->error('', '未获取到会员信息');
model('promotion_hongbao_group')->startTrans();
$end_time = time() + ($hongbao_info['divide_time'] * 3600);
try {
$data = [
'hongbao_id' => $hongbao_info['hongbao_id'],
'start_time' => time(),
'header_id' => $member_id,
'status' => 0,
'num' => $hongbao_info['divide_num'],
'site_id' => $site_id,
'group_member_ids' => $member_id,
];
if ($hongbao_info['end_time'] < $end_time) {
$data['end_time'] = $hongbao_info['end_time'];
} else {
$data['end_time'] = $end_time;
}
$launch_id = model('promotion_hongbao_group')->add($data);
model('promotion_hongbao_group')->update(['is_look' => 1],[['hongbao_id', '=', $hongbao_info['hongbao_id']], ['header_id', '=', $member_id],['status','=',2]]);
model('promotion_hongbao')->setDec([['hongbao_id', '=', $hongbao_id], ['site_id', '=', $site_id]], 'inventory');
$cron = new Cron();
#是否模拟好友 1 是 2 否
if ($hongbao_info['is_simulation'] == 1) {
#加个 瓜分时间到期自动补齐
$cron->addCron(1, 0, '未成团自动模拟好友瓜分', 'HongbaoSimulation', $data['end_time'], $launch_id);
} else {
$cron->addCron(1, 0, '瓜分发起自动关闭', 'HongbaoLaunchClose', $data['end_time'], $launch_id);
}
model('promotion_hongbao_group')->commit();
return $this->success($launch_id);
} catch (\Exception $e) {
model('promotion_hongbao_group')->rollback();
return $this->error($e->getMessage());
}
}
/**
* 帮瓜分
* @param $launch_id
* @param $member_id
* @param $site_id
*/
public function divide($launch_id, $member_id, $site_id)
{
$hongbao_group = model('promotion_hongbao_group')->getInfo(
[
['group_id', '=', $launch_id],
['site_id', '=', $site_id],
]
);
if (empty($hongbao_group)) return $this->error('', '未查到瓜分红包参与活动组信息');
if ($hongbao_group['status'] == 1) return $this->error('', '已经被瓜分完了');
if ($hongbao_group['status'] == 2) return $this->error('', '瓜分过期请重新发起瓜分');
$member_info = model('member')->getInfo([['site_id', '=', $site_id], ['member_id', '=', $member_id]], 'nickname,headimg');
if (empty($member_info)) return $this->error('', '未获取到会员信息');
model('promotion_hongbao_group')->startTrans();
try {
$hongbao_info = model('promotion_hongbao')->getInfo(
[
['hongbao_id', '=', $hongbao_group['hongbao_id']],
['site_id', '=', $site_id],
['status', '=', 1],
]
);
if (empty($hongbao_info)) return $this->error('', '未查到瓜分活动信息');
#判断此用户是否是新人
$hongbao_member_group = model('promotion_hongbao_group')->getList([['hongbao_id', '=', $hongbao_info['hongbao_id']]], 'member_ids');
$is_new = 0;
if (!empty($hongbao_member_group)) {
foreach ($hongbao_member_group as $k => $v) {
if (in_array($member_id, explode(",", $v['member_ids']))) {
$is_new = $is_new + 1;
}
}
}
#活动限制仅新人可瓜
if ($hongbao_info['is_new'] == 1) {
if ($is_new > 0) return $this->error('', '您已参加过此活动了,此活动只可参与一次');
}
$member_arr = [];#帮瓜分用户
$group_member_arr = [];#瓜分组用户
if (!empty($hongbao_group['group_member_ids'])) {
$group_member_arr = explode(",", $hongbao_group['group_member_ids']);
}
if (!empty($hongbao_group['member_ids'])) {
$member_arr = explode(",", $hongbao_group['member_ids']);
}
if (in_array($member_id, $member_arr)) {
return $this->error('', '已经帮助瓜分过啦');
}
#插入瓜分的用户组
array_push($member_arr, $member_id);
array_push($group_member_arr, $member_id);
#达到人数(瓜分成功)
if (count($group_member_arr) == $hongbao_group['num']) {
model('promotion_hongbao')->setInc([['hongbao_id', '=', $hongbao_group['hongbao_id']], ['site_id', '=', $site_id]], 'success_count');
model('promotion_hongbao_group')->update(['status' => 1,'is_look' => 1, 'member_ids' => implode(',', $member_arr), 'group_member_ids' => implode(',', $group_member_arr)], [['group_id', '=', $launch_id], ['site_id', '=', $site_id]]);
$user_model = new User();
$user_admin_info = $user_model->getUserInfo([['app_module', '=', 'shop'], ['is_admin', '=', 1], ['site_id', '=', $site_id]])['data'];
$balance_data = [
'site_id' => $site_id,
'uid' => $user_admin_info['uid'],
'username' => $user_admin_info['username'],
'balance_set' => $hongbao_info['balance_set']
];
#固定的瓜分金额
if ($hongbao_info['divide_type'] == 0) {
$discount_coupon_money = round($hongbao_info['money'] / $hongbao_info['divide_num'], 2);
$balance_data['money'] = $discount_coupon_money;
foreach ($group_member_arr as $k => $v) {
$balance_data['member_id'] = $v;
#发放不可提现余额
$this->addBalance($balance_data, $launch_id);
}
} else {
#新人组
$couple_group = [];
#旧人组
$old_group = [];
#判断参与活动的用户是否是新人
if (!empty($hongbao_member_group)) {
foreach ($group_member_arr as $key => $value) {
$fresh_num = 0;
foreach ($hongbao_member_group as $k => $v) {
if (in_array($value, explode(",", $v['member_ids']))) {
$fresh_num = $fresh_num + 1;
}
}
if ($fresh_num == 0) array_push($couple_group, $value);
}
$old_group = array_diff($group_member_arr, $couple_group);
} else {
$couple_group = $group_member_arr;
}
#随机获取比例(整数)
$proportion = $this->rand_bouns($hongbao_info['divide_num'], $hongbao_info['money']);
#比例从大到小排序
arsort($proportion);
$proportion = array_values($proportion);
#有新人
if (!empty($couple_group)) {
#打乱新人组排序
shuffle($couple_group);
#新人组 重置下标
$couple_group = array_values($couple_group);
foreach ($couple_group as $k => $v) {
$balance_data['money'] = round($proportion[$k], 2);
$balance_data['member_id'] = $v;
$this->addBalance($balance_data, $launch_id);
unset($proportion[$k]);
}
if (!empty($old_group)) {
shuffle($old_group);
$old_group = array_values($old_group);
$proportion = array_values($proportion);
foreach ($old_group as $k => $v) {
$balance_data['money'] = round($proportion[$k], 2);
$balance_data['member_id'] = $v;
$this->addBalance($balance_data, $launch_id);
}
}
} else {
#打乱旧人组排序
shuffle($old_group);
$old_group = array_values($old_group);
foreach ($old_group as $k => $v) {
$balance_data['money'] = round($proportion[$k], 2);
$balance_data['member_id'] = $v;
$this->addBalance($balance_data, $launch_id);
}
}
#修改 人组顺序
$new_group_member_ids = array_merge($couple_group,$old_group);
model('promotion_hongbao_group')->update(['group_member_ids' => implode(',', $new_group_member_ids)], [['group_id', '=', $launch_id], ['site_id', '=', $site_id]]);
}
} else {
#增加参与人
model('promotion_hongbao_group')->update(['member_ids' => implode(',', $member_arr), 'group_member_ids' => implode(',', $group_member_arr)], [['group_id', '=', $launch_id], ['site_id', '=', $site_id]]);
}
model('promotion_hongbao_group')->commit();
return $this->success();
} catch (\Exception $e) {
model('promotion_hongbao_group')->rollback();
return $this->error($e->getMessage());
}
}
#发放红包(余额)
public function addBalance($data, $launch_id)
{
model('promotion_hongbao_group')->startTrans();
try {
$member_account_model = new MemberAccountModel();
$user_model = new User();
if($data['balance_set'] == 1){
#奖励不可提现余额
$member_account_model->addMemberAccount($data['site_id'], $data['member_id'], 'balance', $data['money'], 'hongbao', 0, '裂变红包发放,不可提现余额:' . $data['money'],$launch_id);
}else{
#奖励可提现余额
$member_account_model->addMemberAccount($data['site_id'], $data['member_id'], 'balance_money', $data['money'], 'hongbao', 0, '裂变红包发放,可提现余额:' . $data['money'],$launch_id);
}
$user_model->addUserLog($data['uid'], $data['username'], $data['site_id'], "裂变红包会员余额调整id:" . $data['member_id'] . "金额" . $data['money']);
$hongbao_group = model('promotion_hongbao_group')->getInfo(
[
['group_id', '=', $launch_id],
]
);
if (empty($hongbao_group)) return $this->error('', '未查到瓜分红包参与活动组信息');
$balance_data = [];
if (!empty($hongbao_group['balance_data'])) {
$balance_data = explode(",", $hongbao_group['balance_data']);
}
array_push($balance_data, $data['money']);
$res = model('promotion_hongbao_group')->update(['balance_data' => implode(',', $balance_data)], [['group_id', '=', $launch_id]]);
$cron = new Cron();
#删除瓜分组定时结束
$cron->deleteCron([['event', '=', 'HongbaoLaunchClose'], ['relate_id', '=', $launch_id]]);
model('promotion_hongbao_group')->commit();
return $res;
} catch (\Exception $e) {
model('promotion_hongbao_group')->rollback();
return $this->error($e->getMessage());
}
}
/**
* @param $person 人数
* @param $percent 金额
* @return array
*/
public static function rand_bouns($person, $percent)
{ //百分比
$now_person = $person;
$bouns = array();
for ($i = 0; $i <= $person - 1; $i++) {
$bouns[$i] = self::get_bouns($now_person, $percent);
$percent = $percent - $bouns[$i];
$now_person = $now_person - 1;
}
return $bouns;
}
public static function get_bouns($person, $percent)
{
if ($person == 1) return $percent;
$max = 30;
if ($percent < $max) $max = $percent;
$min = $percent - $max * ($person - 1) <= 0 ? 1 : $percent - $max * ($person - 1);
$max = $max - ($person) <= 0 ? 1 : $max - ($person);
return rand($min, $max);
}
/**
* 海报
*/
public function poster($arr, $app_type, $site_id, $member_id)
{
try {
$qrcode_info = $this->getQrcode($arr, $app_type, $site_id);
if ($qrcode_info['code'] < 0) return $qrcode_info;
$member_info = $this->getMemberInfo($member_id);
if (empty($member_info)) return $this->error('未获取到会员信息');
$poster = new PosterExtend(740, 1250);
$option = [
[
'action' => 'imageCopy', // 背景图
'data' => [
'upload/uniapp/hongbao/poster.png',
0,
0,
740,
1250,
'square',
0,
1
]
],
[
'action' => 'imageCopy', // 二维码
'data' => [
$qrcode_info['data']['path'],
505,
980,
205,
205,
'square',
0,
1
]
],
[
'action' => 'imageCircularCopy', // 写入用户头像
'data' => [
!empty($member_info['headimg']) ? $member_info['headimg'] : 'upload/uniapp/default_headimg.png',
82,
852,
112,
112
]
],
[
'action' => 'imageText', // 写入分享人昵称
'data' => [
$member_info['nickname'],
22,
[255, 129, 61],
40,
1030,
440,
1,
true,
1
]
]
];
$option_res = $poster->create($option);
if (is_array($option_res)) return $option_res;
$res = $option_res->jpeg('upload/poster/hongbao', 'hongbao_id_' . $arr['hid'] . 'group_id_' . $arr['gid'] . '_' . $app_type);
return $res;
} catch (\Exception $e) {
return $this->error($e->getMessage());
}
}
/**
* 获取用户信息
* @param unknown $member_id
*/
private function getMemberInfo($member_id)
{
$info = model('member')->getInfo(['member_id' => $member_id], 'nickname,headimg');
return $info;
}
/**
* 生成优惠券二维码
* @param $hongbao_id
* @param string $app_type all为全部
* @param string $type 类型 create创建 get获取
* @return mixed|array
*/
public function getQrcode($arr, $app_type, $site_id, $type = 'create')
{
$res = event('Qrcode', [
'site_id' => $site_id,
'app_type' => $app_type,
'type' => $type,
'data' => $arr,
'page' => '/otherpages/hongbao/index/index',
'qrcode_path' => 'upload/qrcode/hongbao',
'qrcode_name' => 'hongbao_id_' . $arr['hid'] . 'inviter_id_' . $arr['id'] . 'group_id_' . $arr['gid'] . '_' . $site_id,
], true);
return $res;
}
/**
* 到时模拟瓜分
*/
public function cronHongbaoSimulation($launch_id)
{
$launch_info = model('promotion_hongbao_group')->getInfo([['group_id', '=', $launch_id]]);
$hongbao_info = model('promotion_hongbao')->getInfo([['hongbao_id', '=', $launch_info['hongbao_id']]]);
model('promotion_hongbao')->setInc([['hongbao_id', '=', $launch_info['hongbao_id']]], 'success_count');
model('promotion_hongbao_group')->update(['status' => 1], [['group_id', '=', $launch_id]]);
$group_member_arr = [];#瓜分组用户
if (!empty($launch_info['group_member_ids'])) {
$group_member_arr = explode(",", $launch_info['group_member_ids']);
}
$user_model = new User();
$user_admin_info = $user_model->getUserInfo([['app_module', '=', 'shop'], ['is_admin', '=', 1], ['site_id', '=', $launch_info['site_id']]])['data'];
$balance_data = [
'site_id' => $launch_info['site_id'],
'uid' => $user_admin_info['uid'],
'username' => $user_admin_info['username'],
'balance_set' => $hongbao_info['balance_set']
];
#固定的瓜分金额
if ($hongbao_info['divide_type'] == 0) {
$discount_coupon_money = round($hongbao_info['money'] / $hongbao_info['divide_num'], 2);
$balance_data['money'] = $discount_coupon_money;
foreach ($group_member_arr as $k => $v) {
$balance_data['member_id'] = $v;
$this->addBalance($balance_data, $launch_id);
}
} else {
#新人组
$couple_group = [];
#旧人组
$old_group = [];
#判断参与活动的用户是否是新人
if (!empty($hongbao_member_group)) {
foreach ($group_member_arr as $key => $value) {
$fresh_num = 0;
foreach ($hongbao_member_group as $k => $v) {
if (in_array($value, explode(",", $v['member_ids']))) {
$fresh_num = $fresh_num + 1;
}
}
if ($fresh_num == 0) array_push($couple_group, $value);
}
$old_group = array_diff($group_member_arr, $couple_group);
} else {
$couple_group = $group_member_arr;
}
#随机获取比例(整数)
$proportion = $this->rand_bouns($hongbao_info['divide_num'], $hongbao_info['money']);
#比例从大到小排序
arsort($proportion);
$proportion = array_values($proportion);
#有新人
if (!empty($couple_group)) {
#打乱新人组排序
shuffle($couple_group);
#新人组 重置下标
$couple_group = array_values($couple_group);
foreach ($couple_group as $k => $v) {
$balance_data['money'] = round($proportion[$k], 2);
$balance_data['member_id'] = $v;
$this->addBalance($balance_data, $launch_id);
unset($proportion[$k]);
}
if (!empty($old_group)) {
shuffle($old_group);
$old_group = array_values($old_group);
$proportion = array_values($proportion);
foreach ($old_group as $k => $v) {
$balance_data['money'] = round($proportion[$k], 2);
$balance_data['member_id'] = $v;
$this->addBalance($balance_data, $launch_id);
}
}
} else {
#打乱旧人组排序
shuffle($old_group);
$old_group = array_values($old_group);
foreach ($old_group as $k => $v) {
$balance_data['money'] = round($proportion[$k], 2);
$balance_data['member_id'] = $v;
$this->addBalance($balance_data, $launch_id);
}
}
#修改 人组顺序
$new_group_member_ids = array_merge($couple_group,$old_group);
model('promotion_hongbao_group')->update(['group_member_ids' => implode(',', $new_group_member_ids)], [['group_id', '=', $launch_id], ['site_id', '=', $launch_info['site_id']]]);
}
}
/**
* @param $hongbao_id
* @param $name
* @param $site_id
* @param string $type
* @return array
* shop端推广
*/
public function spread($hongbao_id, $name, $site_id, $type = "create")
{
$data = [
'site_id' => $site_id,
'app_type' => "all", // all为全部
'type' => $type, // 类型 create创建 get获取
'data' => [
"hongbao_id" => $hongbao_id
],
'page' => '/otherpages/hongbao/index/index',
'qrcode_path' => 'upload/qrcode/hongbao',
'qrcode_name' => 'hongbao_id_' . $hongbao_id,
];
event('Qrcode', $data, true);
$app_type_list = config('app_type');
$path = [];
foreach ($app_type_list as $k => $v) {
switch ($k) {
case 'h5':
$wap_domain = getH5Domain();
$path[$k]['status'] = 1;
$path[$k]['url'] = $wap_domain . $data['page'] . '?hongbao_id=' . $hongbao_id;
$path[$k]['img'] = "upload/qrcode/hongbao/hongbao_id_" . $hongbao_id . "_" . $k . ".png";
break;
case 'weapp' :
$config = new ConfigModel();
$res = $config->getConfig([['site_id', '=', $site_id], ['app_module', '=', 'shop'], ['config_key', '=', 'WEAPP_CONFIG']]);
if (!empty($res['data'])) {
if (empty($res['data']['value']['qrcode'])) {
$path[$k]['status'] = 2;
$path[$k]['message'] = '未配置微信小程序';
} else {
$path[$k]['status'] = 1;
$path[$k]['img'] = $res['data']['value']['qrcode'];
}
} else {
$path[$k]['status'] = 2;
$path[$k]['message'] = '未配置微信小程序';
}
break;
case 'wechat' :
$config = new ConfigModel();
$res = $config->getConfig([['site_id', '=', $site_id], ['app_module', '=', 'shop'], ['config_key', '=', 'WECHAT_CONFIG']]);
if (!empty($res['data'])) {
if (empty($res['data']['value']['qrcode'])) {
$path[$k]['status'] = 2;
$path[$k]['message'] = '未配置微信公众号';
} else {
$path[$k]['status'] = 1;
$path[$k]['img'] = $res['data']['value']['qrcode'];
}
} else {
$path[$k]['status'] = 2;
$path[$k]['message'] = '未配置微信公众号';
}
break;
}
}
$return = [
'path' => $path,
'name' => $name,
];
return $this->success($return);
}
}