Files
yycea/application/api/controller/wdsxh/Jielong.php
2026-03-17 09:56:06 +08:00

382 lines
16 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

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
// +----------------------------------------------------------------------
// | 麦沃德科技赋能开发者,助力商协会发展
// +----------------------------------------------------------------------
// | Copyright (c) 20172024 www.wdsxh.cn All rights reserved.
// +----------------------------------------------------------------------
// | 沃德商协会系统并不是自由软件,不加密,并不代表开源,未经许可不可自由转售和商用
// +----------------------------------------------------------------------
// | Author: MY WORLD Team <bd@maiwd.cn> www.maiwd.cn
// +----------------------------------------------------------------------
namespace app\api\controller\wdsxh;
use app\api\model\wdsxh\jielong\JielongFeedback;
use app\api\model\wdsxh\member\Level;
use app\api\model\wdsxh\member\Member;
use app\api\model\wdsxh\user\Wechat;
use app\api\model\wdsxh\UserWechat;
use app\common\controller\Api;
use think\Db;
use Exception;
use think\exception\PDOException;
use think\exception\ValidateException;
class Jielong extends Api
{
protected $noNeedLogin = ['index','jielong_config'];
protected $noNeedRight = ['*'];
protected $model = null;
protected $feedbackModel = null;
public function _initialize()
{
parent::_initialize();
$this->model = new \app\api\model\wdsxh\jielong\Jielong();
$this->feedbackModel = new JielongFeedback();
}
/**
* Desc 接龙列表
* Create on 2024/3/14 16:23
* Create by @小趴菜
*/
public function index(){
$param = $this->request->param();
$page = isset($param['page']) ? $param['page'] : '';
$limit = isset($param['limit']) ? $param['limit'] : 10;
$where = [];
$where['status'] = array('eq','normal');
$expired_jielong_show = (new \app\admin\model\wdsxh\Config())->value('expired_jielong_show');
$total = $this->model->where($where)->where(function ($query) use($expired_jielong_show){
if ($expired_jielong_show == 2) {
$query->where('expire_time','>=',time());
}
})->count();
$data = $this->model->where($where)
->where(function ($query) use($expired_jielong_show){
if ($expired_jielong_show == 2) {
$query->where('expire_time','>=',time());
}
})
->field('id,name,type,expire_time,page_view,member_id,jielong_auth')
->page($page,$limit)
->order('createtime desc,weigh desc')
->select();
foreach ($data as $row){
$row['expire_time'] = date('Y-m-d h:i',$row['expire_time']);
$row['part_total'] = $this->feedbackModel->where('jielong_id',$row['id'])->count();
if ($row['member_id'] == -1){
$row['mobile'] = (new \app\api\model\wdsxh\business\Association())->where('id',1)->value('phone');
}else{
$row['mobile'] = (new Member())->where('id',$row['member_id'])->value('mobile');
}
}
$this->success('',['total' => $total,'data' => $data]);
}
/**
* Desc 接龙详情
* Create on 2024/3/14 17:41
* Create by @小趴菜
*/
public function details(){
$param = $this->request->param();
$where = [];
$where['id'] = array('eq',$param['id']);
$list = $this->model
->where($where)
->field('id,name,type,content,expire_time,page_view,member_ids,createtime,member_id,jielong_auth')
->find();
if ($list){
if ($list['member_id'] == -1){
$association = (new \app\api\model\wdsxh\business\Association())
->where('id',1)->field('name,logo,phone')->find();
$list['member_name'] = $association['name'];
$list['avatar'] = $association['logo'];
$list['level_name'] = '';
$list['mobile'] = $association['phone'];
}else{
$member = (new Member())->alias('member')
->where('member.id',$list['member_id'])
->join('wdsxh_member_level level','level.id = member.member_level_id')
->field('member.name member_name,member.avatar,member.mobile,level.name level_name')
->find();
$list['member_name'] = $member['member_name'];
$list['avatar'] = $member['avatar'];
$list['level_name'] = $member['level_name'];
$list['mobile'] = $member['mobile'];
}
$list['expire_time'] = date('Y-m-d H:i',$list['expire_time']);
$list['createtime'] = date('Y-m-d H:i',$list['createtime']);
if ($list['type'] == 2){//限定接龙
//根据接龙表存的member_ids来查询会员信息
$member_ids = explode(",", $list['member_ids']);
$memberObj_data = [];
foreach ($member_ids as $datum){
$memberObj = (new Member())
->where('id',$datum)
->field('id,name member_name')->find();
$JielongFeedbackObj = (new JielongFeedback())->where('member_id',$datum)->where('jielong_id',$param['id'])->find();
if ($JielongFeedbackObj){
$memberObj['status'] = 1;
}else{
$memberObj['status'] = 2;
}
$memberObj_data[] = $memberObj;
}
$JielongFeedback_data = (new JielongFeedback())
->where('jielong_id',$param['id'])
->field('id,name member_name')
->select();
foreach ($JielongFeedback_data as $datum){
$datum['status'] = 1;
}
//合并数组
$result = array_merge($memberObj_data, $JielongFeedback_data);
// 创建一个关联数组,用于存储唯一的 member_name
$uniqueArray = [];
foreach ($result as $element) {
$memberName = $element["member_name"];
// 如果这个 member_name 还没有被加入到 $uniqueArray 中,就加入
if (!isset($uniqueArray[$memberName])) {
$uniqueArray[$memberName] = $element;
}
}
// 获取去重后的数组
$member_data = array_values($uniqueArray); // 重新索引数组
}else{
$member_data = (new JielongFeedback())
->where('jielong_id',$param['id'])
->field('id,name member_name')
->select();
foreach ($member_data as $datum){
$datum['status'] = 1;
}
}
$page_view = $list['page_view'] +=1;
(new \app\api\model\wdsxh\jielong\Jielong())->where('id',$param['id'])->update(['page_view' => $page_view]);
}
$data = [
'data' => $list,
'member_data' => $member_data,
];
$this->success('请求成功',$data);
}
/**
* Desc 活动接龙反馈
* Create on 2024/3/15 10:46
* Create by @小趴菜
*/
public function add(){
$param = $this->request->post();
$user_id = $this->auth->id;
$wechat_id = (new Wechat())->where('user_id',$user_id)->value('id');
$member_id = (new Member())->where('wechat_id',$wechat_id)->value('id');
//接龙类型 类型:1=自由接龙,2=限定接龙
$jielong_type = $this->model->where('id',$param['jielong_id'])->value('type');
if ($jielong_type == 2){
$member_ids = $this->model->where('id',$param['jielong_id'])->value('member_ids');
$member_ids_array = explode(',',$member_ids);
if (!in_array($param['member_id'],$member_ids_array)) {
$this->error('不是指定人员,无法接龙');
}
if ($param['member_id'] != $member_id){
$this->error('请选择自己的名字进行反馈!');
}
$jielong_feedback = (new JielongFeedback())
->where('member_id',$param['member_id'])
->where('jielong_id',$param['jielong_id'])
->where('wechat_id',$wechat_id)
->find();
if ($jielong_feedback){
$this->error('您已经反馈过啦!');
}
}else{
$jielong_feedback = (new JielongFeedback())
->where('jielong_id',$param['jielong_id'])
->where('wechat_id',$wechat_id)
->find();
if ($jielong_feedback){
$this->error('您已经反馈过啦!');
}
}
$param['wechat_id'] = $wechat_id;
$param['createtime'] = time();
$result = false;
Db::startTrans();
try {
$result = $this->feedbackModel->save($param);
Db::commit();
} catch (ValidateException|PDOException|Exception $e) {
Db::rollback();
$this->error($e->getMessage());
}
if(false === $result){
$this->error($this->model->getError());
}
$this->success('提交成功');
}
/**
* Desc 判断是否反馈
* Create on 2024/3/22 11:26
* Create by @小趴菜
*/
public function feedback_state()
{
$param = $this->request->param();
$user_id = $this->auth->id;
$wechat_id = (new Wechat())->where('user_id', $user_id)->value('id');
$where = [];
$where['id'] = array('eq', $param['id']);
$list = $this->model
->where($where)
->field('id,name,type,content,expire_time,page_view,member_ids,createtime,member_id')
->find();
if ($list) {
if ($list['type'] == 2) {//限定接龙
$member_data = (new Member())->where('wechat_id', $wechat_id)->field('id,name member_name')->find();
$JielongFeedbackObj = (new JielongFeedback())->where('member_id', $member_data['id'])->where('jielong_id', $param['id'])->find();
if ($JielongFeedbackObj) {
$member_data['status'] = 1;
} else {
$member_data['status'] = 2;
}
} else {
$member_data = (new Member())->where('wechat_id', $wechat_id)->field('id,name')->find();
if ($member_data){
$member_data['member_name'] = $member_data['name'];
}else{
$member_data = (new Wechat())->where('user_id', $user_id)->field('id,nickname member_name')->find();
$member_data['name'] = $member_data['member_name'];
}
$JielongFeedbackObj = (new JielongFeedback())->where('wechat_id', $wechat_id)->where('jielong_id', $param['id'])->find();
if ($JielongFeedbackObj) {
$member_data['status'] = 1;
} else {
$member_data['status'] = 2;
}
}
}
$this->success('请求成功', $member_data);
}
/**
* Desc 判断是否有资格参加
* Create on 2024/3/22 11:42
* Create by @小趴菜
*/
public function jielong_state()
{
$param = $this->request->param();
$user_id = $this->auth->id;
$wechat_id = (new Wechat())->where('user_id', $user_id)->value('id');
$where = [];
$where['id'] = array('eq', $param['id']);
$list = $this->model
->where($where)
->field('id,member_ids,type')
->find();
$current_date = date('Y-m-d',time());
$memberObj = (new \app\api\model\wdsxh\member\Member())->where('wechat_id',$wechat_id)
->where('expire_time','>=',$current_date)
->find();
if ($list['type'] == 2) {//限定接龙
if ($memberObj){
//根据接龙表存的member_ids来查询会员信息
$member_ids = explode(",", $list['member_ids']);
$member_data = (new Member())->where('wechat_id', $wechat_id)->value('id');
if (in_array($member_data, $member_ids)) {
$member_data = 1;
} else {
$member_data = 2;
}
}else{
$member_data = 2;
}
}else{
if ($memberObj){
$member_data = 1;
}else{
$member_data = 2;
}
}
$this->success('请求成功', ['state' => $member_data]);
}
/**
* Desc 反馈详情
* Create on 2024/4/11 15:44
* Create by @小趴菜
*/
public function feedback_details(){
$param = $this->request->param();
$user_id = $this->auth->id;
$wechat_id = (new UserWechat())->where('user_id',$user_id)->value('id');
$data = (new JielongFeedback())->where('jielong_id',$param['jielong_id'])
->where('wechat_id',$wechat_id)->field('id,name,member_id,images,content,status,createtime')->find();
if ($data){
$data['createtime'] = date('Y-m-d h:i',$data['createtime']);
if ($data['status'] == 1){
$data['status'] = '参加';
}elseif($data['status'] == 2){
$data['status'] = '不参加';
}elseif ($data['status'] == 3){
$data['status'] = '参加其他';
}
}
$member_data = (new Member())->where('id',$data['member_id'])->field('id,avatar,name,member_level_id')->find();
if ($member_data){
$member_data['member_level'] = (new Level())->where('id',$member_data['member_level_id'])->value('name');
} else {
$member_data = (new UserWechat())->where('id',$wechat_id)->field('id,avatar,nickname name')->find();
}
$data = [
'member_data' => $member_data,
'feedback_data' => $data,
];
$this->success('请求成功',$data);
}
/**
* Desc 接龙配置
* Create on 2025/8/8 10:04
* Create by wangyafang
*/
public function jielong_config()
{
if(!$this->request->isGet()) {
$this->error('请求类型错误');
}
$id = $this->request->get('id');
if (empty($id)) {
$this->error('参数错误');
}
$jielongObj = $this->model->get($id);
if (!$jielongObj) {
$this->error('接龙数据不存在');
}
$is_status = $jielongObj['jielong_auth'];
if ($is_status == 2){
if ($this->auth->isLogin()) {
$user_id = $this->auth->id;
$wechat_id = (new Wechat())->where('user_id',$user_id)->value('id');
$current_date = date('Y-m-d',time());
$member = (new Member())->where('wechat_id',$wechat_id)->where('expire_time','>=',$current_date)->find();
if ($member) {
$is_status = 1;
}
}
}
$this->success('请求成功',['show_status'=>$is_status]);
}
}