| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 | <?phpnamespace app\admin\controller\sms;use app\model\Member;use app\model\MemberQuota;use support\Redis;use support\Request;use Hhink\WebmanSms\Sms;class SmsController{    const KEY_PREFIX = 'SMS:CODE:';    /**     * @Desc 核销验证码     * @Author Gorden     * @Date 2024/6/4 8:46     *     * @param Request $request     * @return \support\Response     */    public function sendSmsCodeByQuota(Request $request)    {        $quotaIds = $request->post('quota_id', []);        if (!$quotaIds) {            return json_fail("参数异常");        }        $quotas = MemberQuota::whereIn('member_quota_id', $quotaIds)->get()->toArray();        $memberIds = array_column($quotas, 'join_quota_member_id');        if (count(array_unique($memberIds)) > 1) {            return json_fail("不可同时核销多个会员的权益");        }        $status = array_column($quotas, 'member_quota_status');        if (in_array('USED', $status) || in_array('CANCEL',$status)) {            return json_fail('存在已核销 / 无效的权益,请重新选择');        }        try {            $member = Member::find(current($memberIds));            $mobile = $member->member_mobile;            $code = random_string(6, 'number');            $key = self::KEY_PREFIX . 'QUOTA:' . $mobile;            Redis::set($key, $code);            Redis::expire($key, 600);            Sms::app()->send($mobile, [                'template' => 'SMS_240865706',                'data' => [                    'code' => $code                ],            ]);        } catch (\Exception $e) {            return json_fail("短信发送失败,请稍后重试");        }        return json_success('success');    }}
 |