123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204 |
- <?php
- namespace app\api\controller;
- use app\common\controller\Api;
- use think\Db;
- /**
- * 道具商城,联盟
- */
- class Lianmeng extends Api
- {
- protected $noNeedLogin = ['*'];
- protected $noNeedRight = ['*'];
- //道具列表
- public function decorate_list(){
- $type = input_post('type',1);
- // 获取基本信息
- $where = [];
- $where['type'] = $type;
- $where['status'] = 1;
- $list = Db::name('decorate_lianmeng')->where($where)->autopage()->order('sort desc')->select();
- $list = list_domain_image($list,['base_image']);
- $this->success("success",$list);
- }
- /**
- * 购买并加入我的背包
- */
- public function buy_one() {
- $number = input_post('number',1,'intval'); //数量
- if(!$number){
- $this->error();
- }
- $did = input_post('did',''); //装扮ID
- if (!$did) {
- $this->error();
- }
- // 判断用户金币余额是否充足
- $walletinfo = model('wallet')->getWallet($this->auth->id);
- // 获取购买装扮需要的价格
- $decorate = Db::name('decorate_lianmeng')->where(['id'=>$did])->find();
- if(!$decorate) {
- $this->error("道具信息获取失败!");
- }
- $total_price = bcmul($decorate['price'],$number,0);
- if($walletinfo['gold'] < $total_price) {
- $this->error("您的金币不足,请先充值!");
- }
- // 进行购买逻辑
- Db::startTrans();
- // 添加到背包
- for($i=1;$i<=$number;$i++){
- $data[] = [
- 'user_id' => $this->auth->id,
- 'decorate_id' => $decorate['id'],
- 'is_using' => 0,
- 'createtime' => time(),
- 'updatetime' => time(),
- ];
- }
- $log_id = Db::name('user_decorate_lianmeng')->insertAll($data);
- if(!$log_id){
- Db::rollback();
- $this->error('购买失败');
- }
- //扣钱
- $rs = model('wallet')->lockChangeAccountRemain($this->auth->id,'gold',-$total_price,33,'购买联盟道具','user_decorate_lianmeng',0);
- if($rs['status'] === false){
- Db::rollback();
- $this->error($rs['msg']);
- }
- Db::commit();
- $this->success("购买成功!");
- }
- //获取用户装扮
- public function my_decorate_list()
- {
- $uid = $this->auth->id;
- $type = input_post('type',1);
- $map = [
- 'a.user_id' => $uid,
- 'a.is_using' => 0,
- 'b.type' => $type,
- ];
- $list = Db::name('user_decorate_lianmeng')
- ->alias('a')
- ->field('a.id,a.decorate_id,b.name,b.type,b.base_image,count(a.decorate_id) as number')
- ->join('decorate_lianmeng b', 'a.decorate_id = b.id','LEFT')
- ->where($map)->group('a.decorate_id')->order('a.id desc')->autopage()->select();
- $list = list_domain_image($list,['base_image']);
- $this->success('success',$list);
- }
- //使用道具
- public function use_decorate()
- {
- $plat_name = input_post('plat_name',''); //平台用户名
- if (!$plat_name) {
- $this->error();
- }
- $id = input_post('id',0); //用户装扮ID
- if (!$id) {
- $this->error();
- }
- $map = [
- 'user_id' => $this->auth->id,
- 'id' => $id,
- ];
- $info = Db::name('user_decorate_lianmeng')->where($map)->find();
- if (empty($info)) {
- $this->error('道具不存在');
- }
- if ($info['is_using'] != 0) {
- $this->error('道具已使用');
- }
- Db::startTrans();
- //设置使用中状态
- $map = [
- 'id' => $id,
- ];
- $data = [];
- $data['is_using'] = 1;
- $data['plat_name'] = $plat_name;
- $data['updatetime'] = time();
- $reslut = Db::name('user_decorate_lianmeng')->where($map)->update($data);
- if (!$reslut) {
- Db::rollback();
- $this->error('使用失败');
- }
- //通知管理员
- $admin_uids = config('site.lianmeng_msg_uids');
- $admin_uids = explode(',',$admin_uids);
- if(is_array($admin_uids) && !empty($admin_uids)){
- foreach($admin_uids as $key => $admin_uid){
- $msg_id = \app\common\model\Message::addMessage($admin_uid,'联盟道具核销',$this->auth->username.'刚刚使用了联盟道具,请进入后台核销');
- }
- }
- // 提交事务
- Db::commit();
- $this->success('使用完成');
- }
- //用户道具使用记录
- public function my_decorate_uselog()
- {
- $uid = $this->auth->id;
- $map = [
- 'a.user_id' => $uid,
- 'a.is_using' => 1,
- ];
- $list = Db::name('user_decorate_lianmeng')
- ->alias('a')
- ->field('a.*,b.name,b.price,b.base_image,b.type')
- ->join('decorate_lianmeng b', 'a.decorate_id = b.id','LEFT')
- ->where($map)
- ->order('a.id desc')
- ->autopage()->select();
- $list = list_domain_image($list,['base_image']);
- $type_arr = [
- 1 => '吉傲T币',
- 2 => '吉傲会员',
- 3 => '联盟商家币',
- 4 => '联盟商家会员'
- ];
- if(!empty($list)){
- foreach($list as $key => &$val){
- $val['type_text'] = $type_arr[$val['type']];
- }
- }
- $this->success('success',$list);
- }
- }
|