<?php
namespace app\mobile\controller;

use think\facade\Db;

class OmsProfile extends OmsBase
{
    public function me()
    {
        return $this->guarded(function () {
            $this->requireMethod('GET');
            return json(['code' => 0, 'message' => '成功', 'data' => $this->profileData($this->current(true))]);
        });
    }
    public function clothesSize()
    {
        return $this->guarded(function () {
            $this->requireMethod('POST');
            $account=$this->current();$size=$this->request->post('size');
            if(!is_string($size) || !in_array($size,self::CLOTHES_SIZES,true))$this->fail('请选择有效工衣尺码');
            $eid=(string)$account['username'];
            if($eid==='' || mb_strlen($eid)>50)$this->fail('当前账号工号无效',403);
            $c=Db::connect()->getConfig();
            $key='clothes:'.substr(hash('sha256',$c['database'].'|'.$c['prefix'].'|'.$eid),0,48);
            $got=Db::query('SELECT GET_LOCK(?,5) acquired',[$key]);
            if((int)$got[0]['acquired']!==1)$this->fail('尺码正在保存，请稍后重试',409);
            try {
                // 工号只取登录身份，不接受客户端指定他人工号；兼容旧表无唯一索引。
                $where=['mid'=>20,'title'=>$eid];
                if(Db::name('member_base')->where($where)->find())Db::name('member_base')->where($where)->update(['content'=>$size]);
                else Db::name('member_base')->insert($where+['content'=>$size]);
            } finally {Db::query('SELECT RELEASE_LOCK(?)',[$key]);}
            return json(['code'=>0,'message'=>'工衣尺码已保存','data'=>['clothesSize'=>$size]]);
        });
    }
}
