* Date: 2019-7-3 */ namespace app\user\controller; use think\Db; use think\Config; use think\Verify; use think\Page; use think\Request; /** * 积分兑换 */ class Memgift extends Base { public function _initialize() { parent::_initialize(); // 积分兑换是否已在用 $shopLogic = new \app\admin\logic\ShopLogic; $useFunc = $shopLogic->useFuncLogic(); if (!in_array('memgift', $useFunc)) { $this->error('内置功能已废弃!'); } //积分名称 $score = getUsersConfigData('score'); $this->score_name = $score['score_name']; $this->assign('score_name', $this->score_name); } // 积分商品列表 public function users_gift_list() { //全部积分商品 $condition = ['stock' => ['gt', 0], 'is_del' => 0, 'status' => 1]; $list = Db::name('memgift')->field('a.*') ->alias('a') ->where($condition) ->order('a.sort_order asc') ->select(); foreach ($list as $key => $val) { $list[$key]['litpic'] = get_default_pic($val['litpic']); } $this->assign('list', $list); $pagesize = config('paginate.list_rows'); //积分兑换记录列表 $where = ['a.users_id' => $this->users_id]; $count = Db::name('memgiftget')->alias('a')->where($where)->count(); $Page = new Page($count, $pagesize); $order_list = Db::name('memgiftget')->alias('a') ->field('a.*,b.litpic') ->join('memgift b', 'a.gift_id = b.gift_id', 'left') ->where($where) ->order('a.add_time desc,a.gid desc') ->limit($Page->firstRow . ',' . $Page->listRows) ->select(); foreach ($order_list as $key => $val) { $val['key'] = ($Page->nowPage - 1) * $pagesize + $key + 1; $val['litpic'] = get_default_pic($val['litpic']); $order_list[$key] = $val; } $show = $Page->show(); $this->assign('page', $show); $this->assign('order_list', $order_list); $this->assign('pager', $Page); return $this->fetch(); } //展示积分商品详情 public function users_gift_detail() { $post = input('param.'); if (empty($post)) { $this->error("没有数据"); } $field = Db::name('memgift')->where(['gift_id' => $post['gift_id']])->find(); if (empty($field)) { $this->error("没有数据"); } $field['litpic'] = get_default_pic($field['litpic']); $this->assign('field', $field); return $this->fetch(); } //兑换实物 public function users_gift_shiwu() { $post = input('param.'); if (IS_POST) { $gift_id = !empty($post['gift_id']) ? intval($post['gift_id']) : 0; $name = !empty($post['name']) ? $post['name'] : ''; $mobile = !empty($post['mobile']) ? $post['mobile'] : ''; $address = !empty($post['address']) ? $post['address'] : ''; $scores = $this->users['scores']; $time = getTime(); if (empty($gift_id)) { $this->error('请选择正确的商品!'); } $row = Db::name("memgift")->where(['gift_id' => $gift_id])->find(); if (empty($row)) { $this->error('商品不存在!'); } $giftname = $row['giftname']; $score = $row['score']; if (empty($row['status'])) { $this->error('该商品目前处于非兑换状态!'); } if ($row['stock'] < 1) { $this->error('该商品库存不足!'); } if ($score > $scores) { $this->error("您的{$this->score_name}还不够兑换该商品!"); } $insert_data = [ 'giftname' => $giftname, 'gift_id' => $gift_id, 'score' => $score, 'users_id' => $this->users_id, 'add_time' => $time, 'update_time' => $time, 'name' => $name, 'mobile' => $mobile, 'address' => $address, ]; $gid = Db::name('memgiftget')->insertGetId($insert_data); if ($gid) { //日志记录 $data = [ 'users_id' => $this->users_id, 'info' => "积分兑换,gid={$gid}", 'score' => '-' . $score, 'type' => 9, 'add_time' => getTime(), 'update_time' => getTime(), 'current_score' => $this->users['scores'], 'current_devote' => $this->users['devote'], ]; Db::name('users_score')->insert($data); $update_users = Db::name("users")->where(['users_id' => $this->users_id])->update(['scores' => Db::Raw("scores-" . $score), 'update_time' => getTime()]); if ($update_users) { $memgift_data = [ 'num' => Db::raw('num+1'), 'stock' => Db::raw('stock-1'), 'update_time' => getTime(), ]; Db::name("memgift")->where(['gift_id' => $gift_id])->update($memgift_data); $this->success("成功兑换商品,请等待发货!"); } } $this->error('兑换失败!'); } $this->assign('post', $post); $field = Db::name("memgiftget")->field("name,mobile,address")->where(['users_id' => $this->users_id, 'name' => ['neq', '']])->find(); $this->assign('field', $field); return $this->fetch(); } public function users_gift_vip() { if (IS_POST) { $post = input('param.'); $gift_id = !empty($post['gift_id']) ? intval($post['gift_id']) : 0; if (empty($gift_id)) { $this->error('请选择正确的商品!'); } $long = !empty($post['long']) ? intval($post['long']) : 0; $scores = $this->users['scores']; $row = Db::name('memgift')->where(['gift_id' => $gift_id])->find(); $type_id = $row['type_id']; if (empty($row)) { $this->error('商品不存在!'); } $giftname = $row['giftname']; $score = $row['score']; if (empty($row['status'])) { $this->error('该商品目前处于非兑换状态!'); } if ($row['stock'] < 1) { $this->error('该商品库存不足!'); } if ($score > $scores) { $this->error("您的{$this->score_name}还不够兑换该商品!"); } //才做到这里,下面的逻辑没捋完 2022.07.08 大黄 //兑换的vip套餐 $users_type_manage = Db::name('users_type_manage') ->where('type_id', $type_id) ->find(); if (empty($long) && $this->users['level_maturity_days'] > 0) { if ($users_type_manage['level_id'] != $this->users['level_id']) { $res = [ 'code' => 2, 'msg' => "您已经是{$this->users['level_name']}(有效期:{$this->users['level_maturity_days']}天)啦,还要继续兑换吗?继续兑换将会覆盖原会员!", ]; exit(json_encode($res)); } else { $res = [ 'code' => 2, 'msg' => "您已经是{$this->users['level_name']}(有效期:{$this->users['level_maturity_days']}天)啦,还要继续兑换吗?", ]; exit(json_encode($res)); } } //会员期限定义数组 $limit_arr = Config::get('global.admin_member_limit_arr'); // 会员升级级别 $limit_id = $users_type_manage['limit_id']; // 到期天数 $maturity_days = $limit_arr[$limit_id]['maturity_days']; // 更新会员属性表的数组 $result = [ 'level' => $users_type_manage['level_id'], 'update_time' => getTime() ]; //用户当前是某个级别会员 if ($this->users['level_maturity_days'] > 0) { //当前级别与兑换会员级别不同 直接覆盖天数 if ($users_type_manage['level_id'] != $this->users['level_id']) { $result['level_maturity_days'] = $maturity_days; $result['open_level_time'] = getTime(); } else { //当前级别与兑换会员级别相同 累加天数 $result['level_maturity_days'] = Db::raw('level_maturity_days+' . ($maturity_days)); } } else { //不是会员 $result['level_maturity_days'] = $maturity_days; $result['open_level_time'] = getTime(); } $insert_data = [ 'giftname' => $giftname, 'gift_id' => $gift_id, 'score' => $score, 'users_id' => $this->users_id, 'add_time' => getTime(), 'update_time' => getTime(), 'status' => 1 ]; $gid = Db::name('memgiftget')->insertGetId($insert_data); if ($gid) { //-库存 + 兑换次数 $memgift_update = [ 'num' => Db::Raw('num+1'), 'stock' => Db::Raw('stock-1'), 'update_time' => getTime() ]; Db::name('memgift')->where(['gift_id' => $gift_id])->update($memgift_update); //日志记录 $data = [ 'users_id' => $this->users_id, 'info' => "积分兑换,gid={$gift_id}", 'score' => '-' . $score, 'type' => 9, 'add_time' => getTime(), 'update_time' => getTime(), 'current_score' => $this->users['scores'], 'current_devote' => $this->users['devote'], ]; Db::name('users_score')->insert($data); $result['scores'] = Db::Raw("scores-" . $score); Db::name('users')->where('users_id', $this->users_id)->update($result); $this->success('兑换成功!'); } else { $this->error('兑换失败!'); } } } }